warp-beacon 2.3.50__tar.gz → 2.3.52__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.
Files changed (60) hide show
  1. {warp_beacon-2.3.50/warp_beacon.egg-info → warp_beacon-2.3.52}/PKG-INFO +1 -1
  2. warp_beacon-2.3.52/warp_beacon/__version__.py +2 -0
  3. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/__init__.py +5 -0
  4. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/account_selector.py +12 -1
  5. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/youtube/abstract.py +3 -2
  6. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/youtube/shorts.py +20 -0
  7. {warp_beacon-2.3.50 → warp_beacon-2.3.52/warp_beacon.egg-info}/PKG-INFO +1 -1
  8. warp_beacon-2.3.50/warp_beacon/__version__.py +0 -2
  9. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/LICENSE +0 -0
  10. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/MANIFEST.in +0 -0
  11. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/README.md +0 -0
  12. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/assets/placeholder.gif +0 -0
  13. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/etc/.gitignore +0 -0
  14. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/etc/accounts.json +0 -0
  15. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/etc/proxies.json +0 -0
  16. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/etc/warp_beacon.conf +0 -0
  17. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/etc/warp_beacon.service +0 -0
  18. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/pyproject.toml +0 -0
  19. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/setup.cfg +0 -0
  20. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/setup.py +0 -0
  21. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/__init__.py +0 -0
  22. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/compress/__init__.py +0 -0
  23. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/compress/video.py +0 -0
  24. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/jobs/__init__.py +0 -0
  25. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/jobs/abstract.py +0 -0
  26. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/jobs/download_job.py +0 -0
  27. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/jobs/types.py +0 -0
  28. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/jobs/upload_job.py +0 -0
  29. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/mediainfo/__init__.py +0 -0
  30. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/mediainfo/abstract.py +0 -0
  31. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/mediainfo/audio.py +0 -0
  32. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/mediainfo/silencer.py +0 -0
  33. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/mediainfo/video.py +0 -0
  34. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scheduler/__init__.py +0 -0
  35. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scheduler/instagram_human.py +0 -0
  36. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scheduler/scheduler.py +0 -0
  37. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/abstract.py +0 -0
  38. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/exceptions.py +0 -0
  39. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/fail_handler.py +0 -0
  40. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/instagram/__init__.py +0 -0
  41. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/instagram/instagram.py +0 -0
  42. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/link_resolver.py +0 -0
  43. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/youtube/__init__.py +0 -0
  44. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/youtube/music.py +0 -0
  45. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/scraper/youtube/youtube.py +0 -0
  46. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/storage/__init__.py +0 -0
  47. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/storage/mongo.py +0 -0
  48. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/telegram/__init__.py +0 -0
  49. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/telegram/bot.py +0 -0
  50. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/telegram/caption_shortener.py +0 -0
  51. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/telegram/handlers.py +0 -0
  52. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/telegram/placeholder_message.py +0 -0
  53. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/telegram/utils.py +0 -0
  54. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/uploader/__init__.py +0 -0
  55. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon/warp_beacon.py +0 -0
  56. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon.egg-info/SOURCES.txt +0 -0
  57. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon.egg-info/dependency_links.txt +0 -0
  58. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon.egg-info/entry_points.txt +0 -0
  59. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon.egg-info/requires.txt +0 -0
  60. {warp_beacon-2.3.50 → warp_beacon-2.3.52}/warp_beacon.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: warp_beacon
3
- Version: 2.3.50
3
+ Version: 2.3.52
4
4
  Summary: Telegram bot for expanding external media links
5
5
  Home-page: https://github.com/sb0y/warp_beacon
6
6
  Author: Andrey Bagrintsev
@@ -0,0 +1,2 @@
1
+ __version__ = "2.3.52"
2
+
@@ -121,6 +121,11 @@ class AsyncDownloader(object):
121
121
  if job.job_origin is Origin.INSTAGRAM:
122
122
  from warp_beacon.scraper.instagram.instagram import InstagramScraper
123
123
  actor = InstagramScraper(selector.get_current(), proxy)
124
+ selector.inc_ig_request_count()
125
+ if selector.get_ig_request_count() >= int(os.environ.get("IG_REQUESTS_PER_ACCOUNT", default="20")):
126
+ logging.info("The account request limit has been reached. Selecting the next account.")
127
+ selector.reset_ig_request_count()
128
+ selector.next()
124
129
  elif job.job_origin is Origin.YT_SHORTS:
125
130
  from warp_beacon.scraper.youtube.shorts import YoutubeShortsScraper
126
131
  actor = YoutubeShortsScraper(selector.get_current(), proxy)
@@ -23,6 +23,7 @@ class AccountSelector(object):
23
23
  manager = None
24
24
  account_index = {}
25
25
  current_proxy = None
26
+ ig_request_count = None
26
27
 
27
28
  def __init__(self, manager: multiprocessing.managers.SyncManager, acc_file_path: str, proxy_file_path: str=None) -> None:
28
29
  self.manager = manager
@@ -31,6 +32,7 @@ class AccountSelector(object):
31
32
  with open(acc_file_path, 'r', encoding="utf-8") as f:
32
33
  self.accounts = json.loads(f.read())
33
34
  if self.accounts:
35
+ self.ig_request_count = self.manager.Value('i', 0)
34
36
  self.__init_meta_data()
35
37
  #self.load_yt_sessions()
36
38
  for acc_type, _ in self.accounts.items():
@@ -170,4 +172,13 @@ class AccountSelector(object):
170
172
  module_name = 'youtube' if next((s for s in ("yt", "youtube", "youtu_be") if s in mod_name.value), None) else 'instagram'
171
173
  if module_name not in self.accounts:
172
174
  return 0
173
- return len(self.accounts[module_name])
175
+ return len(self.accounts[module_name])
176
+
177
+ def inc_ig_request_count(self) -> None:
178
+ self.ig_request_count.value += 1
179
+
180
+ def reset_ig_request_count(self) -> None:
181
+ self.ig_request_count.value = 0
182
+
183
+ def get_ig_request_count(self) -> int:
184
+ return self.ig_request_count.value
@@ -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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: warp_beacon
3
- Version: 2.3.50
3
+ Version: 2.3.52
4
4
  Summary: Telegram bot for expanding external media links
5
5
  Home-page: https://github.com/sb0y/warp_beacon
6
6
  Author: Andrey Bagrintsev
@@ -1,2 +0,0 @@
1
- __version__ = "2.3.50"
2
-
File without changes
File without changes
File without changes
File without changes
File without changes