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 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
- content = loader.load(url)
13
+ result = loader.load(url)
14
14
 
15
- if not content:
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 content
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
- content = await loader.async_load(url)
30
+ result = await loader.async_load(url)
31
31
 
32
- if not content:
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 content
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()
@@ -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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kabigon
3
- Version: 0.8.4
3
+ Version: 0.8.6
4
4
  Author-email: narumi <toucans-cutouts0f@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.10
@@ -1,20 +1,21 @@
1
- kabigon/__init__.py,sha256=MUfTFUe5ezA249L2yuU5_2FiewLu86H3VsIpJSne2vQ,560
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=Kb6_-SNeh08QELMF-r3mWxasDTxJBuJJQamFPLcwQ1I,1463
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=MZ-r0Ej2wWAOJkDLwYRvO77wcDvh38KXz2wgDsCTgm0,1358
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.4.dist-info/METADATA,sha256=16GUH6FI640_O4oGDv1v5ve4lkAfFgMe5L3UD_wtK7U,1264
17
- kabigon-0.8.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
18
- kabigon-0.8.4.dist-info/entry_points.txt,sha256=O3FYAO9w-NQvlGMJrBvtrnGHSK2QkUnQBTa30YXRbVE,45
19
- kabigon-0.8.4.dist-info/licenses/LICENSE,sha256=H2T3_RTgmcngMeC7p_SXT3GwBLkd2DaNgAZuxulcfiA,1066
20
- kabigon-0.8.4.dist-info/RECORD,,
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,,