warp-beacon 2.8.18__py3-none-any.whl → 2.8.20__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.8.18"
1
+ __version__ = "2.8.20"
2
2
 
@@ -20,10 +20,10 @@ class XScraper(XAbstract):
20
20
  def extract_canonical_name(self, media: dict) -> str:
21
21
  ret = ""
22
22
  try:
23
- if media.get("title"):
24
- ret = media["title"]
25
- elif media.get("description"):
23
+ if media.get("description"):
26
24
  ret = media["description"]
25
+ elif media.get("title"):
26
+ ret = media["title"]
27
27
  except Exception as e:
28
28
  logging.warning("Failed to extract canonical media name!")
29
29
  logging.exception(e)
@@ -51,18 +51,16 @@ class XAbstract(ScraperAbstract):
51
51
  except urllib3.exceptions.ProxyError as e:
52
52
  logging.warning("Proxy error!")
53
53
  raise BadProxy(extract_exception_message(e.original_error))
54
+ except playwright.sync_api.TimeoutError as e:
55
+ logging.warning("Plawright timeout error", exc_info=e)
56
+ raise BadProxy("Content unvailable")
54
57
  except (socket.timeout,
55
58
  ssl.SSLError,
56
59
  http.client.IncompleteRead,
57
60
  http.client.HTTPException,
58
61
  requests.RequestException,
59
62
  urllib.error.URLError,
60
- urllib.error.HTTPError,
61
- playwright.sync_api.TimeoutError) as e:
62
- if hasattr(e, "code") and (int(e.code) == 403 or int(e.code) == 400):
63
- raise Unavailable(extract_exception_message(e))
64
- if hasattr(e, "reason") and "Remote end closed connection without response" in str(e.reason):
65
- raise Unavailable(extract_exception_message(e))
63
+ urllib.error.HTTPError) as e:
66
64
  logging.warning("X read timeout! Retrying in '%d' seconds ...", pause_secs)
67
65
  logging.info("Your `X_MAX_RETRIES` values is '%d'", max_retries)
68
66
  logging.exception(extract_exception_message(e))
@@ -135,5 +133,9 @@ class XAbstract(ScraperAbstract):
135
133
 
136
134
  def download(self, job: DownloadJob) -> list:
137
135
  self.job = job
138
- ret = self.download_hndlr(self._download, job.url)
136
+ ret = []
137
+ try:
138
+ ret = self.download_hndlr(self._download, job.url)
139
+ except playwright.errors.TimeoutError as e:
140
+ pass
139
141
  return ret
@@ -222,11 +222,11 @@ class Bot(object):
222
222
  if job.source_username.startswith("<a href="):
223
223
  caption += f"Requested by <b>{job.source_username}</b>"
224
224
  else:
225
- caption += f"Requested by <b>@{job.source_username}</b>"
225
+ caption += f"Requested by <b>@{html.escape(job.source_username)}</b>"
226
226
  if job.source_username and job.url:
227
227
  caption += " | "
228
228
  if job.url:
229
- caption += f'<a href="{job.url}">source link</a>'
229
+ caption += f'<a href="{html.escape(job.url)}">source link</a>'
230
230
 
231
231
  return caption
232
232
 
@@ -238,11 +238,11 @@ class Bot(object):
238
238
  args["media"] = InputMediaVideo(
239
239
  media=job.tg_file_id.replace(":video", ''),
240
240
  supports_streaming=True,
241
- caption=self.build_signature_caption(job)
241
+ caption=self.build_signature_caption(job, job.message_text)
242
242
  )
243
243
  else:
244
244
  args["video"] = job.tg_file_id.replace(":video", '')
245
- args["caption"] = self.build_signature_caption(job)
245
+ args["caption"] = self.build_signature_caption(job, job.message_text)
246
246
  else:
247
247
  if job.placeholder_message_id:
248
248
  args["media"] = InputMediaVideo(
@@ -252,7 +252,7 @@ class Bot(object):
252
252
  height=job.media_info["height"],
253
253
  duration=round(job.media_info["duration"]),
254
254
  thumb=job.media_info["thumb"],
255
- caption=self.build_signature_caption(job)
255
+ caption=self.build_signature_caption(job, job.message_text)
256
256
  )
257
257
  else:
258
258
  args["video"] = job.local_media_path
@@ -261,7 +261,7 @@ class Bot(object):
261
261
  args["height"] = job.media_info["height"]
262
262
  args["duration"] = round(job.media_info["duration"])
263
263
  args["thumb"] = job.media_info["thumb"]
264
- args["caption"] = self.build_signature_caption(job)
264
+ args["caption"] = self.build_signature_caption(job, job.message_text)
265
265
 
266
266
  args["file_name"] = os.path.basename(job.local_media_path)
267
267
  elif job.media_type == JobType.IMAGE:
@@ -269,20 +269,20 @@ class Bot(object):
269
269
  if job.placeholder_message_id:
270
270
  args["media"] = InputMediaPhoto(
271
271
  media=job.tg_file_id.replace(":image", ''),
272
- caption=self.build_signature_caption(job)
272
+ caption=self.build_signature_caption(job, job.message_text)
273
273
  )
274
274
  else:
275
275
  args["photo"] = job.tg_file_id.replace(":image", '')
276
- args["caption"] = self.build_signature_caption(job)
276
+ args["caption"] = self.build_signature_caption(job, job.message_text)
277
277
  else:
278
278
  if job.placeholder_message_id:
279
279
  args["media"] = InputMediaPhoto(
280
280
  media=job.local_media_path,
281
- caption=self.build_signature_caption(job)
281
+ caption=self.build_signature_caption(job, job.message_text)
282
282
  )
283
283
  else:
284
284
  args["photo"] = job.local_media_path
285
- args["caption"] = self.build_signature_caption(job)
285
+ args["caption"] = self.build_signature_caption(job, job.message_text)
286
286
 
287
287
  args["file_name"] = os.path.basename(job.local_media_path)
288
288
  elif job.media_type == JobType.AUDIO:
@@ -290,7 +290,7 @@ class Bot(object):
290
290
  if job.placeholder_message_id:
291
291
  args["media"] = InputMediaAudio(
292
292
  media=job.tg_file_id.replace(":audio", ''),
293
- caption=self.build_signature_caption(job)
293
+ caption=self.build_signature_caption(job, job.message_text)
294
294
  )
295
295
  else:
296
296
  args["audio"] = job.tg_file_id.replace(":audio", '')
@@ -302,7 +302,7 @@ class Bot(object):
302
302
  thumb=job.media_info["thumb"],
303
303
  duration=round(job.media_info["duration"]),
304
304
  title=job.canonical_name,
305
- caption=self.build_signature_caption(job)
305
+ caption=self.build_signature_caption(job, job.message_text)
306
306
  )
307
307
  else:
308
308
  args["audio"] = job.local_media_path
@@ -310,7 +310,7 @@ class Bot(object):
310
310
  args["thumb"] = job.media_info["thumb"]
311
311
  args["duration"] = round(job.media_info["duration"])
312
312
  args["title"] = job.canonical_name
313
- args["caption"] = self.build_signature_caption(job)
313
+ args["caption"] = self.build_signature_caption(job, job.message_text)
314
314
 
315
315
  args["file_name"] = os.path.basename(job.local_media_path)
316
316
  elif job.media_type == JobType.ANIMATION:
@@ -318,11 +318,11 @@ class Bot(object):
318
318
  if job.placeholder_message_id:
319
319
  args["media"] = InputMediaAnimation(
320
320
  media=job.tg_file_id.replace(":animation", ''),
321
- caption=self.build_signature_caption(job)
321
+ caption=self.build_signature_caption(job, job.message_text)
322
322
  )
323
323
  else:
324
324
  args["animation"] = job.tg_file_id.replace(":animation", '')
325
- args["caption"] = self.build_signature_caption(job)
325
+ args["caption"] = self.build_signature_caption(job, job.message_text)
326
326
  else:
327
327
  if job.placeholder_message_id:
328
328
  args["media"] = InputMediaAnimation(
@@ -331,7 +331,7 @@ class Bot(object):
331
331
  duration=round(job.media_info["duration"]),
332
332
  width=job.media_info["width"],
333
333
  height=job.media_info["height"],
334
- caption=self.build_signature_caption(job)
334
+ caption=self.build_signature_caption(job, job.message_text)
335
335
  )
336
336
  else:
337
337
  args["animation"] = job.local_media_path
@@ -339,7 +339,7 @@ class Bot(object):
339
339
  args["height"] = job.media_info["height"]
340
340
  args["duration"] = round(job.media_info["duration"])
341
341
  args["thumb"] = job.media_info["thumb"]
342
- args["caption"] = self.build_signature_caption(job)
342
+ args["caption"] = self.build_signature_caption(job, job.message_text)
343
343
 
344
344
  args["file_name"] = os.path.basename(job.local_media_path)
345
345
  elif job.media_type == JobType.COLLECTION:
@@ -352,11 +352,11 @@ class Bot(object):
352
352
  ctype = JobType[mtype.upper()]
353
353
  ptr = None
354
354
  if ctype == JobType.VIDEO:
355
- ptr = InputMediaVideo(media=tg_id, caption=self.build_signature_caption(job))
355
+ ptr = InputMediaVideo(media=tg_id, caption=self.build_signature_caption(job, job.message_text))
356
356
  elif ctype == JobType.IMAGE:
357
- ptr = InputMediaPhoto(media=tg_id, caption=self.build_signature_caption(job))
357
+ ptr = InputMediaPhoto(media=tg_id, caption=self.build_signature_caption(job, job.message_text))
358
358
  elif ctype == JobType.ANIMATION:
359
- ptr = InputMediaAnimation(media=tg_id, caption=self.build_signature_caption(job))
359
+ ptr = InputMediaAnimation(media=tg_id, caption=self.build_signature_caption(job, job.message_text))
360
360
  tg_chunk.append(ptr)
361
361
 
362
362
  args["media"].append(tg_chunk)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: warp_beacon
3
- Version: 2.8.18
3
+ Version: 2.8.20
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=fwWxOJ_lUuzIm9-N1bWjdNmXUdIHuFfaEBVD9K3nhEQ,24
7
+ warp_beacon/__version__.py,sha256=-jWvjaF9y7rG6bgDNpQ1jb-UJEdH7K1-apwvJrgyWX8,24
8
8
  warp_beacon/warp_beacon.py,sha256=ADCR30uGXIsDrt9WoiI9Ghu2QtWs0qZIK6x3pQKM_B4,1109
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
@@ -29,9 +29,9 @@ warp_beacon/scraper/exceptions.py,sha256=hicAe6_0xN7Ry2gcFX4UvqPWMtF_lX2ihH1njQA
29
29
  warp_beacon/scraper/fail_handler.py,sha256=hu0mGS6zeyo3VV86XORvCIWbTApcb2bE_EBoxANpFPo,1529
30
30
  warp_beacon/scraper/link_resolver.py,sha256=Rc9ZuMyOo3iPywDHwjngy-WRQ2SXhJwxcg-5ripx7tM,2447
31
31
  warp_beacon/scraper/utils.py,sha256=AOZmDki2Pbr84IG-j_wN2UghKCiWFVDYdx6HJl0JTBs,1258
32
- warp_beacon/scraper/X/X.py,sha256=XsQ76A4OIHIMrCIWBJYunfU35bz6SgNrU179-ZoZqyc,9184
32
+ warp_beacon/scraper/X/X.py,sha256=F-X2JdAoGNkXGX_zzzWimvJ_iHzBkp0PU7D5mt0wWBM,9184
33
33
  warp_beacon/scraper/X/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- warp_beacon/scraper/X/abstract.py,sha256=pCzZPTCtn8pRbBx2SeuBUpMkEHqnOLtwLBAHYceL12Q,5475
34
+ warp_beacon/scraper/X/abstract.py,sha256=JhaW2pbDK4fY4PeC4YiPcrNuIMjrVLMWwGBAe0LjC9U,5380
35
35
  warp_beacon/scraper/X/types.py,sha256=RrAyODNA8WA0YzznOSK2wr-hstXf3BnEisy06uL-bdA,132
36
36
  warp_beacon/scraper/instagram/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  warp_beacon/scraper/instagram/captcha.py,sha256=9UYziuqB3Tsat_ET6ex-cnZDbi6yCnsXHSpmE8MuUHk,4651
@@ -45,7 +45,7 @@ warp_beacon/scraper/youtube/youtube.py,sha256=uYR7XpfP6ZnSvw1Gc4qG_M8jkCyv3maEyt
45
45
  warp_beacon/storage/__init__.py,sha256=xg3quvc-Lkc-hCZ2lkrTsGqLyMybTN14mwrSuDJMfD4,3403
46
46
  warp_beacon/storage/mongo.py,sha256=qC4ZiO8XXvPnP0rJwz4CJx42pqFsyAjCiW10W5QdT6E,527
47
47
  warp_beacon/telegram/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
- warp_beacon/telegram/bot.py,sha256=DdVgW1SraCabgruEzOKRzh2-Gbn8JDSzxEqcMKeDMHg,20723
48
+ warp_beacon/telegram/bot.py,sha256=o2nYfK6ujFlmLr_A4_XX5eEoG4DMO_HaJMmu8xNEAtM,21073
49
49
  warp_beacon/telegram/caption_shortener.py,sha256=EnguNCF52ne7y4P-iJAbI6K3sqoJqJbND_dX5Fhwkv0,1549
50
50
  warp_beacon/telegram/download_status.py,sha256=N-Qg13LVcPskyQNKG1lw50K1lhFtXu003muCRzZ7wiE,1561
51
51
  warp_beacon/telegram/edit_message.py,sha256=vzSrtlt-QxBU-X9uRSKo7gJftOrvB5Qo3iNsVNptCoE,5684
@@ -56,9 +56,9 @@ warp_beacon/telegram/progress_file_reader.py,sha256=e3equyNKlKs764AD-iE9QRsh3YDH
56
56
  warp_beacon/telegram/types.py,sha256=Kvdng6uCF1HRoqQgGW1ZYYPJoVuYkFb-LDvMBbW5Hjk,89
57
57
  warp_beacon/telegram/utils.py,sha256=zTF8VQfAWetBSjAPbmNe_Zi_LN5fAcWptJKjLaFNHaE,5073
58
58
  warp_beacon/uploader/__init__.py,sha256=qbjl6PhnLxYr-fXsL-EzL8XwmUDDSHb3DrSL-rs1sjo,4894
59
- warp_beacon-2.8.18.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
60
- warp_beacon-2.8.18.dist-info/METADATA,sha256=vsihjj_Zd1yjr2Q_JTfZIy7J0T74hBprcVmR-rF1WJw,23236
61
- warp_beacon-2.8.18.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
62
- warp_beacon-2.8.18.dist-info/entry_points.txt,sha256=eSB61Rb89d56WY0O-vEIQwkn18J-4CMrJcLA_R_8h3g,119
63
- warp_beacon-2.8.18.dist-info/top_level.txt,sha256=RraB0PWGvRK2zPYkuICKNgStLG1C5s7rPHHJEHJbkgA,1510
64
- warp_beacon-2.8.18.dist-info/RECORD,,
59
+ warp_beacon-2.8.20.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
60
+ warp_beacon-2.8.20.dist-info/METADATA,sha256=HvHp3msUYqSdRP4k4NFUVmyXAf84o_Asa68BUqAYHcI,23236
61
+ warp_beacon-2.8.20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
62
+ warp_beacon-2.8.20.dist-info/entry_points.txt,sha256=eSB61Rb89d56WY0O-vEIQwkn18J-4CMrJcLA_R_8h3g,119
63
+ warp_beacon-2.8.20.dist-info/top_level.txt,sha256=RraB0PWGvRK2zPYkuICKNgStLG1C5s7rPHHJEHJbkgA,1510
64
+ warp_beacon-2.8.20.dist-info/RECORD,,