warp-beacon 2.3.14__py3-none-any.whl → 2.3.15__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.3.14"
1
+ __version__ = "2.3.15"
2
2
 
@@ -14,7 +14,7 @@ import urllib3
14
14
  from urllib.parse import urljoin, urlparse
15
15
 
16
16
  from instagrapi.mixins.story import Story
17
- #from instagrapi.types import Media
17
+ from instagrapi.types import Media
18
18
  from instagrapi import Client
19
19
  from instagrapi.mixins.challenge import ChallengeChoice
20
20
  from instagrapi.exceptions import LoginRequired, PleaseWaitFewMinutes, MediaNotFound, ClientNotFoundError, UserNotFound, ChallengeRequired, \
@@ -187,19 +187,20 @@ class InstagramScraper(ScraperAbstract):
187
187
 
188
188
  return ret_val
189
189
 
190
- def download_video(self, url: str, media_info: dict) -> dict:
190
+ def download_video(self, url: str, media_info: Media) -> dict:
191
191
  self.cl.request_timeout = int(os.environ.get("IG_REQUEST_TIMEOUT", default=60))
192
192
  path = self._download_hndlr(self.cl.video_download_by_url, url, folder='/tmp')
193
- return {"local_media_path": str(path), "media_type": JobType.VIDEO, "media_info": {"duration": round(media_info.video_duration)}}
193
+ return {"local_media_path": str(path), "canonical_name": self.extract_canonical_name(media_info), \
194
+ "media_type": JobType.VIDEO, "media_info": {"duration": round(media_info.video_duration)}}
194
195
 
195
- def download_photo(self, url: str) -> dict:
196
+ def download_photo(self, url: str, media_info: Media) -> dict:
196
197
  path = str(self._download_hndlr(self.cl.photo_download_by_url, url, folder='/tmp'))
197
198
  path_lowered = path.lower()
198
199
  if ".webp" in path_lowered:
199
200
  path = InstagramScraper.convert_webp_to_png(path)
200
201
  if ".heic" in path_lowered:
201
202
  path = InstagramScraper.convert_heic_to_png(path)
202
- return {"local_media_path": path, "media_type": JobType.IMAGE}
203
+ return {"local_media_path": path, "canonical_name": self.extract_canonical_name(media_info), "media_type": JobType.IMAGE}
203
204
 
204
205
  def download_story(self, story_info: Story) -> dict:
205
206
  path, media_type, media_info = "", JobType.UNKNOWN, {}
@@ -236,20 +237,33 @@ class InstagramScraper(ScraperAbstract):
236
237
 
237
238
  return {"media_type": JobType.COLLECTION, "save_items": True, "items": chunks}
238
239
 
239
- def download_album(self, media_info: dict) -> dict:
240
+ def download_album(self, media_info: Media) -> dict:
240
241
  chunks = []
241
242
  for media_chunk in Utils.chunker(media_info.resources, 10):
242
243
  chunk = []
243
244
  for media in media_chunk:
244
245
  _media_info = self._download_hndlr(self.cl.media_info, media.pk)
245
246
  if media.media_type == 1: # photo
246
- chunk.append(self.download_photo(url=_media_info.thumbnail_url))
247
+ chunk.append(self.download_photo(url=_media_info.thumbnail_url, media_info=_media_info))
247
248
  elif media.media_type == 2: # video
248
249
  chunk.append(self.download_video(url=_media_info.video_url, media_info=_media_info))
249
250
  chunks.append(chunk)
250
251
 
251
252
  return {"media_type": JobType.COLLECTION, "items": chunks}
252
253
 
254
+ def extract_canonical_name(self, media: Media) -> str:
255
+ ret = ""
256
+ try:
257
+ if media.title:
258
+ ret = media.title
259
+ if media.caption_text:
260
+ ret += "\n" + media.caption_text
261
+ except Exception as e:
262
+ logging.warning("Failed to extract canonical media name!")
263
+ logging.exception(e)
264
+
265
+ return ret
266
+
253
267
  def download(self, job: DownloadJob) -> Optional[list[dict]]:
254
268
  res = []
255
269
  while True:
@@ -261,7 +275,7 @@ class InstagramScraper(ScraperAbstract):
261
275
  if media_info.media_type == 2 and media_info.product_type == "clips": # Reels
262
276
  res.append(self.download_video(url=media_info.video_url, media_info=media_info))
263
277
  elif media_info.media_type == 1: # Photo
264
- res.append(self.download_photo(url=media_info.thumbnail_url))
278
+ res.append(self.download_photo(url=media_info.thumbnail_url, media_info=media_info))
265
279
  elif media_info.media_type == 8: # Album
266
280
  res.append(self.download_album(media_info=media_info))
267
281
  elif scrap_type == "story":
@@ -257,7 +257,6 @@ class Bot(object):
257
257
  args["duration"] = round(job.media_info["duration"])
258
258
  args["title"] = job.canonical_name
259
259
  args["caption"] = self.build_signature_caption(job)
260
- #args["file_name"] = "%s%s" % (job.canonical_name, os.path.splitext(job.local_media_path)[-1]),
261
260
  elif job.media_type == JobType.ANIMATION:
262
261
  if job.tg_file_id:
263
262
  if job.placeholder_message_id:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: warp_beacon
3
- Version: 2.3.14
3
+ Version: 2.3.15
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=iJ-Q1BLOe6hox693J7orVPTRwodzQ-BF6JHxjBKJRBs,24
7
+ warp_beacon/__version__.py,sha256=JVaWB6HomdBMOznRLcZrplBgUWb-fYoP0lJ0CYpYETM,24
8
8
  warp_beacon/warp_beacon.py,sha256=7KEtZDj-pdhtl6m-zFLsSojs1ZR4o7L0xbqtdmYPvfE,342
9
9
  warp_beacon/compress/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  warp_beacon/compress/video.py,sha256=_PDMVYCyzLYxHv1uZmmzGcG_8rjaZr7BTXsXTTy_oS4,2846
@@ -27,7 +27,7 @@ warp_beacon/scraper/exceptions.py,sha256=Qkz76yo-X5kucEZIP9tWaK-oYO-kvsPEl8Y0W63
27
27
  warp_beacon/scraper/fail_handler.py,sha256=_blvckfTZ4xWVancQKVRXH5ClKGwfrBxMwvXIFZh1qA,975
28
28
  warp_beacon/scraper/link_resolver.py,sha256=Rc9ZuMyOo3iPywDHwjngy-WRQ2SXhJwxcg-5ripx7tM,2447
29
29
  warp_beacon/scraper/instagram/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- warp_beacon/scraper/instagram/instagram.py,sha256=b10mk8IGX9vDKcMVrCXvcELUSEmwOLUJJVKOuFTQSa8,13592
30
+ warp_beacon/scraper/instagram/instagram.py,sha256=coAYqsiWUKhsI_azNYNuAbR9bE36gYC0OD4ah-SUedM,14086
31
31
  warp_beacon/scraper/youtube/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
32
  warp_beacon/scraper/youtube/abstract.py,sha256=cBtExei2Cb3o4YBtHqi8If_FdmE6NyJqNKacm5aw7S0,9243
33
33
  warp_beacon/scraper/youtube/music.py,sha256=qbijpSv54fsrIYHeY-nfmw4vo6oBmedQHsVG8pXNfrc,1380
@@ -36,14 +36,14 @@ warp_beacon/scraper/youtube/youtube.py,sha256=fGrbjBngvvNdpzhb1yZVedNW0_tCrLc31V
36
36
  warp_beacon/storage/__init__.py,sha256=2uvyIR0APIW6gOxwJRvCji7wS2q6I7dghvLyWsRqRxo,3312
37
37
  warp_beacon/storage/mongo.py,sha256=qC4ZiO8XXvPnP0rJwz4CJx42pqFsyAjCiW10W5QdT6E,527
38
38
  warp_beacon/telegram/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- warp_beacon/telegram/bot.py,sha256=u3yvXIcqFtVkrf82IXiC4y-UnrEySw49_immBoXIBN4,15725
39
+ warp_beacon/telegram/bot.py,sha256=WDaUphlF7p6pQkVajIM_F07LvswZXrzOUV5oiAzbb-Y,15625
40
40
  warp_beacon/telegram/handlers.py,sha256=7gldKrX-CTDQNfD1NQ08cC31uPR-95mhN59OujAEqZg,7704
41
41
  warp_beacon/telegram/placeholder_message.py,sha256=wN9-BRiyrtHG-EvXtZkGJHt2CX71munQ57ITttjt0mw,6400
42
42
  warp_beacon/telegram/utils.py,sha256=9uebX53G16mV7ER7WgfdWBLFHHw14S8HBt9URrIskg0,4440
43
43
  warp_beacon/uploader/__init__.py,sha256=5KRWsxPRGuQ56YhCEnJsXnb-yQp8dpvWEsPDf0dD-fw,4964
44
- warp_beacon-2.3.14.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
45
- warp_beacon-2.3.14.dist-info/METADATA,sha256=pePZ8lNGtYb8zk8jQERG5QtOkogr_MlshyE976i-xsU,21704
46
- warp_beacon-2.3.14.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
47
- warp_beacon-2.3.14.dist-info/entry_points.txt,sha256=eSB61Rb89d56WY0O-vEIQwkn18J-4CMrJcLA_R_8h3g,119
48
- warp_beacon-2.3.14.dist-info/top_level.txt,sha256=XusFB1mGUStI2gqbtRuJzQrfrAXmdMaT3QTyfvdLEXI,1064
49
- warp_beacon-2.3.14.dist-info/RECORD,,
44
+ warp_beacon-2.3.15.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
45
+ warp_beacon-2.3.15.dist-info/METADATA,sha256=jpCB5tW5_C8ybCWMY4Z1CgZi_FLS-bNtAMCB7HzTZGs,21704
46
+ warp_beacon-2.3.15.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
47
+ warp_beacon-2.3.15.dist-info/entry_points.txt,sha256=eSB61Rb89d56WY0O-vEIQwkn18J-4CMrJcLA_R_8h3g,119
48
+ warp_beacon-2.3.15.dist-info/top_level.txt,sha256=XusFB1mGUStI2gqbtRuJzQrfrAXmdMaT3QTyfvdLEXI,1064
49
+ warp_beacon-2.3.15.dist-info/RECORD,,