sticker-convert 2.12.3__py3-none-any.whl → 2.12.4__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.
sticker_convert/cli.py CHANGED
@@ -139,6 +139,7 @@ class CLI:
139
139
  "cache_dir",
140
140
  "scale_filter",
141
141
  "quantize_method",
142
+ "chromium_path",
142
143
  )
143
144
  flags_comp_bool = ("fake_vid",)
144
145
  keyword_args: Dict[str, Any]
@@ -427,6 +428,7 @@ class CLI:
427
428
  fake_vid=self.compression_presets[preset]["fake_vid"]
428
429
  if args.fake_vid is None
429
430
  else args.fake_vid,
431
+ chromium_path=args.chromium_path,
430
432
  cache_dir=args.cache_dir,
431
433
  scale_filter=self.compression_presets[preset]["scale_filter"]
432
434
  if args.scale_filter is None
@@ -435,7 +435,11 @@ class StickerConvert:
435
435
  width = self.codec_info_orig.res[0]
436
436
  height = self.codec_info_orig.res[1]
437
437
 
438
- chrome_path = CRD.get_chrome_path()
438
+ chrome_path: Optional[str]
439
+ if self.opt_comp.chromium_path:
440
+ chrome_path = self.opt_comp.chromium_path
441
+ else:
442
+ chrome_path = CRD.get_chrome_path()
439
443
  args = [
440
444
  "--headless",
441
445
  "--kiosk",
sticker_convert/gui.py CHANGED
@@ -137,6 +137,7 @@ class GUI(Window):
137
137
  self.fake_vid_var = BooleanVar()
138
138
  self.scale_filter_var = StringVar(self)
139
139
  self.quantize_method_var = StringVar(self)
140
+ self.chromium_path_var = StringVar(self)
140
141
  self.cache_dir_var = StringVar(self)
141
142
  self.default_emoji_var = StringVar(self)
142
143
  self.steps_var = IntVar(self)
@@ -321,6 +322,7 @@ class GUI(Window):
321
322
  "comp": {
322
323
  "no_compress": self.no_compress_var.get(),
323
324
  "preset": self.comp_preset_var.get(),
325
+ "chromium_path": self.chromium_path_var.get(),
324
326
  "cache_dir": self.cache_dir_var.get(),
325
327
  "processes": self.processes_var.get(),
326
328
  },
@@ -377,6 +379,9 @@ class GUI(Window):
377
379
  self.compression_presets["custom"], comp_custom
378
380
  )
379
381
  self.cache_dir_var.set(self.settings.get("comp", {}).get("cache_dir", ""))
382
+ self.chromium_path_var.set(
383
+ self.settings.get("comp", {}).get("chromium_path", "")
384
+ )
380
385
  self.processes_var.set(
381
386
  self.settings.get("comp", {}).get("processes", ceil(cpu_count() / 2))
382
387
  )
@@ -568,6 +573,9 @@ class GUI(Window):
568
573
  fake_vid=self.fake_vid_var.get(),
569
574
  scale_filter=self.scale_filter_var.get(),
570
575
  quantize_method=self.quantize_method_var.get(),
576
+ chromium_path=self.chromium_path_var.get()
577
+ if self.chromium_path_var.get() != ""
578
+ else None,
571
579
  cache_dir=self.cache_dir_var.get()
572
580
  if self.cache_dir_var.get() != ""
573
581
  else None,
@@ -293,6 +293,17 @@ class AdvancedCompressionWindow(BaseWindow):
293
293
  bootstyle="secondary", # type: ignore
294
294
  )
295
295
 
296
+ self.chromium_path_help_btn = self.add_help_btn(
297
+ self.gui.help["comp"]["chromium_path"]
298
+ )
299
+ self.chromium_path_lbl = Label(
300
+ self.frame_advcomp, text="Chromium/Chrome directory"
301
+ )
302
+ self.chromium_path_entry = Entry(
303
+ self.frame_advcomp, textvariable=self.gui.chromium_path_var, width=30
304
+ )
305
+ self.chromium_path_entry.bind("<Button-3><ButtonRelease-3>", RightClicker)
306
+
296
307
  self.cache_dir_help_btn = self.add_help_btn(self.gui.help["comp"]["cache_dir"])
297
308
  self.cache_dir_lbl = Label(self.frame_advcomp, text="Custom cache directory")
298
309
  self.cache_dir_entry = Entry(
@@ -412,6 +423,12 @@ class AdvancedCompressionWindow(BaseWindow):
412
423
  column=2, row=r, columnspan=4, sticky="nes", padx=3, pady=3
413
424
  )
414
425
  r += 1
426
+ self.chromium_path_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
427
+ self.chromium_path_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
428
+ self.chromium_path_entry.grid(
429
+ column=2, row=r, columnspan=4, sticky="nes", padx=3, pady=3
430
+ )
431
+ r += 1
415
432
  self.cache_dir_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
416
433
  self.cache_dir_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
417
434
  self.cache_dir_entry.grid(
@@ -1,6 +1,4 @@
1
1
  #!/usr/bin/env python3
2
- import platform
3
- import subprocess
4
2
  from functools import partial
5
3
  from threading import Thread
6
4
  from typing import Any, Optional
@@ -37,7 +35,7 @@ class KakaoGetAuthWindow(BaseWindow):
37
35
  # Method 1 frame
38
36
  self.explanation1_1_lbl = Label(
39
37
  self.frame_from_desktop,
40
- text="This will get Kakao auth_token from Kakao Desktop (Windows only)",
38
+ text="This will get Kakao auth_token from Kakao Desktop",
41
39
  justify="left",
42
40
  anchor="w",
43
41
  )
@@ -70,14 +68,12 @@ class KakaoGetAuthWindow(BaseWindow):
70
68
  command=self.cb_launch_desktop,
71
69
  width=24,
72
70
  bootstyle="secondary", # type: ignore
73
- state="normal" if platform.system() == "Windows" else "disabled",
74
71
  )
75
72
  self.get_auth_desktop_btn = Button(
76
73
  self.frame_from_desktop,
77
74
  text="Get auth_token",
78
75
  command=self.cb_from_desktop,
79
76
  width=24,
80
- state="normal" if platform.system() == "Windows" else "disabled",
81
77
  )
82
78
 
83
79
  self.explanation1_1_lbl.grid(
@@ -270,7 +266,7 @@ class KakaoGetAuthWindow(BaseWindow):
270
266
  bin_path = m.get_kakao_desktop()
271
267
 
272
268
  if bin_path is not None:
273
- subprocess.Popen([bin_path])
269
+ m.launch_kakao(bin_path)
274
270
  else:
275
271
  self.cb_msg_block_kakao(
276
272
  "Error: Cannot launch Kakao Desktop. Is it installed?"
@@ -75,6 +75,7 @@ class CompOption(BaseOption):
75
75
  fake_vid: Optional[bool] = None
76
76
  quantize_method: Optional[str] = None
77
77
  scale_filter: Optional[str] = None
78
+ chromium_path: Optional[str] = None
78
79
  cache_dir: Optional[str] = None
79
80
  default_emoji: str = "😀"
80
81
  no_compress: Optional[bool] = None
@@ -109,6 +110,7 @@ class CompOption(BaseOption):
109
110
  "fake_vid": self.fake_vid,
110
111
  "quantize_method": self.quantize_method,
111
112
  "scale_filter": self.scale_filter,
113
+ "chromium_path": self.chromium_path,
112
114
  "cache_dir": self.cache_dir,
113
115
  "default_emoji": self.default_emoji,
114
116
  "no_compress": self.no_compress,
@@ -52,6 +52,7 @@
52
52
  "scale_filter": "Set scale filter. Default as bicubic. Valid options are:\n- nearest = Use nearest neighbour (Suitable for pixel art)\n- box = Similar to nearest, but better downscaling\n- bilinear = Linear interpolation\n- hamming = Similar to bilinear, but better downscaling\n- bicubic = Cubic spline interpolation\n- lanczos = A high-quality downsampling filter",
53
53
  "quantize_method": "Set method for quantizing image. Default as imagequant. Valid options are:\n- imagequant = Best quality but slow\n- fastoctree = Fast but image looks chunky\n- none = No image quantizing, large image size as result",
54
54
  "cache_dir": "Set custom cache directory.\nUseful for debugging, or speed up conversion if cache_dir is on RAM disk.",
55
+ "chromium_path": "Set Chromium(-based)/Chrome browser path.\nRequired for converting from SVG files.\nLeave blank to auto detect",
55
56
  "default_emoji": "Set the default emoji for uploading Signal and Telegram sticker packs."
56
57
  },
57
58
  "cred": {
@@ -18,21 +18,33 @@ then login to Kakao Desktop and try again."""
18
18
  MSG_NO_AUTH = """Kakao Desktop installed,
19
19
  but kakao_auth not found.
20
20
  Please login to Kakao Desktop and try again."""
21
+ MSG_SIP_ENABLED = """You need to disable SIP:
22
+ 1. Restart computer in Recovery mode
23
+ 2. Launch Terminal from the Utilities menu
24
+ 3. Run the command `csrutil disable`
25
+ 4. Restart your computer"""
21
26
  MSG_LAUNCH_FAIL = "Failed to launch Kakao"
22
27
  MSG_PERMISSION_ERROR = "Failed to read Kakao process memory"
23
- MSG_UNSUPPORTED = "Only Windows is supported for this method"
24
28
 
25
29
 
26
30
  class GetKakaoDesktopAuth:
27
31
  def __init__(self, cb_ask_str: Callable[..., str] = input):
28
32
  self.cb_ask_str = cb_ask_str
29
33
 
34
+ def launch_kakao(self, kakao_bin_path: str):
35
+ if platform.system() == "Windows":
36
+ subprocess.Popen([kakao_bin_path])
37
+ elif platform.system() == "Darwin":
38
+ subprocess.Popen(["open", kakao_bin_path])
39
+ else:
40
+ subprocess.Popen(["wine", kakao_bin_path])
41
+
30
42
  def relaunch_kakao(self, kakao_bin_path: str) -> Optional[int]:
31
43
  killed = killall("kakaotalk")
32
44
  if killed:
33
45
  time.sleep(5)
34
46
 
35
- subprocess.Popen([kakao_bin_path])
47
+ self.launch_kakao(kakao_bin_path)
36
48
  time.sleep(20)
37
49
 
38
50
  return find_pid_by_name("kakaotalk")
@@ -54,7 +66,7 @@ class GetKakaoDesktopAuth:
54
66
  try:
55
67
  with OpenProcess(pid=int(kakao_pid)) as process:
56
68
  for address in process.search_by_value( # type: ignore
57
- str, 15, "\x00authorization\x00"
69
+ str, 15, "authorization: "
58
70
  ):
59
71
  auth_token_addr = cast(int, address) + 15
60
72
  auth_token_bytes = process.read_process_memory(
@@ -127,11 +139,77 @@ class GetKakaoDesktopAuth:
127
139
 
128
140
  return auth_token, msg
129
141
 
130
- def get_kakao_desktop(self) -> Optional[str]:
131
- kakao_bin_path = os.path.expandvars(
132
- "%programfiles(x86)%\\Kakao\\KakaoTalk\\KakaoTalk.exe"
142
+ def get_auth_darwin(self, kakao_bin_path: str) -> Tuple[Optional[str], str]:
143
+ killall("kakaotalk")
144
+
145
+ subprocess.run(
146
+ [
147
+ "lldb",
148
+ kakao_bin_path,
149
+ "-o",
150
+ "b ptrace",
151
+ "-o",
152
+ "r",
153
+ "-o",
154
+ "thread return",
155
+ "-o",
156
+ "con",
157
+ "-o",
158
+ "process save-core /tmp/memdump.kakaotalk.dmp",
159
+ "-o",
160
+ "con",
161
+ "-o",
162
+ "quit",
163
+ ],
164
+ stdout=subprocess.DEVNULL,
165
+ stderr=subprocess.DEVNULL,
133
166
  )
134
- if Path(kakao_bin_path).is_file():
167
+
168
+ with open("/tmp/memdump.kakaotalk.dmp", "rb") as f:
169
+ mem = f.read()
170
+
171
+ os.remove("/tmp/memdump.kakaotalk.dmp")
172
+
173
+ auth_token = None
174
+ for i in re.finditer(b"]mac/", mem):
175
+ auth_token_term = i.start()
176
+
177
+ auth_token_bytes = mem[auth_token_term - 200 : auth_token_term]
178
+ auth_token_start = auth_token_bytes.find(b"application/json_\x10\x8a") + 19
179
+ if auth_token_start == -1:
180
+ continue
181
+ try:
182
+ auth_token_candidate = auth_token_bytes[auth_token_start:].decode(
183
+ encoding="ascii"
184
+ )
185
+ except UnicodeDecodeError:
186
+ continue
187
+
188
+ if 150 > len(auth_token_candidate) > 100:
189
+ auth_token = auth_token_candidate
190
+ break
191
+
192
+ if auth_token is None:
193
+ return None, MSG_NO_AUTH
194
+ else:
195
+ msg = "Got auth_token successfully:\n"
196
+ msg += f"{auth_token=}\n"
197
+
198
+ return auth_token, msg
199
+
200
+ def get_kakao_desktop(self) -> Optional[str]:
201
+ if platform.system() == "Windows":
202
+ kakao_bin_path = os.path.expandvars(
203
+ "%programfiles(x86)%\\Kakao\\KakaoTalk\\KakaoTalk.exe"
204
+ )
205
+ elif platform.system() == "Darwin":
206
+ kakao_bin_path = "/Applications/KakaoTalk.app"
207
+ else:
208
+ kakao_bin_path = os.path.expanduser(
209
+ "~/.wine/drive_c/Program Files (x86)/Kakao/KakaoTalk/KakaoTalk.exe"
210
+ )
211
+
212
+ if Path(kakao_bin_path).exists():
135
213
  return kakao_bin_path
136
214
 
137
215
  return None
@@ -140,15 +218,6 @@ class GetKakaoDesktopAuth:
140
218
  self,
141
219
  kakao_bin_path: Optional[str] = None,
142
220
  ) -> Tuple[Optional[str], str]:
143
- if platform.system() != "Windows":
144
- return None, MSG_UNSUPPORTED
145
-
146
- if not kakao_bin_path:
147
- kakao_bin_path = self.get_kakao_desktop()
148
-
149
- if not kakao_bin_path:
150
- return None, MSG_NO_BIN
151
-
152
221
  # get_auth_by_dump()
153
222
  # + Fast
154
223
  # - Requires admin
@@ -158,23 +227,38 @@ class GetKakaoDesktopAuth:
158
227
  # - Slow
159
228
  # - Cannot run on macOS
160
229
 
161
- # If admin, prefer get_auth_by_dump() over get_auth_by_pme(), vice versa
162
- methods: List[Callable[[str, bool], Tuple[Optional[str], str]]] = []
163
- relaunch = True
164
- kakao_auth = None
165
- msg = ""
166
-
167
- pme_present = importlib.util.find_spec("PyMemoryEditor") is not None
168
- methods.append(self.get_auth_by_dump)
169
- if pme_present:
170
- methods.append(self.get_auth_by_pme)
171
- if check_admin() is False:
172
- methods.reverse()
173
-
174
- for method in methods:
175
- kakao_auth, msg = method(kakao_bin_path, relaunch)
176
- relaunch = False
177
- if kakao_auth is not None:
178
- break
230
+ if not kakao_bin_path:
231
+ kakao_bin_path = self.get_kakao_desktop()
232
+
233
+ if not kakao_bin_path:
234
+ return None, MSG_NO_BIN
235
+
236
+ if platform.system() != "Darwin":
237
+ # If admin, prefer get_auth_by_dump() over get_auth_by_pme(), vice versa
238
+ methods: List[Callable[[str, bool], Tuple[Optional[str], str]]] = []
239
+ relaunch = True
240
+ kakao_auth = None
241
+ msg = ""
242
+
243
+ pme_present = importlib.util.find_spec("PyMemoryEditor") is not None
244
+ methods.append(self.get_auth_by_dump)
245
+ if pme_present:
246
+ methods.append(self.get_auth_by_pme)
247
+ if check_admin() is False:
248
+ methods.reverse()
249
+
250
+ for method in methods:
251
+ kakao_auth, msg = method(kakao_bin_path, relaunch)
252
+ relaunch = False
253
+ if kakao_auth is not None:
254
+ break
255
+ else:
256
+ csrutil_status = subprocess.run(
257
+ ["csrutil", "status"], capture_output=True, text=True
258
+ ).stdout
259
+
260
+ if "enabled" in csrutil_status:
261
+ return None, MSG_SIP_ENABLED
262
+ kakao_auth, msg = self.get_auth_darwin(kakao_bin_path)
179
263
 
180
264
  return kakao_auth, msg
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
- __version__ = "2.12.3"
3
+ __version__ = "2.12.4"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sticker-convert
3
- Version: 2.12.3
3
+ Version: 2.12.4
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>
@@ -365,7 +365,7 @@ Description-Content-Type: text/markdown
365
365
  License-File: LICENSE
366
366
  Requires-Dist: aiolimiter~=1.2.1
367
367
  Requires-Dist: anyio~=4.9.0
368
- Requires-Dist: apngasm_python~=1.3.1
368
+ Requires-Dist: apngasm_python~=1.3.2
369
369
  Requires-Dist: av~=13.1.0
370
370
  Requires-Dist: beautifulsoup4~=4.13.3
371
371
  Requires-Dist: cryptg~=0.5.0.post0
@@ -377,12 +377,12 @@ Requires-Dist: mergedeep~=1.3.4
377
377
  Requires-Dist: numpy>=1.22.4
378
378
  Requires-Dist: Pillow~=11.1.0
379
379
  Requires-Dist: pybrowsers~=0.7.0
380
- Requires-Dist: pyoxipng~=9.0.0
380
+ Requires-Dist: pyoxipng~=9.1.0
381
381
  Requires-Dist: python-telegram-bot~=22.0
382
382
  Requires-Dist: psutil~=7.0.0
383
383
  Requires-Dist: PyMemoryEditor~=1.5.22
384
384
  Requires-Dist: requests~=2.32.3
385
- Requires-Dist: rlottie_python~=1.3.6
385
+ Requires-Dist: rlottie_python~=1.3.7
386
386
  Requires-Dist: signalstickers-client-fork-laggykiller~=3.3.0.post2
387
387
  Requires-Dist: socksio~=1.0.0
388
388
  Requires-Dist: telethon~=1.39.0
@@ -1,12 +1,12 @@
1
1
  sticker_convert/__init__.py,sha256=iQnv6UOOA69c3soAn7ZOnAIubTIQSUxtq1Uhh8xRWvU,102
2
2
  sticker_convert/__main__.py,sha256=elDCMvU27letiYs8jPUpxaCq5puURnvcDuqGsAAb6_w,592
3
- sticker_convert/cli.py,sha256=MWzq9QJJ7HYBD73DmSgRIPo-u58mTGEIoUUpJKNjI0Q,22358
4
- sticker_convert/converter.py,sha256=FVHsWKIIzewkxZ2apOFgPqEvzFSXPmQeAcnFEY7vYDM,39446
3
+ sticker_convert/cli.py,sha256=Mj_cN4CnvOBTie6vJmN-e6EostNSiRts5GR38mvgm-Q,22433
4
+ sticker_convert/converter.py,sha256=b3lJX2eTJ8OMFgAjQzbv2E8lbCclgo3yJ1dtBXmur28,39593
5
5
  sticker_convert/definitions.py,sha256=BqROmOvqIqw8ANaqZXIxJAXGD0HgjAvCfFouQ4SaWHc,2254
6
- sticker_convert/gui.py,sha256=D9L-lFif4P4MANglis_wpjkzlUuGPuq8AybWGyPVP8E,33824
6
+ sticker_convert/gui.py,sha256=Lvuu9J1MPdokjlHpLctqsRTOnWv9jXvy2IjJQt0FRAk,34177
7
7
  sticker_convert/job.py,sha256=gEd6yF8WPUR1_7q9SVhnwdD5usrDxwowNnR5q9uS8Yc,28011
8
- sticker_convert/job_option.py,sha256=NysZtKVVG7EzRkLnVaeYJY0uNlYKFmjoststB1cvVrY,8020
9
- sticker_convert/version.py,sha256=8-CYgCWklTwkUtd4SiyvYPiHKcvCUejjHFpw4ScOsls,47
8
+ sticker_convert/job_option.py,sha256=yI_uKWJEAul2XTC6pucz9PfW0iNwwOr0aVC-PAHkMA4,8109
9
+ sticker_convert/version.py,sha256=v342n9uw6gNve6meN4iu5vMOMDrABk5g9HB3zQjA5N8,47
10
10
  sticker_convert/downloaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  sticker_convert/downloaders/download_base.py,sha256=MI5pCT_tkfoaFlrD1oNynDj1Rv1CK0APuNVElTEAEis,5110
12
12
  sticker_convert/downloaders/download_discord.py,sha256=6AFpLAYL2hRvVcsqUtzDUC31U66U02ZcnKXDnZRi2jk,3496
@@ -27,10 +27,10 @@ sticker_convert/gui_components/frames/output_frame.py,sha256=n2WLk22h61DoZli8WbF
27
27
  sticker_convert/gui_components/frames/progress_frame.py,sha256=LWUZg_iL7iiNTfu7N5Ct_pklZdghxihENi7DP9YozOE,4915
28
28
  sticker_convert/gui_components/frames/right_clicker.py,sha256=dGIvSzEChrkguR80pzUemBNJ39uzJjVJQKeDNUoW3Gk,721
29
29
  sticker_convert/gui_components/windows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- sticker_convert/gui_components/windows/advanced_compression_window.py,sha256=DT5SgSWWKXRbOD8fJK-9kch9U_P1N3ox6-bphlPr0Ss,31964
30
+ sticker_convert/gui_components/windows/advanced_compression_window.py,sha256=djJNyPodBmNhW0vHvdg6xAd7LYkVm9UINMHrRXVmr_k,32718
31
31
  sticker_convert/gui_components/windows/base_window.py,sha256=xBE1peGMPvWsdrFej0CJUVhmQ57GJGvz-cX03nIIhkE,1108
32
32
  sticker_convert/gui_components/windows/discord_get_auth_window.py,sha256=pUSarkXXmSr01VW9h4LgpJy7F53gw7X6ZNqunoFG-ys,2762
33
- sticker_convert/gui_components/windows/kakao_get_auth_window.py,sha256=bgqtF-LhCcqyIkuRKuEJSZ1-XrJP1UvQA6VPD3PzO0Y,11337
33
+ sticker_convert/gui_components/windows/kakao_get_auth_window.py,sha256=1nawn_D4wkziW_lROjUJlmVtITAuGt_4uruGMcEr7Oo,11128
34
34
  sticker_convert/gui_components/windows/line_get_auth_window.py,sha256=S4ES_lk2-GDvPokZtYALnUc5zW1VbS4WulNqO9K1aSs,3375
35
35
  sticker_convert/gui_components/windows/signal_get_auth_window.py,sha256=lYvjADW3IRrqo065apSPZZtC2JCLXUqkX6lDWv79jyQ,3102
36
36
  sticker_convert/gui_components/windows/viber_get_auth_window.py,sha256=oHL4ipivtGT35tN5wzDKhsYsihLmoLwSDgI75g2XcCs,5183
@@ -72,7 +72,7 @@ sticker_convert/resources/appicon.ico,sha256=-ldugcl2Yq2pBRTktnhGKWInpKyWzRjCiPv
72
72
  sticker_convert/resources/appicon.png,sha256=6XBEQz7PnerqS43aRkwpWolFG4WvKMuQ-st1ly-_JPg,5265
73
73
  sticker_convert/resources/compression.json,sha256=hZY906wUmdAuflVhUowm9EW6h40BzuD4LBNe-Mpd9V8,14184
74
74
  sticker_convert/resources/emoji.json,sha256=q9DRFdVJfm7feZW7ZM6Xa5P1QsMvrn0PbBVU9jKcJKI,422720
75
- sticker_convert/resources/help.json,sha256=oI8OIB0aFKgDw4bTKT69zDNshOjf0-bM5el3nbJTzMs,7225
75
+ sticker_convert/resources/help.json,sha256=IDJhDD5plY8_Ze5gnM6rMs6H1-urWo94sEHeGzO5QeU,7364
76
76
  sticker_convert/resources/input.json,sha256=BYHYDqMLZuQnA3MF0ViudGpkSuAG8OMS7L-7hxC3K3o,3858
77
77
  sticker_convert/resources/memdump_linux.sh,sha256=YbdX5C5RyCnoeDUE6JgTo8nQXKhrUw5-kFDx5bQp9tY,651
78
78
  sticker_convert/resources/memdump_windows.ps1,sha256=CfyNSSEW3HJOkTu-mKrP3qh5aprN-1VCBfj-R1fELA0,302
@@ -91,7 +91,7 @@ sticker_convert/utils/process.py,sha256=EAQZ9WpiKmkvToIv8G1HNY4V7m0jXyyePTmeP2XO
91
91
  sticker_convert/utils/url_detect.py,sha256=vCbhQbcW1X_UtdfQlICGY8pMX34KQ6sCtDJZbp0NrSg,876
92
92
  sticker_convert/utils/auth/get_discord_auth.py,sha256=MeyLzB8hlMTv8l2-6HBW45hppwogSH2gyI1L-VAOEkM,4273
93
93
  sticker_convert/utils/auth/get_kakao_auth.py,sha256=Wok5sp0GGBgTwwlfYB7lVq82ndBAOGTcqsWEaWAXFNE,10760
94
- sticker_convert/utils/auth/get_kakao_desktop_auth.py,sha256=BBfFI08cVOmi6akenQwMI0Uiatmn76wI8QYHnbvopxg,5809
94
+ sticker_convert/utils/auth/get_kakao_desktop_auth.py,sha256=yT-gvvrKfpMRIVfmc6mfaEWSh4RKMs0B3rOD-zSI5hs,8597
95
95
  sticker_convert/utils/auth/get_line_auth.py,sha256=8l8ha2vQmk3rHGvDE7PkcxQXbH3oe62LKbI3qVUtvqc,2196
96
96
  sticker_convert/utils/auth/get_signal_auth.py,sha256=oDTcIUcRM8_zfmR6UoBvzBhIscwLRe7n2zw4aw0j8_Q,4564
97
97
  sticker_convert/utils/auth/get_viber_auth.py,sha256=mUTrcxq5bTrzSXEVaeTPqVQIdZdwvIhrbMgBUb7dU30,8173
@@ -107,9 +107,9 @@ sticker_convert/utils/media/apple_png_normalize.py,sha256=LbrQhc7LlYX4I9ek4XJsZE
107
107
  sticker_convert/utils/media/codec_info.py,sha256=_F_iV3k2GYtb8vYZUSKrWl9E7XEW6LDywbnJ-DM6kbk,16476
108
108
  sticker_convert/utils/media/decrypt_kakao.py,sha256=4wq9ZDRnFkx1WmFZnyEogBofiLGsWQM_X69HlA36578,1947
109
109
  sticker_convert/utils/media/format_verify.py,sha256=oM32P186tWe9YxvBQRPr8D3FEmBN3b2rEe_2S_MwxyQ,6236
110
- sticker_convert-2.12.3.dist-info/licenses/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
111
- sticker_convert-2.12.3.dist-info/METADATA,sha256=bnBpAawPOvQ4air1vK1aofJ9xTGJ8LBsXqZTAEzy7TA,53517
112
- sticker_convert-2.12.3.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
113
- sticker_convert-2.12.3.dist-info/entry_points.txt,sha256=MNJ7XyC--ugxi5jS1nzjDLGnxCyLuaGdsVLnJhDHCqs,66
114
- sticker_convert-2.12.3.dist-info/top_level.txt,sha256=r9vfnB0l1ZnH5pTH5RvkobnK3Ow9m0RsncaOMAtiAtk,16
115
- sticker_convert-2.12.3.dist-info/RECORD,,
110
+ sticker_convert-2.12.4.dist-info/licenses/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
111
+ sticker_convert-2.12.4.dist-info/METADATA,sha256=2Z9TXBiRE_dhOaRYaiIKZ_fYnnKOvfuKZH484Rgc_J8,53517
112
+ sticker_convert-2.12.4.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
113
+ sticker_convert-2.12.4.dist-info/entry_points.txt,sha256=MNJ7XyC--ugxi5jS1nzjDLGnxCyLuaGdsVLnJhDHCqs,66
114
+ sticker_convert-2.12.4.dist-info/top_level.txt,sha256=r9vfnB0l1ZnH5pTH5RvkobnK3Ow9m0RsncaOMAtiAtk,16
115
+ sticker_convert-2.12.4.dist-info/RECORD,,