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.
- warp_beacon/__version__.py +1 -1
- warp_beacon/scraper/instagram/instagram.py +22 -8
- warp_beacon/telegram/bot.py +0 -1
- {warp_beacon-2.3.14.dist-info → warp_beacon-2.3.15.dist-info}/METADATA +1 -1
- {warp_beacon-2.3.14.dist-info → warp_beacon-2.3.15.dist-info}/RECORD +9 -9
- {warp_beacon-2.3.14.dist-info → warp_beacon-2.3.15.dist-info}/LICENSE +0 -0
- {warp_beacon-2.3.14.dist-info → warp_beacon-2.3.15.dist-info}/WHEEL +0 -0
- {warp_beacon-2.3.14.dist-info → warp_beacon-2.3.15.dist-info}/entry_points.txt +0 -0
- {warp_beacon-2.3.14.dist-info → warp_beacon-2.3.15.dist-info}/top_level.txt +0 -0
warp_beacon/__version__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
__version__ = "2.3.
|
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
|
-
|
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:
|
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), "
|
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:
|
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":
|
warp_beacon/telegram/bot.py
CHANGED
@@ -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:
|
@@ -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=
|
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=
|
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=
|
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.
|
45
|
-
warp_beacon-2.3.
|
46
|
-
warp_beacon-2.3.
|
47
|
-
warp_beacon-2.3.
|
48
|
-
warp_beacon-2.3.
|
49
|
-
warp_beacon-2.3.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|