warp-beacon 2.8.20__tar.gz → 2.8.22__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.8.20/warp_beacon.egg-info → warp_beacon-2.8.22}/PKG-INFO +1 -1
- warp_beacon-2.8.22/warp_beacon/__version__.py +2 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/instagram/instagram.py +40 -31
- {warp_beacon-2.8.20 → warp_beacon-2.8.22/warp_beacon.egg-info}/PKG-INFO +1 -1
- warp_beacon-2.8.20/warp_beacon/__version__.py +0 -2
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/LICENSE +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/MANIFEST.in +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/README.md +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/assets/cc-group-black.png +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/assets/placeholder.gif +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/etc/.gitignore +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/etc/accounts.json +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/etc/proxies.json +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/etc/warp_beacon.conf +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/etc/warp_beacon.service +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/pyproject.toml +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/setup.cfg +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/setup.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/compress/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/compress/video.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/jobs/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/jobs/abstract.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/jobs/download_job.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/jobs/types.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/jobs/upload_job.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/mediainfo/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/mediainfo/abstract.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/mediainfo/audio.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/mediainfo/silencer.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/mediainfo/video.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scheduler/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scheduler/instagram_human.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scheduler/scheduler.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/X/X.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/X/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/X/abstract.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/X/types.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/abstract.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/account_selector.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/exceptions.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/fail_handler.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/instagram/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/instagram/captcha.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/instagram/wb_instagrapi.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/link_resolver.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/utils.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/youtube/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/youtube/abstract.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/youtube/music.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/youtube/shorts.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/scraper/youtube/youtube.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/storage/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/storage/mongo.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/telegram/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/telegram/bot.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/telegram/caption_shortener.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/telegram/download_status.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/telegram/edit_message.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/telegram/handlers.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/telegram/placeholder_message.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/telegram/progress_bar.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/telegram/progress_file_reader.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/telegram/types.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/telegram/utils.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/uploader/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/warp_beacon.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon/yt_auth.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon.egg-info/SOURCES.txt +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon.egg-info/dependency_links.txt +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon.egg-info/entry_points.txt +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon.egg-info/requires.txt +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.22}/warp_beacon.egg-info/top_level.txt +0 -0
@@ -383,7 +383,7 @@ class InstagramScraper(ScraperAbstract):
|
|
383
383
|
#})
|
384
384
|
media_info = self.download_hndlr(self.cl.media_info, media_id)
|
385
385
|
logging.info("media_type is '%d', product_type is '%s'", media_info.media_type, media_info.product_type)
|
386
|
-
if media_info.media_type == 2 and media_info.product_type in ("clips", "ad"): # Reels
|
386
|
+
if media_info.media_type == 2 and media_info.product_type in ("clips", "ad", "igtv"): # Reels
|
387
387
|
res.append(self.download_video(url=media_info.video_url, media_info=media_info))
|
388
388
|
elif media_info.media_type == 1: # Photo
|
389
389
|
res.append(self.download_photo(url=media_info.thumbnail_url, media_info=media_info))
|
@@ -414,39 +414,48 @@ class InstagramScraper(ScraperAbstract):
|
|
414
414
|
|
415
415
|
def email_challenge_resolver(self, username: str) -> Optional[str]:
|
416
416
|
logging.info("Started email challenge resolver")
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
if not isinstance(payloads, list):
|
428
|
-
payloads = [msg]
|
429
|
-
code = None
|
430
|
-
for payload in payloads:
|
431
|
-
body = ''
|
417
|
+
try:
|
418
|
+
mail = imaplib.IMAP4_SSL(self.account.get("imap_server", "imap.bagrintsev.me"))
|
419
|
+
mail.login(self.account.get("imap_login", ""), self.account.get("imap_password", "")) # email server creds
|
420
|
+
mail.select("inbox")
|
421
|
+
_, data = mail.search(None, "(UNSEEN)")
|
422
|
+
ids = data.pop().split()
|
423
|
+
for num in reversed(ids):
|
424
|
+
mail.store(num, "+FLAGS", "\\Seen") # mark as read
|
425
|
+
_, data = mail.fetch(num, "(RFC822)")
|
426
|
+
msg, payloads = "", None
|
432
427
|
try:
|
433
|
-
|
428
|
+
msg = email.message_from_string(data[0][1].decode())
|
429
|
+
payloads = msg.get_payload()
|
434
430
|
except:
|
431
|
+
logging.error("Failed to parse imap message!")
|
435
432
|
continue
|
436
|
-
if
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
433
|
+
if not isinstance(payloads, list):
|
434
|
+
payloads = [msg]
|
435
|
+
code = None
|
436
|
+
for payload in payloads:
|
437
|
+
body = ''
|
438
|
+
try:
|
439
|
+
body = payload.get_payload(decode=True).decode()
|
440
|
+
except:
|
441
|
+
continue
|
442
|
+
if "<div" not in body:
|
443
|
+
continue
|
444
|
+
match = re.search(">([^>]*?({u})[^<]*?)<".format(u=username), body)
|
445
|
+
if not match:
|
446
|
+
continue
|
447
|
+
logging.info("Match from email: '%s'", match.group(1))
|
448
|
+
match = re.search(r">(\d{6})<", body)
|
449
|
+
if not match:
|
450
|
+
logging.info('Skip this email, "code" not found')
|
451
|
+
continue
|
452
|
+
code = match.group(1)
|
453
|
+
if code:
|
454
|
+
logging.info("Found IG code at mail server: '%s'", code)
|
455
|
+
return code
|
456
|
+
except Exception as e:
|
457
|
+
logging.error("Failed to scan IMAP folder")
|
458
|
+
logging.exception(e)
|
450
459
|
return None
|
451
460
|
|
452
461
|
def get_code_from_sms(self, username: str) -> Optional[str]:
|
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
|
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
|