sticker-convert 2.10.5__py3-none-any.whl → 2.10.7__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -535,7 +535,7 @@ class StickerConvert:
535
535
  rgba_array = yuva_to_rgba(frame_resized)
536
536
 
537
537
  # Remove pixels that was added to make dimensions even
538
- rgba_array = rgba_array[0:width_orig, 0:height_orig]
538
+ rgba_array = rgba_array[0:height_orig, 0:width_orig]
539
539
  self.frames_raw.append(rgba_array)
540
540
 
541
541
  def _frames_import_lottie(self) -> None:
@@ -622,12 +622,12 @@ class StickerConvert:
622
622
  self.res_h = height
623
623
 
624
624
  scaling = 1 - (self.opt_comp.padding_percent / 100)
625
- if width > height:
625
+ if width / self.res_w > height / self.res_h:
626
626
  width_new = int(self.res_w * scaling)
627
- height_new = int(height * self.res_w // width * scaling)
627
+ height_new = int(height * self.res_w / width * scaling)
628
628
  else:
629
629
  height_new = int(self.res_h * scaling)
630
- width_new = int(width * self.res_h // height * scaling)
630
+ width_new = int(width * self.res_h / height * scaling)
631
631
 
632
632
  with im.resize((width_new, height_new), resample=resample) as im_resized:
633
633
  with Image.new(
@@ -202,5 +202,7 @@ class CredFrame(LabelFrame):
202
202
  self.kakao_get_auth_btn.config(state=state)
203
203
  self.line_cookies_entry.config(state=state)
204
204
  self.line_get_auth_btn.config(state=state)
205
- self.viber_auth_lbl.config(state=state)
206
205
  self.viber_auth_entry.config(state=state)
206
+ self.viber_get_auth_btn.config(state=state)
207
+ self.discord_token_entry.config(state=state)
208
+ self.discord_get_auth_btn.config(state=state)
@@ -80,7 +80,6 @@ class CompOption(BaseOption):
80
80
  no_compress: Optional[bool] = None
81
81
  processes: int = ceil(cpu_count() / 2)
82
82
  animated: Optional[bool] = None
83
- square: Optional[bool] = None
84
83
 
85
84
  def to_dict(self) -> Dict[Any, Any]:
86
85
  return {
@@ -115,7 +114,6 @@ class CompOption(BaseOption):
115
114
  "no_compress": self.no_compress,
116
115
  "processes": self.processes,
117
116
  "animated": self.animated,
118
- "square": self.square,
119
117
  }
120
118
 
121
119
  def get_size_max(self) -> Tuple[Optional[int], Optional[int]]:
@@ -23,7 +23,6 @@ class CompressWastickers(UploadBase):
23
23
  self.base_spec.size_max_vid = 500000
24
24
  self.base_spec.duration_min = 8
25
25
  self.base_spec.duration_max = 10000
26
- self.base_spec.square = True
27
26
  self.base_spec.set_res(512)
28
27
  self.base_spec.set_format((".webp",))
29
28
 
@@ -25,7 +25,6 @@ class UploadSignal(UploadBase):
25
25
  self.base_spec.set_size_max(300000)
26
26
  self.base_spec.set_res_max(512)
27
27
  self.base_spec.duration_max = 3000
28
- self.base_spec.square = True
29
28
 
30
29
  self.png_spec = copy.deepcopy(self.base_spec)
31
30
  self.png_spec.set_format((".apng",))
@@ -24,7 +24,6 @@ class UploadTelegram(UploadBase):
24
24
 
25
25
  self.base_spec.size_max_img = 512000
26
26
  self.base_spec.size_max_vid = 256000
27
- self.base_spec.square = True
28
27
  self.base_spec.duration_max = 3000
29
28
  self.base_spec.set_res(512)
30
29
 
@@ -48,7 +47,7 @@ class UploadTelegram(UploadBase):
48
47
  self.opt_comp_merged.merge(self.base_spec)
49
48
 
50
49
  base_cover_spec = CompOption(
51
- size_max_img=128000, size_max_vid=32000, square=True, duration_max=3000
50
+ size_max_img=128000, size_max_vid=32000, duration_max=3000
52
51
  )
53
52
  base_cover_spec.set_res(100)
54
53
 
@@ -23,7 +23,6 @@ class UploadViber(UploadBase):
23
23
  super().__init__(*args, **kwargs)
24
24
 
25
25
  self.base_spec.set_size_max(0)
26
- self.base_spec.square = True
27
26
 
28
27
  self.png_spec = copy.deepcopy(self.base_spec)
29
28
  self.png_spec.set_res_max(490)
@@ -25,7 +25,6 @@ class XcodeImessage(UploadBase):
25
25
  self.base_spec.set_size_max(500000)
26
26
  self.base_spec.set_res(300)
27
27
  self.base_spec.set_format(("png", ".apng", ".gif", ".jpeg", "jpg"))
28
- self.base_spec.square = True
29
28
 
30
29
  self.small_spec = copy.deepcopy(self.base_spec)
31
30
 
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
  import os
3
+ from fractions import Fraction
3
4
  from pathlib import Path
4
5
  from typing import Optional, Tuple, Union
5
6
 
@@ -16,9 +17,7 @@ class FormatVerify:
16
17
  file_info = CodecInfo(file)
17
18
 
18
19
  return (
19
- FormatVerify.check_file_res(
20
- file, res=spec.get_res(), square=spec.square, file_info=file_info
21
- )
20
+ FormatVerify.check_file_res(file, res=spec.get_res(), file_info=file_info)
22
21
  and FormatVerify.check_file_fps(
23
22
  file, fps=spec.get_fps(), file_info=file_info
24
23
  )
@@ -48,7 +47,6 @@ class FormatVerify:
48
47
  res: Tuple[
49
48
  Tuple[Optional[int], Optional[int]], Tuple[Optional[int], Optional[int]]
50
49
  ],
51
- square: Optional[bool] = None,
52
50
  file_info: Optional[CodecInfo] = None,
53
51
  ) -> bool:
54
52
  if file_info:
@@ -65,8 +63,27 @@ class FormatVerify:
65
63
  return False
66
64
  if res[1][1] and file_height > res[1][1]:
67
65
  return False
68
- if square and file_height != file_width:
69
- return False
66
+
67
+ min_ratio = None
68
+ if res[0][0] and res[1][0]:
69
+ min_ratio = Fraction(res[0][0], res[1][0])
70
+
71
+ max_ratio = None
72
+ if res[0][1] and res[1][1]:
73
+ max_ratio = Fraction(res[0][1], res[1][1])
74
+
75
+ file_ratio = Fraction(file_width, file_height)
76
+
77
+ if min_ratio is not None and max_ratio is not None:
78
+ if min_ratio == max_ratio:
79
+ return True if file_ratio == min_ratio else False
80
+ else:
81
+ return True
82
+
83
+ if min_ratio is not None:
84
+ return True if file_ratio == min_ratio else False
85
+ if max_ratio is not None:
86
+ return True if file_ratio == max_ratio else False
70
87
 
71
88
  return True
72
89
 
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
- __version__ = "2.10.5"
3
+ __version__ = "2.10.7"
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sticker-convert
3
- Version: 2.10.5
3
+ Version: 2.10.7
4
4
  Summary: Convert (animated) stickers to/from WhatsApp, Telegram, Signal, Line, Kakao, Viber, Discord, iMessage. Written in Python.
5
5
  Author-email: laggykiller <chaudominic2@gmail.com>
6
6
  Maintainer-email: laggykiller <chaudominic2@gmail.com>
7
- License: GNU GENERAL PUBLIC LICENSE
7
+ License: GNU GENERAL PUBLIC LICENSE
8
8
  Version 2, June 1991
9
9
 
10
10
  Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
@@ -363,29 +363,29 @@ Classifier: Programming Language :: Python :: 3 :: Only
363
363
  Requires-Python: >=3.9
364
364
  Description-Content-Type: text/markdown
365
365
  License-File: LICENSE
366
- Requires-Dist: aiolimiter ~=1.1.0
367
- Requires-Dist: anyio ~=4.6.2.post1
368
- Requires-Dist: apngasm-python ~=1.3.1
369
- Requires-Dist: av ~=13.0.0
370
- Requires-Dist: beautifulsoup4 ~=4.12.3
371
- Requires-Dist: rookiepy ~=0.5.6
372
- Requires-Dist: httpx ~=0.27.2
373
- Requires-Dist: imagequant ~=1.1.2
374
- Requires-Dist: memory-tempfile ~=2.2.3
375
- Requires-Dist: mergedeep ~=1.3.4
376
- Requires-Dist: mini-racer ~=0.12.4
377
- Requires-Dist: numpy >=1.22.4
378
- Requires-Dist: Pillow ~=11.0.0
379
- Requires-Dist: pyoxipng ~=9.0.0
380
- Requires-Dist: python-telegram-bot ~=21.6
381
- Requires-Dist: psutil ~=6.1.0
382
- Requires-Dist: PyMemoryEditor ~=1.5.22
383
- Requires-Dist: requests ~=2.32.3
384
- Requires-Dist: rlottie-python ~=1.3.6
385
- Requires-Dist: signalstickers-client-fork-laggykiller ~=3.3.0.post2
386
- Requires-Dist: tqdm ~=4.66.6
387
- Requires-Dist: ttkbootstrap-fork-laggykiller ~=1.5.1
388
- Requires-Dist: websocket-client ~=1.8.0
366
+ Requires-Dist: aiolimiter~=1.1.0
367
+ Requires-Dist: anyio~=4.6.2.post1
368
+ Requires-Dist: apngasm_python~=1.3.1
369
+ Requires-Dist: av~=13.1.0
370
+ Requires-Dist: beautifulsoup4~=4.12.3
371
+ Requires-Dist: rookiepy~=0.5.6
372
+ Requires-Dist: httpx~=0.27.2
373
+ Requires-Dist: imagequant~=1.1.3
374
+ Requires-Dist: memory-tempfile~=2.2.3
375
+ Requires-Dist: mergedeep~=1.3.4
376
+ Requires-Dist: mini-racer~=0.12.4
377
+ Requires-Dist: numpy>=1.22.4
378
+ Requires-Dist: Pillow~=11.0.0
379
+ Requires-Dist: pyoxipng~=9.0.0
380
+ Requires-Dist: python-telegram-bot~=21.7
381
+ Requires-Dist: psutil~=6.1.0
382
+ Requires-Dist: PyMemoryEditor~=1.5.22
383
+ Requires-Dist: requests~=2.32.3
384
+ Requires-Dist: rlottie_python~=1.3.6
385
+ Requires-Dist: signalstickers-client-fork-laggykiller~=3.3.0.post2
386
+ Requires-Dist: tqdm~=4.67.1
387
+ Requires-Dist: ttkbootstrap-fork-laggykiller~=1.5.1
388
+ Requires-Dist: websocket_client~=1.8.0
389
389
 
390
390
  # sticker-convert
391
391
  ![imgs/banner.png](https://socialify.git.ci/laggykiller/sticker-convert/image?description=1&font=Inter&logo=https%3A%2F%2Fgithub.com%2Flaggykiller%2Fsticker-convert%2Fblob%2Fmaster%2Fsrc%2Fsticker_convert%2Fresources%2Fappicon.png%3Fraw%3Dtrue&name=1&owner=1&theme=Dark)
@@ -1,12 +1,12 @@
1
1
  sticker_convert/__init__.py,sha256=iQnv6UOOA69c3soAn7ZOnAIubTIQSUxtq1Uhh8xRWvU,102
2
2
  sticker_convert/__main__.py,sha256=elDCMvU27letiYs8jPUpxaCq5puURnvcDuqGsAAb6_w,592
3
3
  sticker_convert/cli.py,sha256=yI_56AfEi3Q2q8h1p8-l7wSK7wk3ktQNE_rwTAWwW1Q,20526
4
- sticker_convert/converter.py,sha256=ZppZcz6ZCmzx23RjtBWBQ3oLh2fTiPV1U3nEVWHt_xM,35947
4
+ sticker_convert/converter.py,sha256=gZIvF6WwYfnNyRkIjIR_VWphrBi5aU36f8uq8ouzVoE,35971
5
5
  sticker_convert/definitions.py,sha256=ZhP2ALCEud-w9ZZD4c3TDG9eHGPZyaAL7zPUsJAbjtE,2073
6
6
  sticker_convert/gui.py,sha256=IsVCXr5_6mzBgIgXtUICI3fcKu51J9WaLE9MBLrm5t4,33064
7
7
  sticker_convert/job.py,sha256=ae0DKz74nctDLSI0VU7BYI4dx3kwTM8ynky_aLspQVU,26491
8
- sticker_convert/job_option.py,sha256=lhcyioT6qPHrNYRBTv5wxPmmY9RkATo1-DE7-lzCwp0,7887
9
- sticker_convert/version.py,sha256=QKjwAE_8cGRepyqL78lyc5V0lA3fWVN5PDnuM4UMCE4,47
8
+ sticker_convert/job_option.py,sha256=HgoiZs9JBjki5_fjAp8l3y3kdAWvU7FEAgtPsy4MRt0,7818
9
+ sticker_convert/version.py,sha256=bYJEHSoUxGC_5BYlNNnbAGjQP4nl-tH0j9HcAjHIcLk,47
10
10
  sticker_convert/downloaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  sticker_convert/downloaders/download_base.py,sha256=a34JcNBgZ5yf6gZnxc-B5uNaKVUG-vs3sjOJnLneWsw,4468
12
12
  sticker_convert/downloaders/download_discord.py,sha256=HeQFjJ7igb5KOk0aXQAUEuJ9OoPKyiE_mAD2_AW9PDw,3435
@@ -21,7 +21,7 @@ sticker_convert/gui_components/frames/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
21
21
  sticker_convert/gui_components/frames/comp_frame.py,sha256=9k_UntKKi2G_g0byzoj1rdTqOq7q9mcnXiy799bYnr0,7257
22
22
  sticker_convert/gui_components/frames/config_frame.py,sha256=b3X4QAnGpde0OhthXHmjSyU_Yb5tYRUFXmy04Yi8Zmo,4316
23
23
  sticker_convert/gui_components/frames/control_frame.py,sha256=_XiOJ9JPUfiysDghGG04sEVLrXG9TMVlDZ60W0LhYVI,835
24
- sticker_convert/gui_components/frames/cred_frame.py,sha256=vnncW0Cd8QMV7QKyHjNmRdn5oA8zc45VuvulJV9sc3U,8492
24
+ sticker_convert/gui_components/frames/cred_frame.py,sha256=cfNUuJKy1h0fprZwo7pbaTswTVKnJQFt9K5nexeZCRo,8603
25
25
  sticker_convert/gui_components/frames/input_frame.py,sha256=5Vz1d6J1jkofvvzm43DxeIW_CjWfxa2QPYFnkAAiAfM,5040
26
26
  sticker_convert/gui_components/frames/output_frame.py,sha256=n2WLk22h61DoZli8WbFhd-h2CqWAebDXnBa051JBuOc,4260
27
27
  sticker_convert/gui_components/frames/progress_frame.py,sha256=LWUZg_iL7iiNTfu7N5Ct_pklZdghxihENi7DP9YozOE,4915
@@ -78,12 +78,12 @@ sticker_convert/resources/memdump_linux.sh,sha256=YbdX5C5RyCnoeDUE6JgTo8nQXKhrUw
78
78
  sticker_convert/resources/memdump_windows.ps1,sha256=CfyNSSEW3HJOkTu-mKrP3qh5aprN-1VCBfj-R1fELA0,302
79
79
  sticker_convert/resources/output.json,sha256=V4OseXEm3O16cAjHDVZRq8-SY-0_7cFFR_cyF-0Y_eQ,1570
80
80
  sticker_convert/uploaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
- sticker_convert/uploaders/compress_wastickers.py,sha256=SMPf1_ir30ZKO2ChHspDFuyaufx0XeVBVLOlHmawEdY,6021
81
+ sticker_convert/uploaders/compress_wastickers.py,sha256=j5gLXwRHjEtmV2Kqv_-KkU8eeW6cZMo3hoSMvT4PKVk,5984
82
82
  sticker_convert/uploaders/upload_base.py,sha256=uQupPn6r4zrlAzpKzzX7CgvZb69ATyrwPKahWOQj0ds,1203
83
- sticker_convert/uploaders/upload_signal.py,sha256=A3jOvPlgrD1f8gb_lPDjzcXv9zapQxB5DXO7GhDS6lA,6489
84
- sticker_convert/uploaders/upload_telegram.py,sha256=cb4FzYSF5oxs0QpilEyzepk2tcDC83AbCW-dEO6CLAk,15758
85
- sticker_convert/uploaders/upload_viber.py,sha256=DiY54RstBtVJEfp6rGo0cpABx0X2qI873pJ6tTH-Q9U,6189
86
- sticker_convert/uploaders/xcode_imessage.py,sha256=1gvOljf6kYsq_11tYhnF19Yf4oGY5y34te2DWBRMwf0,11254
83
+ sticker_convert/uploaders/upload_signal.py,sha256=UuJdzwGAQsKhtj2Pkn4-jvak4Set0XI5XG1pEH2KDvI,6452
84
+ sticker_convert/uploaders/upload_telegram.py,sha256=7_hfPhnSNY40vC2DEhOI53_-U-D3ZiXv5casNVK69Mk,15708
85
+ sticker_convert/uploaders/upload_viber.py,sha256=fkAnsVyWc8vyK24--O4LyPgT-xvt-sAoBfeSWyUOeEg,6152
86
+ sticker_convert/uploaders/xcode_imessage.py,sha256=5UObj4DvfJ6yL1m71grQeZtqhl4BiZmoYwsVeCO_Rrc,11217
87
87
  sticker_convert/utils/callback.py,sha256=spYUGlklOs1yPZAxoqwOWgR1sdimpfM8a27if3TaVYk,6155
88
88
  sticker_convert/utils/chrome_remotedebug.py,sha256=tLc1C1u7U3kJvAi1WFK5_3gKcdfg4x6SAkTIX2g87VE,4765
89
89
  sticker_convert/utils/emoji.py,sha256=AqB26JY-PkYzNwPLReSnqLiQKe-bR9UXnLclAbgubJ8,367
@@ -104,10 +104,10 @@ sticker_convert/utils/files/sanitize_filename.py,sha256=HBklPGsHRJjFQUIC5rYTQsUr
104
104
  sticker_convert/utils/media/apple_png_normalize.py,sha256=LbrQhc7LlYX4I9ek4XJsZE4l0MygBA1jB-PFiYLEkzk,3657
105
105
  sticker_convert/utils/media/codec_info.py,sha256=XoEWBfPWTzr4zSVQIU1XF1yh5viHxH5FytNEpdZR38c,14874
106
106
  sticker_convert/utils/media/decrypt_kakao.py,sha256=4wq9ZDRnFkx1WmFZnyEogBofiLGsWQM_X69HlA36578,1947
107
- sticker_convert/utils/media/format_verify.py,sha256=MH68GLJfXeL8WFT8emtj355K5BLAtUX64tQ59nugx2c,5673
108
- sticker_convert-2.10.5.dist-info/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
109
- sticker_convert-2.10.5.dist-info/METADATA,sha256=T9zrmcX3zcfFgAZB51BNRLwp_43BEGGqZ-LcCIl_fpY,52498
110
- sticker_convert-2.10.5.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
111
- sticker_convert-2.10.5.dist-info/entry_points.txt,sha256=MNJ7XyC--ugxi5jS1nzjDLGnxCyLuaGdsVLnJhDHCqs,66
112
- sticker_convert-2.10.5.dist-info/top_level.txt,sha256=r9vfnB0l1ZnH5pTH5RvkobnK3Ow9m0RsncaOMAtiAtk,16
113
- sticker_convert-2.10.5.dist-info/RECORD,,
107
+ sticker_convert/utils/media/format_verify.py,sha256=oM32P186tWe9YxvBQRPr8D3FEmBN3b2rEe_2S_MwxyQ,6236
108
+ sticker_convert-2.10.7.dist-info/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
109
+ sticker_convert-2.10.7.dist-info/METADATA,sha256=0emOJ8oIvhGydLxuGL66DOk2MnUyxe8SdPm6RR-JbaM,52495
110
+ sticker_convert-2.10.7.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
111
+ sticker_convert-2.10.7.dist-info/entry_points.txt,sha256=MNJ7XyC--ugxi5jS1nzjDLGnxCyLuaGdsVLnJhDHCqs,66
112
+ sticker_convert-2.10.7.dist-info/top_level.txt,sha256=r9vfnB0l1ZnH5pTH5RvkobnK3Ow9m0RsncaOMAtiAtk,16
113
+ sticker_convert-2.10.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.3.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5