warp-beacon 2.8.20__tar.gz → 2.8.21__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.21}/PKG-INFO +1 -1
- warp_beacon-2.8.21/warp_beacon/__version__.py +2 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/instagram/instagram.py +39 -30
- {warp_beacon-2.8.20 → warp_beacon-2.8.21/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.21}/LICENSE +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/MANIFEST.in +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/README.md +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/assets/cc-group-black.png +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/assets/placeholder.gif +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/etc/.gitignore +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/etc/accounts.json +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/etc/proxies.json +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/etc/warp_beacon.conf +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/etc/warp_beacon.service +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/pyproject.toml +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/setup.cfg +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/setup.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/compress/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/compress/video.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/jobs/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/jobs/abstract.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/jobs/download_job.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/jobs/types.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/jobs/upload_job.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/mediainfo/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/mediainfo/abstract.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/mediainfo/audio.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/mediainfo/silencer.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/mediainfo/video.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scheduler/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scheduler/instagram_human.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scheduler/scheduler.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/X/X.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/X/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/X/abstract.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/X/types.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/abstract.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/account_selector.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/exceptions.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/fail_handler.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/instagram/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/instagram/captcha.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/instagram/wb_instagrapi.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/link_resolver.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/utils.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/youtube/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/youtube/abstract.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/youtube/music.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/youtube/shorts.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/scraper/youtube/youtube.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/storage/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/storage/mongo.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/telegram/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/telegram/bot.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/telegram/caption_shortener.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/telegram/download_status.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/telegram/edit_message.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/telegram/handlers.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/telegram/placeholder_message.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/telegram/progress_bar.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/telegram/progress_file_reader.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/telegram/types.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/telegram/utils.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/uploader/__init__.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/warp_beacon.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon/yt_auth.py +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon.egg-info/SOURCES.txt +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon.egg-info/dependency_links.txt +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon.egg-info/entry_points.txt +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon.egg-info/requires.txt +0 -0
- {warp_beacon-2.8.20 → warp_beacon-2.8.21}/warp_beacon.egg-info/top_level.txt +0 -0
@@ -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
|