kabigon 0.8.4__py3-none-any.whl → 0.8.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kabigon/__init__.py +1 -0
- kabigon/compose.py +6 -6
- kabigon/playwright.py +16 -3
- kabigon/youtube_ytdlp.py +18 -0
- {kabigon-0.8.4.dist-info → kabigon-0.8.6.dist-info}/METADATA +1 -1
- {kabigon-0.8.4.dist-info → kabigon-0.8.6.dist-info}/RECORD +9 -8
- {kabigon-0.8.4.dist-info → kabigon-0.8.6.dist-info}/WHEEL +0 -0
- {kabigon-0.8.4.dist-info → kabigon-0.8.6.dist-info}/entry_points.txt +0 -0
- {kabigon-0.8.4.dist-info → kabigon-0.8.6.dist-info}/licenses/LICENSE +0 -0
kabigon/__init__.py
CHANGED
@@ -14,6 +14,7 @@ from .ptt import PttLoader
|
|
14
14
|
from .reel import ReelLoader
|
15
15
|
from .twitter import TwitterLoader
|
16
16
|
from .youtube import YoutubeLoader
|
17
|
+
from .youtube_ytdlp import YoutubeYtdlpLoader
|
17
18
|
from .ytdlp import YtdlpLoader
|
18
19
|
|
19
20
|
LOGURU_LEVEL: Final[str] = os.getenv("LOGURU_LEVEL", "INFO")
|
kabigon/compose.py
CHANGED
@@ -10,14 +10,14 @@ class Compose(Loader):
|
|
10
10
|
def load(self, url: str) -> str:
|
11
11
|
for loader in self.loaders:
|
12
12
|
try:
|
13
|
-
|
13
|
+
result = loader.load(url)
|
14
14
|
|
15
|
-
if not
|
15
|
+
if not result:
|
16
16
|
logger.info("[{}] Failed to load URL: {}, got empty result", loader.__class__.__name__, url)
|
17
17
|
continue
|
18
18
|
|
19
19
|
logger.info("[{}] Successfully loaded URL: {}", loader.__class__.__name__, url)
|
20
|
-
return
|
20
|
+
return result
|
21
21
|
|
22
22
|
except Exception as e:
|
23
23
|
logger.info("[{}] Failed to load URL: {}, got error: {}", loader.__class__.__name__, url, e)
|
@@ -27,14 +27,14 @@ class Compose(Loader):
|
|
27
27
|
async def async_load(self, url: str) -> str:
|
28
28
|
for loader in self.loaders:
|
29
29
|
try:
|
30
|
-
|
30
|
+
result = await loader.async_load(url)
|
31
31
|
|
32
|
-
if not
|
32
|
+
if not result:
|
33
33
|
logger.info("[{}] Failed to load URL: {}, got empty result", loader.__class__.__name__, url)
|
34
34
|
continue
|
35
35
|
|
36
36
|
logger.info("[{}] Successfully loaded URL: {}", loader.__class__.__name__, url)
|
37
|
-
return
|
37
|
+
return result
|
38
38
|
|
39
39
|
except Exception as e:
|
40
40
|
logger.info("[{}] Failed to load URL: {}, got error: {}", loader.__class__.__name__, url, e)
|
kabigon/playwright.py
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
from typing import Literal
|
2
2
|
|
3
|
-
from playwright.async_api import async_playwright
|
4
|
-
from playwright.sync_api import sync_playwright
|
5
|
-
|
6
3
|
from .loader import Loader
|
7
4
|
from .utils import html_to_markdown
|
8
5
|
|
@@ -19,6 +16,14 @@ class PlaywrightLoader(Loader):
|
|
19
16
|
self.browser_headless = browser_headless
|
20
17
|
|
21
18
|
def load(self, url: str) -> str:
|
19
|
+
try:
|
20
|
+
from playwright.sync_api import sync_playwright
|
21
|
+
except ImportError as e:
|
22
|
+
raise ImportError(
|
23
|
+
"Playwright is not installed."
|
24
|
+
"Please install it with `pip install playwright` and run `playwright install`."
|
25
|
+
) from e
|
26
|
+
|
22
27
|
with sync_playwright() as p:
|
23
28
|
browser = p.chromium.launch(headless=self.browser_headless)
|
24
29
|
page = browser.new_page()
|
@@ -31,6 +36,14 @@ class PlaywrightLoader(Loader):
|
|
31
36
|
return html_to_markdown(content)
|
32
37
|
|
33
38
|
async def async_load(self, url: str) -> str:
|
39
|
+
try:
|
40
|
+
from playwright.async_api import async_playwright
|
41
|
+
except ImportError as e:
|
42
|
+
raise ImportError(
|
43
|
+
"Playwright is not installed."
|
44
|
+
"Please install it with `pip install playwright` and run `playwright install`."
|
45
|
+
) from e
|
46
|
+
|
34
47
|
async with async_playwright() as p:
|
35
48
|
browser = await p.chromium.launch(headless=self.browser_headless)
|
36
49
|
page = await browser.new_page()
|
kabigon/youtube_ytdlp.py
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
from urllib.parse import urlparse
|
2
|
+
|
3
|
+
from .loader import Loader
|
4
|
+
from .ytdlp import YtdlpLoader
|
5
|
+
|
6
|
+
|
7
|
+
def check_youtube_url(url: str) -> None:
|
8
|
+
if urlparse(url).netloc not in ["youtube.com", "youtu.be"]:
|
9
|
+
raise ValueError(f"URL must be from youtube.com or youtu.be, got {url}")
|
10
|
+
|
11
|
+
|
12
|
+
class YoutubeYtdlpLoader(Loader):
|
13
|
+
def __init__(self) -> None:
|
14
|
+
self.ytdlp_loader = YtdlpLoader()
|
15
|
+
|
16
|
+
def load(self, url: str) -> str:
|
17
|
+
check_youtube_url(url)
|
18
|
+
return self.ytdlp_loader.load(url)
|
@@ -1,20 +1,21 @@
|
|
1
|
-
kabigon/__init__.py,sha256=
|
1
|
+
kabigon/__init__.py,sha256=SUgCaELSHz-omY22-3aJnqyz2usODR2G8pN-lRi-6zs,606
|
2
2
|
kabigon/cli.py,sha256=PJ0wnwp_AgHA54YxGr1jNJ_q3ls7fEymgTJaJxCVU7M,650
|
3
|
-
kabigon/compose.py,sha256=
|
3
|
+
kabigon/compose.py,sha256=rSiP0ed0vb9dJ08erZGyiunOcd0ALHAfBRGlxYg1Tvs,1457
|
4
4
|
kabigon/firecrawl.py,sha256=-5AI9tla_684dtpubY_BRudqLgw28158WdwA1RjJvAA,778
|
5
5
|
kabigon/httpx.py,sha256=Zup9DURyWLqoWzaxBbCYAaV-5LSlHUuAcNyyUsZTVag,696
|
6
6
|
kabigon/loader.py,sha256=KhOJvlzLDM0o05o4VqMRgiyRVjofkzuGEcihQagj-8M,452
|
7
7
|
kabigon/pdf.py,sha256=PNOx-Dz_VpN-EVnVar_wJJZdxWrDZrAFE-gSuUR9q7o,1870
|
8
|
-
kabigon/playwright.py,sha256=
|
8
|
+
kabigon/playwright.py,sha256=RpP8qxSZe0p4j8hdRWbK7jJO9DNhIlYn77mXBDMAC3c,1865
|
9
9
|
kabigon/ptt.py,sha256=Gyp2nJrjptkjbwZJ9VEQHX0DEgKBe5QRQOmGVHUUgNA,896
|
10
10
|
kabigon/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
11
11
|
kabigon/reel.py,sha256=qOwWCvcp7xNKg0JDunq_Bsl8yqqMzrnAOI9k5mSqrOU,874
|
12
12
|
kabigon/twitter.py,sha256=aRqAiFxIwln6lteWdoF6SmvbzO62yBTQRzcB7UcVJwk,1046
|
13
13
|
kabigon/utils.py,sha256=eNTLtHLSB2erDac2HH3jWemgfr8Ou_ozwVb8h9BD-4g,922
|
14
14
|
kabigon/youtube.py,sha256=F9GpLa0iUy03wYU94RrrnrXa6ExqbG6CZpqx5bPENWE,1106
|
15
|
+
kabigon/youtube_ytdlp.py,sha256=-kElnrP4cLhZz2kNtgp2-ijA8I-IpnRctZ1JNCDN7pw,503
|
15
16
|
kabigon/ytdlp.py,sha256=OGVrKRGXY_eHePgDmN52Kkui12NN44LsIPonD_61QBM,1501
|
16
|
-
kabigon-0.8.
|
17
|
-
kabigon-0.8.
|
18
|
-
kabigon-0.8.
|
19
|
-
kabigon-0.8.
|
20
|
-
kabigon-0.8.
|
17
|
+
kabigon-0.8.6.dist-info/METADATA,sha256=pNniopUiEQG6hp3ateTmckZqjZ2pW4EGqI45tRAUX68,1264
|
18
|
+
kabigon-0.8.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
19
|
+
kabigon-0.8.6.dist-info/entry_points.txt,sha256=O3FYAO9w-NQvlGMJrBvtrnGHSK2QkUnQBTa30YXRbVE,45
|
20
|
+
kabigon-0.8.6.dist-info/licenses/LICENSE,sha256=H2T3_RTgmcngMeC7p_SXT3GwBLkd2DaNgAZuxulcfiA,1066
|
21
|
+
kabigon-0.8.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|