warp-beacon 2.2.17__py3-none-any.whl → 2.2.19__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.2.17"
1
+ __version__ = "2.2.19"
2
2
 
@@ -89,6 +89,7 @@ class InstagramScraper(ScraperAbstract):
89
89
  self.load_session()
90
90
  self._download_hndlr(self.cl.get_timeline_feed)
91
91
  self._download_hndlr(self.cl.get_reels_tray_feed)
92
+ self.safe_write_session()
92
93
 
93
94
  def scrap(self, url: str) -> tuple[str]:
94
95
  self.load_session()
@@ -283,6 +284,9 @@ class InstagramScraper(ScraperAbstract):
283
284
  raise NotFound(extract_exception_message(e))
284
285
  except IGUnknownError as e:
285
286
  raise UnknownError(extract_exception_message(e))
287
+
288
+ self.safe_write_session()
289
+
286
290
  return res
287
291
 
288
292
  def email_challenge_resolver(self, username: str) -> Optional[str]:
@@ -103,30 +103,28 @@ class YoutubeAbstract(ScraperAbstract):
103
103
  if "yt_download_" in i:
104
104
  os.unlink("%s/%s" % (self.DOWNLOAD_DIR, i))
105
105
 
106
- def calculate_size(self, aspect_ratio_width: int, aspect_ratio_height: int, max_width: int=1280, max_height: int=1280, min_width: int=320, min_height: int=320, prefer_min_size: bool=False) -> tuple:
107
- # check ratio
106
+ def calculate_size_with_padding(self, image: Image, aspect_ratio_width: int, aspect_ratio_height: int, target_size: tuple=(320, 320), background_color: tuple=(0, 0, 0)) -> Image:
108
107
  aspect_ratio = aspect_ratio_width / aspect_ratio_height
109
-
110
- if prefer_min_size:
111
- # Probing min width and calculating height
112
- width = min_width
113
- height = int(width / aspect_ratio)
114
-
115
- # if height is less than min, recalculatng based on min height
116
- if height < min_height:
117
- height = min_height
118
- width = int(height * aspect_ratio)
119
- else:
120
- # Probing max width and calculating height
121
- width = max_width
108
+ target_width, target_height = target_size
109
+
110
+ height = target_height
111
+ width = int(height * aspect_ratio)
112
+
113
+ if width > target_width:
114
+ width = target_width
122
115
  height = int(width / aspect_ratio)
123
-
124
- # if height exceeds max height Telegram, recalculatng based on max height
125
- if height > max_height:
126
- height = max_height
127
- width = int(height * aspect_ratio)
128
116
 
129
- return width, height
117
+ new_image = Image.new("RGB", target_size, background_color)
118
+ image.thumbnail(target_size, Image.Resampling.LANCZOS)
119
+
120
+ if aspect_ratio_height > 4:
121
+ image = image.resize((image.size[0], image.size[1]+new_image.size[1]))
122
+ height += new_image.size[1] - 20
123
+
124
+ paste_position = ((target_width - width) // 2, (target_height - height) // 2)
125
+ new_image.paste(image, paste_position)
126
+
127
+ return new_image
130
128
 
131
129
  def aspect_ratio(self, size: tuple) -> tuple:
132
130
  gcd = math.gcd(size[0], size[1])
@@ -143,16 +141,12 @@ class YoutubeAbstract(ScraperAbstract):
143
141
  if response.status_code == 200:
144
142
  image = Image.open(io.BytesIO(response.content))
145
143
  ratio = self.aspect_ratio(image.size)
146
- desired_size = self.calculate_size(ratio[0], ratio[1])
147
- new_image = Image.new("RGB", desired_size, (255, 255, 255))
148
- image = MediaInfoAbstract.shrink_image_to_fit(image, size=desired_size)
149
- image_position = (
150
- (desired_size[0] - image.size[0]) // 2,
151
- (desired_size[1] - image.size[1]) // 2
152
- )
153
- new_image.paste(image, image_position)
144
+ logging.info("thumb ratio: '%s'", ratio)
145
+ new_image = self.calculate_size_with_padding(image, ratio[0], ratio[1])
146
+ logging.info("thumb size: '%s'", new_image.size)
154
147
  io_buf = io.BytesIO()
155
148
  new_image.save(io_buf, format='JPEG', subsampling=0, quality=100, progressive=True, optimize=False)
149
+ logging.info("thumb size: %d kb", io_buf.getbuffer().nbytes / 1024)
156
150
  io_buf.seek(0)
157
151
  return io_buf
158
152
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: warp_beacon
3
- Version: 2.2.17
3
+ Version: 2.2.19
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
@@ -3,7 +3,7 @@ lib/systemd/system/warp_beacon.service,sha256=lPmHqLqcI2eIV7nwHS0qcALQrznixqJuww
3
3
  var/warp_beacon/accounts.json,sha256=rKFQM_b9eoDS4mJ1B_SZNolPLXx1SQdQMdY2F_ZcBt8,1523
4
4
  var/warp_beacon/placeholder.gif,sha256=cE5CGJVaop4Sx21zx6j4AyoHU0ncmvQuS2o6hJfEH88,6064
5
5
  warp_beacon/__init__.py,sha256=_rThNODmz0nDp_n4mWo_HKaNFE5jk1_7cRhHyYaencI,163
6
- warp_beacon/__version__.py,sha256=9JdAAUpmDQmtL5lYORdeGMeA9yanV3HMXq1GWoSGJ3A,24
6
+ warp_beacon/__version__.py,sha256=vxBl0dBf1STjUFxsMoaYE3Z0WPuhhnKF1AVKxgwxS98,24
7
7
  warp_beacon/warp_beacon.py,sha256=7KEtZDj-pdhtl6m-zFLsSojs1ZR4o7L0xbqtdmYPvfE,342
8
8
  warp_beacon/compress/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  warp_beacon/compress/video.py,sha256=_PDMVYCyzLYxHv1uZmmzGcG_8rjaZr7BTXsXTTy_oS4,2846
@@ -24,9 +24,9 @@ warp_beacon/scraper/abstract.py,sha256=aNZ9ypF9B8BjflcIwi-7wEzIqF-XPeF0xvfX9CP_i
24
24
  warp_beacon/scraper/account_selector.py,sha256=x1TAqHVWtxvhzKCTBERpHoUJ0fOcnswStQjEcDxkrFU,2960
25
25
  warp_beacon/scraper/exceptions.py,sha256=lHsPrYy5iYnHsIdUHqRxZmzlqrkNj_TS4TkiTJfWhTs,1326
26
26
  warp_beacon/scraper/instagram/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- warp_beacon/scraper/instagram/instagram.py,sha256=iT66IM7nsbVDWQzBW-CJUWDBjoBbRZH4BHx6TJw3oqo,13517
27
+ warp_beacon/scraper/instagram/instagram.py,sha256=PpEammUP_InX5xj-sFJY6DkAUfIut2rqQsXd0uCtKOo,13579
28
28
  warp_beacon/scraper/youtube/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- warp_beacon/scraper/youtube/abstract.py,sha256=8YAn0LPoPCXlFD9G67vIr-ltMckJGrYowwphwPSPaGg,7791
29
+ warp_beacon/scraper/youtube/abstract.py,sha256=_D6NecCWlIO-Lt-t495hvpAeJrrc6f2zctrUqSVH-JQ,7635
30
30
  warp_beacon/scraper/youtube/music.py,sha256=nbTDFdgXGbTNqttE828DEgvSc8-SuAsQAHeqUwU6yFM,1484
31
31
  warp_beacon/scraper/youtube/shorts.py,sha256=RqMYDq4XHChtp-LdlxXyHej4h3NI3Qi9T8USxwk-pIk,1177
32
32
  warp_beacon/scraper/youtube/youtube.py,sha256=JvN5pVz0jtxCY9FGMl1dIg5Ccr2Kulaoxtym0Vb1QwQ,2224
@@ -37,9 +37,9 @@ warp_beacon/telegram/handlers.py,sha256=xSNG_v4D4FaA5q1_5wXvJkjcDUhy5GaQnfpijJZp
37
37
  warp_beacon/telegram/placeholder_message.py,sha256=32U-R_IMPRJd-S5UwlpemLkArJOxCmO7whcynduSbMA,6418
38
38
  warp_beacon/telegram/utils.py,sha256=CeWXMwyzv2l4Af6I-wW2ySU490c-5k82sBhkjabv0n4,2452
39
39
  warp_beacon/uploader/__init__.py,sha256=rsUkzzmtaeQY-kNkcIiPsrayS9idFKY3hBC71mR19XE,4743
40
- warp_beacon-2.2.17.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
41
- warp_beacon-2.2.17.dist-info/METADATA,sha256=TCcK6ntOMtnv2iLIt6Q-2RdvEV8_EE6FNYbu9w8jf5I,21251
42
- warp_beacon-2.2.17.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
43
- warp_beacon-2.2.17.dist-info/entry_points.txt,sha256=eSB61Rb89d56WY0O-vEIQwkn18J-4CMrJcLA_R_8h3g,119
44
- warp_beacon-2.2.17.dist-info/top_level.txt,sha256=ALb_Ft_eG-OY4_m0TWUifNUOZsrx483L-zw7G7vqXoc,971
45
- warp_beacon-2.2.17.dist-info/RECORD,,
40
+ warp_beacon-2.2.19.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
41
+ warp_beacon-2.2.19.dist-info/METADATA,sha256=_aQMdTR_yAc7RP-kYMbFg9HJl151xYn_HYauD9EwPfQ,21251
42
+ warp_beacon-2.2.19.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
43
+ warp_beacon-2.2.19.dist-info/entry_points.txt,sha256=eSB61Rb89d56WY0O-vEIQwkn18J-4CMrJcLA_R_8h3g,119
44
+ warp_beacon-2.2.19.dist-info/top_level.txt,sha256=ALb_Ft_eG-OY4_m0TWUifNUOZsrx483L-zw7G7vqXoc,971
45
+ warp_beacon-2.2.19.dist-info/RECORD,,