warp-beacon 2.5.6__py3-none-any.whl → 2.5.8__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.
@@ -1,2 +1,2 @@
1
- __version__ = "2.5.6"
1
+ __version__ = "2.5.8"
2
2
 
@@ -95,6 +95,7 @@ class IGScheduler(object):
95
95
 
96
96
  def validate_ig_session(self) -> bool:
97
97
  try:
98
+ logging.info("Setting IG validate task ...")
98
99
  self.downloader.queue_task(warp_beacon.jobs.download_job.DownloadJob.build(
99
100
  session_validation=True,
100
101
  job_origin=Origin.INSTAGRAM
@@ -108,6 +109,7 @@ class IGScheduler(object):
108
109
 
109
110
  def validate_yt_session(self) -> bool:
110
111
  try:
112
+ logging.info("Setting YT validate task ...")
111
113
  self.downloader.queue_task(warp_beacon.jobs.download_job.DownloadJob.build(
112
114
  session_validation=True,
113
115
  job_origin=Origin.YOUTUBE
@@ -132,26 +134,25 @@ class IGScheduler(object):
132
134
  min_val = min(yt_expires, ig_sched)
133
135
  #max_val = max(yt_expires, ig_sched)
134
136
  now = datetime.datetime.now()
135
- if 4 <= now.hour < 7 and min_val != yt_expires:
137
+ if 3 <= now.hour < 7 and min_val != yt_expires:
136
138
  logging.info("Scheduler is paused due to night hours (4:00 - 7:00)")
137
139
  self.state["remaining"] = 10800
138
140
  self.save_state()
139
141
 
140
142
  if ig_sched <= 0:
141
143
  self.state["remaining"] = randrange(9292, 26200)
142
- logging.info("Next scheduler activity in '%s' seconds", ig_sched)
143
-
144
- if yt_expires <= time.time() + 60:
145
- self.validate_yt_session()
146
144
 
147
145
  start_time = time.time()
146
+ logging.info("Next scheduler activity in '%s' seconds", min_val)
147
+ logging.info("IG timeout '%d' secs", int(self.state["remaining"]))
148
148
  self.event.wait(timeout=min_val)
149
149
  elapsed = time.time() - start_time
150
150
  self.state["remaining"] -= elapsed
151
151
 
152
152
  if self.running:
153
- logging.info("Scheduler waking up")
154
153
  self.validate_ig_session()
154
+ if yt_expires <= time.time() + 60:
155
+ self.validate_yt_session()
155
156
  self.save_state()
156
157
  except Exception as e:
157
158
  logging.error("An error occurred in scheduler thread!")
@@ -93,7 +93,7 @@ class AsyncDownloader(object):
93
93
  fail_handler = FailHandler(DBClient())
94
94
  while self.allow_loop.value == 1:
95
95
  try:
96
- job = None
96
+ job: DownloadJob = None
97
97
  try:
98
98
  job = self.job_queue.get()
99
99
  if job is self.__JOE_BIDEN_WAKEUP:
@@ -141,15 +141,15 @@ class AsyncDownloader(object):
141
141
  # job retry loop
142
142
  while self.allow_loop.value == 1:
143
143
  try:
144
- if job.session_validation:
144
+ if job.session_validation and job.job_origin in (Origin.INSTAGRAM, Origin.YOUTUBE):
145
145
  if job.job_origin is Origin.INSTAGRAM:
146
- if selector.get_ig_request_count() >= int(os.environ.get("IG_REQUESTS_PER_ACCOUNT", default="20")):
146
+ if selector.get_ig_request_count() >= int(os.environ.get("IG_REQUESTS_PER_ACCOUNT", default="10")):
147
147
  logging.info("The account request limit has been reached. Selecting the next account.")
148
148
  selector.reset_ig_request_count()
149
149
  selector.next()
150
150
  logging.info("Validating '%s' session ...", job.job_origin.value)
151
151
  actor.validate_session()
152
- logging.info("done")
152
+ logging.info("Validation done")
153
153
  else:
154
154
  logging.info("Downloading URL '%s'", job.url)
155
155
  items = actor.download(job)
@@ -183,8 +183,8 @@ class AccountSelector(object):
183
183
  return 0
184
184
  return len(self.accounts[module_name])
185
185
 
186
- def inc_ig_request_count(self) -> None:
187
- self.ig_request_count.value += 1
186
+ def inc_ig_request_count(self, amount: int = 1) -> None:
187
+ self.ig_request_count.value += amount
188
188
 
189
189
  def reset_ig_request_count(self) -> None:
190
190
  self.ig_request_count.value = 0
@@ -125,7 +125,7 @@ class InstagramScraper(ScraperAbstract):
125
125
  return "media", self.scrap_media(url)
126
126
  try:
127
127
  return _scrap()
128
- except LoginRequired as e:
128
+ except exceptions.LoginRequired as e:
129
129
  logging.warning("Session error. Trying to relogin...")
130
130
  logging.exception(e)
131
131
  self.login()
@@ -195,7 +195,7 @@ class YoutubeAbstract(ScraperAbstract):
195
195
  if hasattr(e, "code") and (int(e.code) == 403 or int(e.code) == 400):
196
196
  raise Unavailable(extract_exception_message(e))
197
197
  if hasattr(e, "reason") and "Remote end closed connection without response" in str(e.reason):
198
- raise BadProxy(extract_exception_message(e))
198
+ raise Unavailable(extract_exception_message(e))
199
199
  logging.warning("Youtube read timeout! Retrying in '%d' seconds ...", pause_secs)
200
200
  logging.info("Your `YT_MAX_RETRIES` values is '%d'", max_retries)
201
201
  logging.exception(extract_exception_message(e))
@@ -294,8 +294,9 @@ class YoutubeAbstract(ScraperAbstract):
294
294
  try:
295
295
  ret = self.download_hndlr(self._download, job.url, session=True)
296
296
  return ret
297
- except (Unavailable, TimeOut, KeyError):
297
+ except (Unavailable, TimeOut, KeyError) as e:
298
298
  logging.warning("Download failed, trying to download with yt_dlp")
299
+ logging.exception(e)
299
300
 
300
301
  try:
301
302
  ret = self.download_hndlr(self._download_yt_dlp, job.url)
@@ -248,7 +248,7 @@ class Bot(object):
248
248
  args["thumb"] = job.media_info["thumb"]
249
249
  args["caption"] = self.build_signature_caption(job)
250
250
 
251
- args["file_name"] = job.local_media_path
251
+ args["file_name"] = os.path.basename(job.local_media_path)
252
252
  elif job.media_type == JobType.IMAGE:
253
253
  if job.tg_file_id:
254
254
  if job.placeholder_message_id:
@@ -269,7 +269,7 @@ class Bot(object):
269
269
  args["photo"] = job.local_media_path
270
270
  args["caption"] = self.build_signature_caption(job)
271
271
 
272
- args["file_name"] = job.local_media_path
272
+ args["file_name"] = os.path.basename(job.local_media_path)
273
273
  elif job.media_type == JobType.AUDIO:
274
274
  if job.tg_file_id:
275
275
  if job.placeholder_message_id:
@@ -297,7 +297,7 @@ class Bot(object):
297
297
  args["title"] = job.canonical_name
298
298
  args["caption"] = self.build_signature_caption(job)
299
299
 
300
- args["file_name"] = job.local_media_path
300
+ args["file_name"] = os.path.basename(job.local_media_path)
301
301
  elif job.media_type == JobType.ANIMATION:
302
302
  if job.tg_file_id:
303
303
  if job.placeholder_message_id:
@@ -326,7 +326,7 @@ class Bot(object):
326
326
  args["thumb"] = job.media_info["thumb"]
327
327
  args["caption"] = self.build_signature_caption(job)
328
328
 
329
- args["file_name"] = job.local_media_path
329
+ args["file_name"] = os.path.basename(job.local_media_path)
330
330
  elif job.media_type == JobType.COLLECTION:
331
331
  if job.tg_file_id:
332
332
  args["media"] = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: warp_beacon
3
- Version: 2.5.6
3
+ Version: 2.5.8
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
@@ -4,7 +4,7 @@ var/warp_beacon/accounts.json,sha256=OsXdncs6h88xrF_AP6_WDCK1waGBn9SR-uYdIeK37GM
4
4
  var/warp_beacon/placeholder.gif,sha256=cE5CGJVaop4Sx21zx6j4AyoHU0ncmvQuS2o6hJfEH88,6064
5
5
  var/warp_beacon/proxies.json,sha256=VnjlQDXumOEq72ZFjbh6IqHS1TEHqn8HPYAZqWCeSIA,95
6
6
  warp_beacon/__init__.py,sha256=_rThNODmz0nDp_n4mWo_HKaNFE5jk1_7cRhHyYaencI,163
7
- warp_beacon/__version__.py,sha256=4k8wt46v-ttsvFxv2QGEpgyobdIwzii1kBMz5op9fqs,23
7
+ warp_beacon/__version__.py,sha256=ih6MTWwRjEol5yh7XgwWlbclS6hLem0mZQYwD7I1nTA,23
8
8
  warp_beacon/warp_beacon.py,sha256=7KEtZDj-pdhtl6m-zFLsSojs1ZR4o7L0xbqtdmYPvfE,342
9
9
  warp_beacon/yt_auth.py,sha256=GUTKqYr_tzDC-07Lx_ahWXSag8EyLxXBUnQbDBIkEmk,6022
10
10
  warp_beacon/compress/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -21,32 +21,32 @@ warp_beacon/mediainfo/silencer.py,sha256=qxMuViOoVwUYb60uCVvqHiGrqByR1_4_rqMT-Xd
21
21
  warp_beacon/mediainfo/video.py,sha256=UBZrhTN5IDI-aYu6tsJEILo9nFkjHhkldGVFmvV7tEI,2480
22
22
  warp_beacon/scheduler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  warp_beacon/scheduler/instagram_human.py,sha256=xbh37egaTiSOasIMibpF0n9xwmWbq5ktGyNglyZQpvc,5673
24
- warp_beacon/scheduler/scheduler.py,sha256=MoPdPKiMNqVD19N-8yDc0wkTlwghFeQV3STBipAgbeQ,4602
25
- warp_beacon/scraper/__init__.py,sha256=Wl_GHtBW6GMH45nD9jjzSJGxBkkkrDZAFx9QIqkagO0,18218
24
+ warp_beacon/scheduler/scheduler.py,sha256=z1EokmWTdo8GE3PfqFl2JFypqVNtp2qtSBwBykH1dNg,4727
25
+ warp_beacon/scraper/__init__.py,sha256=QX8S2sw6Ay9V5TWYYZisvKJLa1BOLa3oErYRL3hNqas,18299
26
26
  warp_beacon/scraper/abstract.py,sha256=CiOyKCxVYWhPnOUpLAVIRNuHBftN6gmxqATdhjzkaS4,2852
27
- warp_beacon/scraper/account_selector.py,sha256=1ftgBKyaW_JiC6KX6wPfid3YWk8hRctfOTROrH1OnJ8,6943
27
+ warp_beacon/scraper/account_selector.py,sha256=mYNxAyAJj4ie9wMMkfb7ONjvAicS8xPEfE3iIe4gCog,6965
28
28
  warp_beacon/scraper/exceptions.py,sha256=EKwoF0oH2xZWbNU-v8DOaWK5skKwa3s1yTIBdlcfMpc,1452
29
29
  warp_beacon/scraper/fail_handler.py,sha256=_blvckfTZ4xWVancQKVRXH5ClKGwfrBxMwvXIFZh1qA,975
30
30
  warp_beacon/scraper/link_resolver.py,sha256=Rc9ZuMyOo3iPywDHwjngy-WRQ2SXhJwxcg-5ripx7tM,2447
31
31
  warp_beacon/scraper/instagram/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- warp_beacon/scraper/instagram/instagram.py,sha256=KyOZnIt6A8wkroXkZcIJMscuy5N5ZEz9-v3Ciwo0C7M,14654
32
+ warp_beacon/scraper/instagram/instagram.py,sha256=-oAT9XjqN02wFRREhk3W3WEgVQ77p6NA55z1KI8ng8Q,14665
33
33
  warp_beacon/scraper/youtube/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- warp_beacon/scraper/youtube/abstract.py,sha256=6seKvS3D8pdrd3ek5MIMVKFTnP_cL6YuZsuwVAqhX1w,11696
34
+ warp_beacon/scraper/youtube/abstract.py,sha256=kWXS_d0LJDR8cJaWalcUAlXpyQbqOxlMEojhtpyK7Ik,11728
35
35
  warp_beacon/scraper/youtube/music.py,sha256=m-1iPYe1p0OZmOlYl8gjHErsazCcXqs3qDA7KyIT6GI,2923
36
36
  warp_beacon/scraper/youtube/shorts.py,sha256=sPrOjhcLlV0m5a-j4mSFsF6CkNapeUdGZqoWAYheiCM,1894
37
37
  warp_beacon/scraper/youtube/youtube.py,sha256=ctHPmTfNO-5dcYeh1K4_PkB6MQRVgByr4EvaCvZp9WE,6171
38
38
  warp_beacon/storage/__init__.py,sha256=0Vajd0oITKJfu2vmNx5uQSt3-L6vwIvUYWJo8HZCjco,3398
39
39
  warp_beacon/storage/mongo.py,sha256=qC4ZiO8XXvPnP0rJwz4CJx42pqFsyAjCiW10W5QdT6E,527
40
40
  warp_beacon/telegram/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- warp_beacon/telegram/bot.py,sha256=eY6g3XiKbl76OF6gWVThIlH6GkTYqcoiUGbXH9YzkLk,18150
41
+ warp_beacon/telegram/bot.py,sha256=yLgmX3HKoy_A8RXU1h-7VTDih_gOA0UY2obzlVK7OdA,18222
42
42
  warp_beacon/telegram/caption_shortener.py,sha256=EnguNCF52ne7y4P-iJAbI6K3sqoJqJbND_dX5Fhwkv0,1549
43
43
  warp_beacon/telegram/handlers.py,sha256=uvR6TPHSqdSxigp3wR-ewiE6t3TvVcbVLVcYGwkgD2s,9559
44
44
  warp_beacon/telegram/placeholder_message.py,sha256=wN9-BRiyrtHG-EvXtZkGJHt2CX71munQ57ITttjt0mw,6400
45
45
  warp_beacon/telegram/utils.py,sha256=9uebX53G16mV7ER7WgfdWBLFHHw14S8HBt9URrIskg0,4440
46
46
  warp_beacon/uploader/__init__.py,sha256=e75mOcC0vrUVjrTNMQzVUTgXGdGo4J6n8t5doOnYG5I,5616
47
- warp_beacon-2.5.6.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
48
- warp_beacon-2.5.6.dist-info/METADATA,sha256=1JI1reUWz5Qdw1ZqEWRAo91g7lu-KJDmHwd8twaupYc,22625
49
- warp_beacon-2.5.6.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
50
- warp_beacon-2.5.6.dist-info/entry_points.txt,sha256=eSB61Rb89d56WY0O-vEIQwkn18J-4CMrJcLA_R_8h3g,119
51
- warp_beacon-2.5.6.dist-info/top_level.txt,sha256=4ML0-mXsezLtRXyxQUntL_ktc5HX9npTeQWzvV8kFvA,1161
52
- warp_beacon-2.5.6.dist-info/RECORD,,
47
+ warp_beacon-2.5.8.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
48
+ warp_beacon-2.5.8.dist-info/METADATA,sha256=o7RsdjSTiycI3tHxeX71v1FoXdvQN4E6nxua6cweeg8,22625
49
+ warp_beacon-2.5.8.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
50
+ warp_beacon-2.5.8.dist-info/entry_points.txt,sha256=eSB61Rb89d56WY0O-vEIQwkn18J-4CMrJcLA_R_8h3g,119
51
+ warp_beacon-2.5.8.dist-info/top_level.txt,sha256=4ML0-mXsezLtRXyxQUntL_ktc5HX9npTeQWzvV8kFvA,1161
52
+ warp_beacon-2.5.8.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (79.0.0)
2
+ Generator: setuptools (79.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5