warp-beacon 2.3.49__tar.gz → 2.3.51__tar.gz
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.
- {warp_beacon-2.3.49/warp_beacon.egg-info → warp_beacon-2.3.51}/PKG-INFO +1 -1
- warp_beacon-2.3.51/warp_beacon/__version__.py +2 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/instagram/instagram.py +1 -1
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/youtube/abstract.py +3 -2
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/youtube/shorts.py +20 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51/warp_beacon.egg-info}/PKG-INFO +1 -1
- warp_beacon-2.3.49/warp_beacon/__version__.py +0 -2
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/LICENSE +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/MANIFEST.in +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/README.md +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/assets/placeholder.gif +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/etc/.gitignore +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/etc/accounts.json +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/etc/proxies.json +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/etc/warp_beacon.conf +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/etc/warp_beacon.service +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/pyproject.toml +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/setup.cfg +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/setup.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/__init__.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/compress/__init__.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/compress/video.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/jobs/__init__.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/jobs/abstract.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/jobs/download_job.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/jobs/types.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/jobs/upload_job.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/mediainfo/__init__.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/mediainfo/abstract.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/mediainfo/audio.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/mediainfo/silencer.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/mediainfo/video.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scheduler/__init__.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scheduler/instagram_human.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scheduler/scheduler.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/__init__.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/abstract.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/account_selector.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/exceptions.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/fail_handler.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/instagram/__init__.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/link_resolver.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/youtube/__init__.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/youtube/music.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/scraper/youtube/youtube.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/storage/__init__.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/storage/mongo.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/telegram/__init__.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/telegram/bot.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/telegram/caption_shortener.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/telegram/handlers.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/telegram/placeholder_message.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/telegram/utils.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/uploader/__init__.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon/warp_beacon.py +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon.egg-info/SOURCES.txt +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon.egg-info/dependency_links.txt +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon.egg-info/entry_points.txt +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon.egg-info/requires.txt +0 -0
- {warp_beacon-2.3.49 → warp_beacon-2.3.51}/warp_beacon.egg-info/top_level.txt +0 -0
@@ -18,7 +18,7 @@ from instagrapi.types import Media
|
|
18
18
|
from instagrapi import Client
|
19
19
|
from instagrapi.mixins.challenge import ChallengeChoice
|
20
20
|
from instagrapi.exceptions import LoginRequired, PleaseWaitFewMinutes, MediaNotFound, ClientNotFoundError, UserNotFound, ChallengeRequired, \
|
21
|
-
ChallengeSelfieCaptcha, ChallengeUnknownStep,
|
21
|
+
ChallengeSelfieCaptcha, ChallengeUnknownStep, UnknownError as IGUnknownError
|
22
22
|
|
23
23
|
from warp_beacon.scraper.exceptions import NotFound, UnknownError, TimeOut, IGRateLimitOccurred, CaptchaIssue, extract_exception_message
|
24
24
|
from warp_beacon.scraper.abstract import ScraperAbstract
|
@@ -212,14 +212,15 @@ class YoutubeAbstract(ScraperAbstract):
|
|
212
212
|
# do noting, not interested
|
213
213
|
pass
|
214
214
|
#except http.client.IncompleteRead as e:
|
215
|
+
except KeyError:
|
216
|
+
raise Unavailable("Library failed")
|
215
217
|
except (socket.timeout,
|
216
218
|
ssl.SSLError,
|
217
219
|
http.client.IncompleteRead,
|
218
220
|
http.client.HTTPException,
|
219
221
|
requests.RequestException,
|
220
222
|
urllib.error.URLError,
|
221
|
-
urllib.error.HTTPError
|
222
|
-
KeyError) as e:
|
223
|
+
urllib.error.HTTPError) as e:
|
223
224
|
if hasattr(e, "code") and (int(e.code) == 403 or int(e.code) == 400):
|
224
225
|
raise Unavailable(extract_exception_message(e))
|
225
226
|
logging.warning("Youtube read timeout! Retrying in '%d' seconds ...", pause_secs)
|
@@ -42,4 +42,24 @@ class YoutubeShortsScraper(YoutubeAbstract):
|
|
42
42
|
"media_type": JobType.VIDEO
|
43
43
|
})
|
44
44
|
|
45
|
+
return res
|
46
|
+
|
47
|
+
def _download_yt_dlp(self, url: str, timeout: int = 60) -> list:
|
48
|
+
res = []
|
49
|
+
thumbnail = None
|
50
|
+
video_id = self.get_video_id(url)
|
51
|
+
if video_id:
|
52
|
+
thumbnail = self.download_hndlr(self.download_thumbnail, video_id)
|
53
|
+
with self.build_yt_dlp(timeout) as ydl:
|
54
|
+
info = ydl.extract_info(url, download=True)
|
55
|
+
local_file = ydl.prepare_filename(info)
|
56
|
+
logging.debug("Temp filename: '%s'", local_file)
|
57
|
+
res.append({
|
58
|
+
"local_media_path": local_file,
|
59
|
+
"performer": info.get("uploader", "Unknown"),
|
60
|
+
"thumb": thumbnail,
|
61
|
+
"canonical_name": info.get("title", ''),
|
62
|
+
"media_type": JobType.VIDEO
|
63
|
+
})
|
64
|
+
|
45
65
|
return res
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|