sticker-convert 2.1.14__py3-none-any.whl → 2.2.0__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/__init__.py +1 -1
- sticker_convert/__main__.py +2 -0
- sticker_convert/cli.py +2 -1
- sticker_convert/converter.py +17 -4
- sticker_convert/gui.py +4 -2
- sticker_convert/gui_components/frames/comp_frame.py +1 -0
- sticker_convert/gui_components/windows/advanced_compression_window.py +15 -7
- sticker_convert/job_option.py +2 -0
- sticker_convert/resources/compression.json +10 -0
- sticker_convert/resources/help.json +1 -0
- sticker_convert/utils/files/dir_utils.py +1 -0
- sticker_convert/utils/media/codec_info.py +14 -6
- {sticker_convert-2.1.14.dist-info → sticker_convert-2.2.0.dist-info}/METADATA +24 -17
- {sticker_convert-2.1.14.dist-info → sticker_convert-2.2.0.dist-info}/RECORD +18 -18
- {sticker_convert-2.1.14.dist-info → sticker_convert-2.2.0.dist-info}/LICENSE +0 -0
- {sticker_convert-2.1.14.dist-info → sticker_convert-2.2.0.dist-info}/WHEEL +0 -0
- {sticker_convert-2.1.14.dist-info → sticker_convert-2.2.0.dist-info}/entry_points.txt +0 -0
- {sticker_convert-2.1.14.dist-info → sticker_convert-2.2.0.dist-info}/top_level.txt +0 -0
sticker_convert/__init__.py
CHANGED
sticker_convert/__main__.py
CHANGED
@@ -3,8 +3,10 @@ def main():
|
|
3
3
|
import multiprocessing
|
4
4
|
import sys
|
5
5
|
import os
|
6
|
+
from .__init__ import __version__
|
6
7
|
|
7
8
|
multiprocessing.freeze_support()
|
9
|
+
print(f"sticker-convert {__version__}")
|
8
10
|
script_path = os.path.dirname(__file__)
|
9
11
|
if not os.path.isdir(script_path):
|
10
12
|
script_path = os.path.dirname(sys.argv[0])
|
sticker_convert/cli.py
CHANGED
@@ -67,7 +67,7 @@ class CLI:
|
|
67
67
|
'color_min', 'color_max',
|
68
68
|
'duration_min', 'duration_max',
|
69
69
|
'vid_size_max', 'img_size_max')
|
70
|
-
flags_str = ('vid_format', 'img_format', 'cache_dir')
|
70
|
+
flags_str = ('vid_format', 'img_format', 'cache_dir', 'scale_filter')
|
71
71
|
flags_bool = ('fake_vid')
|
72
72
|
for k, v in self.help['comp'].items():
|
73
73
|
if k in flags_int:
|
@@ -229,6 +229,7 @@ class CLI:
|
|
229
229
|
'steps': self.compression_presets[preset]['steps'] if args.steps == None else args.steps,
|
230
230
|
'fake_vid': self.compression_presets[preset]['fake_vid'] if args.fake_vid == None else args.fake_vid,
|
231
231
|
'cache_dir': args.cache_dir,
|
232
|
+
'scale_filter': args.scale_filter,
|
232
233
|
'default_emoji': args.default_emoji,
|
233
234
|
'no_compress': args.no_compress,
|
234
235
|
'processes': args.processes if args.processes else math.ceil(cpu_count() / 2)
|
sticker_convert/converter.py
CHANGED
@@ -133,7 +133,7 @@ class StickerConvert:
|
|
133
133
|
self.res_w = param[0]
|
134
134
|
self.res_h = param[1]
|
135
135
|
self.quality = param[2]
|
136
|
-
self.fps = param[3]
|
136
|
+
self.fps = min(param[3], self.fps_orig)
|
137
137
|
self.color = param[4]
|
138
138
|
|
139
139
|
self.tmp_f = io.BytesIO()
|
@@ -218,8 +218,9 @@ class StickerConvert:
|
|
218
218
|
self.frames_import_imageio()
|
219
219
|
|
220
220
|
def frames_import_imageio(self):
|
221
|
-
|
222
|
-
|
221
|
+
# ffmpeg do not support webp decoding (yet)
|
222
|
+
# ffmpeg could fail to decode apng if file is buggy
|
223
|
+
if self.in_f_ext in ('.webp', '.apng', 'png'):
|
223
224
|
for frame in iio.imiter(self.in_f, plugin='pillow', mode='RGBA'):
|
224
225
|
self.frames_raw.append(frame)
|
225
226
|
return
|
@@ -282,7 +283,19 @@ class StickerConvert:
|
|
282
283
|
else:
|
283
284
|
height_new = self.res_h
|
284
285
|
width_new = width * self.res_h // height
|
285
|
-
|
286
|
+
|
287
|
+
if self.opt_comp.scale_filter == 'nearest':
|
288
|
+
resample = Image.NEAREST
|
289
|
+
elif self.opt_comp.scale_filter == 'bilinear':
|
290
|
+
resample = Image.BILINEAR
|
291
|
+
elif self.opt_comp.scale_filter == 'bicubic':
|
292
|
+
resample = Image.BICUBIC
|
293
|
+
elif self.opt_comp.scale_filter == 'lanczos':
|
294
|
+
resample = Image.LANCZOS
|
295
|
+
else:
|
296
|
+
resample = Image.LANCZOS
|
297
|
+
|
298
|
+
im = im.resize((width_new, height_new), resample=resample)
|
286
299
|
im_new = Image.new('RGBA', (self.res_w, self.res_h), (0, 0, 0, 0))
|
287
300
|
im_new.paste(
|
288
301
|
im, ((self.res_w - width_new) // 2, (self.res_h - height_new) // 2)
|
sticker_convert/gui.py
CHANGED
@@ -125,6 +125,7 @@ class GUI(Window):
|
|
125
125
|
self.img_format_var = StringVar(self)
|
126
126
|
self.vid_format_var = StringVar(self)
|
127
127
|
self.fake_vid_var = BooleanVar()
|
128
|
+
self.scale_filter_var = StringVar(self)
|
128
129
|
self.cache_dir_var = StringVar(self)
|
129
130
|
self.default_emoji_var = StringVar(self)
|
130
131
|
self.steps_var = IntVar(self)
|
@@ -381,6 +382,7 @@ class GUI(Window):
|
|
381
382
|
},
|
382
383
|
'steps': self.steps_var.get(),
|
383
384
|
'fake_vid': self.fake_vid_var.get(),
|
385
|
+
'scale_filter': self.scale_filter_var.get(),
|
384
386
|
'cache_dir': self.cache_dir_var.get() if self.cache_dir_var.get() != '' else None,
|
385
387
|
'default_emoji': self.default_emoji_var.get(),
|
386
388
|
'no_compress': self.no_compress_var.get(),
|
@@ -545,7 +547,7 @@ class GUI(Window):
|
|
545
547
|
if os.path.isdir(self.input_setdir_var.get()):
|
546
548
|
self.input_frame.input_setdir_entry.config(bootstyle='default')
|
547
549
|
else:
|
548
|
-
self.input_frame.input_setdir_entry.config(bootstyle='
|
550
|
+
self.input_frame.input_setdir_entry.config(bootstyle='warning')
|
549
551
|
|
550
552
|
self.input_frame.address_lbl.config(text=self.input_presets[input_option_display]['address_lbls'])
|
551
553
|
self.input_frame.address_entry.config(bootstyle='default')
|
@@ -575,7 +577,7 @@ class GUI(Window):
|
|
575
577
|
if os.path.isdir(self.output_setdir_var.get()):
|
576
578
|
self.output_frame.output_setdir_entry.config(bootstyle='default')
|
577
579
|
else:
|
578
|
-
self.output_frame.output_setdir_entry.config(bootstyle='
|
580
|
+
self.output_frame.output_setdir_entry.config(bootstyle='warning')
|
579
581
|
|
580
582
|
if (MetadataHandler.check_metadata_required(output_option, 'title') and
|
581
583
|
not MetadataHandler.check_metadata_provided(self.input_setdir_var.get(), input_option, 'title') and
|
@@ -81,6 +81,7 @@ class CompFrame(LabelFrame):
|
|
81
81
|
self.gui.img_format_var.set(self.gui.compression_presets[selection]['format']['img'])
|
82
82
|
self.gui.vid_format_var.set(self.gui.compression_presets[selection]['format']['vid'])
|
83
83
|
self.gui.fake_vid_var.set(self.gui.compression_presets[selection]['fake_vid'])
|
84
|
+
self.gui.scale_filter_var.set(self.gui.compression_presets[selection]['scale_filter'])
|
84
85
|
self.gui.default_emoji_var.set(self.gui.compression_presets[selection]['default_emoji'])
|
85
86
|
self.gui.steps_var.set(self.gui.compression_presets[selection]['steps'])
|
86
87
|
|
@@ -112,6 +112,10 @@ class AdvancedCompressionWindow(BaseWindow):
|
|
112
112
|
self.fake_vid_lbl = Label(self.frame_advcomp, text='Convert (faking) image to video')
|
113
113
|
self.fake_vid_cbox = Checkbutton(self.frame_advcomp, variable=self.gui.fake_vid_var, onvalue=True, offvalue=False, bootstyle='success-round-toggle')
|
114
114
|
|
115
|
+
self.scale_filter_help_btn = Button(self.frame_advcomp, text='?', width=1, command=lambda: cb_msg_block_adv_comp_win(self.gui.help['comp']['scale_filter']), bootstyle='secondary')
|
116
|
+
self.scale_filter_lbl = Label(self.frame_advcomp, text='Scale filter')
|
117
|
+
self.scale_filter_opt = OptionMenu(self.frame_advcomp, self.gui.scale_filter_var, self.gui.scale_filter_var.get(), 'nearest', 'bilinear', 'bicubic', 'lanczos', bootstyle='secondary')
|
118
|
+
|
115
119
|
self.cache_dir_help_btn = Button(self.frame_advcomp, text='?', width=1, command=lambda: cb_msg_block_adv_comp_win(self.gui.help['comp']['cache_dir']), bootstyle='secondary')
|
116
120
|
self.cache_dir_lbl = Label(self.frame_advcomp, text='Custom cache directory')
|
117
121
|
self.cache_dir_entry = Entry(self.frame_advcomp, textvariable=self.gui.cache_dir_var, width=30)
|
@@ -190,13 +194,17 @@ class AdvancedCompressionWindow(BaseWindow):
|
|
190
194
|
self.fake_vid_lbl.grid(column=1, row=10, sticky='w', padx=3, pady=3)
|
191
195
|
self.fake_vid_cbox.grid(column=6, row=10, sticky='nes', padx=3, pady=3)
|
192
196
|
|
193
|
-
self.
|
194
|
-
self.
|
195
|
-
self.
|
197
|
+
self.scale_filter_help_btn.grid(column=0, row=11, sticky='w', padx=3, pady=3)
|
198
|
+
self.scale_filter_lbl.grid(column=1, row=11, sticky='w', padx=3, pady=3)
|
199
|
+
self.scale_filter_opt.grid(column=2, row=11, columnspan=4, sticky='nes', padx=3, pady=3)
|
200
|
+
|
201
|
+
self.cache_dir_help_btn.grid(column=0, row=12, sticky='w', padx=3, pady=3)
|
202
|
+
self.cache_dir_lbl.grid(column=1, row=12, sticky='w', padx=3, pady=3)
|
203
|
+
self.cache_dir_entry.grid(column=2, row=12, columnspan=4, sticky='nes', padx=3, pady=3)
|
196
204
|
|
197
|
-
self.default_emoji_help_btn.grid(column=0, row=
|
198
|
-
self.default_emoji_lbl.grid(column=1, row=
|
199
|
-
self.default_emoji_dsp.grid(column=6, row=
|
205
|
+
self.default_emoji_help_btn.grid(column=0, row=13, sticky='w', padx=3, pady=3)
|
206
|
+
self.default_emoji_lbl.grid(column=1, row=13, sticky='w', padx=3, pady=3)
|
207
|
+
self.default_emoji_dsp.grid(column=6, row=13, sticky='nes', padx=3, pady=3)
|
200
208
|
|
201
209
|
# https://stackoverflow.com/questions/43731784/tkinter-canvas-scrollbar-with-grid
|
202
210
|
# Create a frame for the canvas with non-zero row&column weights
|
@@ -217,7 +225,7 @@ class AdvancedCompressionWindow(BaseWindow):
|
|
217
225
|
|
218
226
|
self.search_lbl = Label(self.frame_emoji_search, text='Search')
|
219
227
|
self.search_var = StringVar(self.frame_emoji_search)
|
220
|
-
self.search_var.
|
228
|
+
self.search_var.trace_add("write", self.render_emoji_list)
|
221
229
|
self.search_entry = Entry(self.frame_emoji_search, textvariable=self.search_var)
|
222
230
|
self.search_entry.bind('<Button-3><ButtonRelease-3>', RightClicker)
|
223
231
|
|
sticker_convert/job_option.py
CHANGED
@@ -118,6 +118,7 @@ class CompOption(BaseOption):
|
|
118
118
|
|
119
119
|
self.steps = to_int(comp_config_dict.get('steps'))
|
120
120
|
self.fake_vid = comp_config_dict.get('fake_vid')
|
121
|
+
self.scale_filter = comp_config_dict.get('scale_filter', 'lanczos')
|
121
122
|
self.cache_dir = comp_config_dict.get('cache_dir')
|
122
123
|
self.default_emoji = comp_config_dict.get('default_emoji')
|
123
124
|
self.no_compress = comp_config_dict.get('no_compress')
|
@@ -166,6 +167,7 @@ class CompOption(BaseOption):
|
|
166
167
|
},
|
167
168
|
'steps': self.steps,
|
168
169
|
'fake_vid': self.fake_vid,
|
170
|
+
'scale_filter': self.scale_filter,
|
169
171
|
'cache_dir': self.cache_dir,
|
170
172
|
'default_emoji': self.default_emoji,
|
171
173
|
'no_compress': self.no_compress,
|
@@ -36,6 +36,7 @@
|
|
36
36
|
},
|
37
37
|
"steps": 16,
|
38
38
|
"fake_vid": false,
|
39
|
+
"scale_filter": "lanczos",
|
39
40
|
"default_emoji": "😀"
|
40
41
|
},
|
41
42
|
"signal": {
|
@@ -75,6 +76,7 @@
|
|
75
76
|
},
|
76
77
|
"steps": 16,
|
77
78
|
"fake_vid": false,
|
79
|
+
"scale_filter": "lanczos",
|
78
80
|
"default_emoji": "😀"
|
79
81
|
},
|
80
82
|
"telegram": {
|
@@ -114,6 +116,7 @@
|
|
114
116
|
},
|
115
117
|
"steps": 16,
|
116
118
|
"fake_vid": false,
|
119
|
+
"scale_filter": "lanczos",
|
117
120
|
"default_emoji": "😀"
|
118
121
|
},
|
119
122
|
"whatsapp": {
|
@@ -153,6 +156,7 @@
|
|
153
156
|
},
|
154
157
|
"steps": 16,
|
155
158
|
"fake_vid": true,
|
159
|
+
"scale_filter": "lanczos",
|
156
160
|
"default_emoji": "😀"
|
157
161
|
},
|
158
162
|
"line": {
|
@@ -192,6 +196,7 @@
|
|
192
196
|
},
|
193
197
|
"steps": 16,
|
194
198
|
"fake_vid": false,
|
199
|
+
"scale_filter": "lanczos",
|
195
200
|
"default_emoji": "😀"
|
196
201
|
},
|
197
202
|
"kakao": {
|
@@ -231,6 +236,7 @@
|
|
231
236
|
},
|
232
237
|
"steps": 16,
|
233
238
|
"fake_vid": false,
|
239
|
+
"scale_filter": "lanczos",
|
234
240
|
"default_emoji": "😀"
|
235
241
|
},
|
236
242
|
"imessage_small": {
|
@@ -270,6 +276,7 @@
|
|
270
276
|
},
|
271
277
|
"steps": 8,
|
272
278
|
"fake_vid": false,
|
279
|
+
"scale_filter": "lanczos",
|
273
280
|
"default_emoji": "😀"
|
274
281
|
},
|
275
282
|
"imessage_medium": {
|
@@ -309,6 +316,7 @@
|
|
309
316
|
},
|
310
317
|
"steps": 8,
|
311
318
|
"fake_vid": false,
|
319
|
+
"scale_filter": "lanczos",
|
312
320
|
"default_emoji": "😀"
|
313
321
|
},
|
314
322
|
"imessage_large": {
|
@@ -348,6 +356,7 @@
|
|
348
356
|
},
|
349
357
|
"steps": 8,
|
350
358
|
"fake_vid": false,
|
359
|
+
"scale_filter": "lanczos",
|
351
360
|
"default_emoji": "😀"
|
352
361
|
},
|
353
362
|
"custom": {
|
@@ -387,6 +396,7 @@
|
|
387
396
|
},
|
388
397
|
"steps": 16,
|
389
398
|
"fake_vid": false,
|
399
|
+
"scale_filter": "lanczos",
|
390
400
|
"default_emoji": "😀"
|
391
401
|
}
|
392
402
|
}
|
@@ -41,6 +41,7 @@
|
|
41
41
|
"vid_format": "Set file format if input is animated.",
|
42
42
|
"img_format": "Set file format if input is static.",
|
43
43
|
"fake_vid": "Convert (faking) image to video.\nUseful if:\n(1) Size limit for video is larger than image;\n(2) Mix image and video into same pack.",
|
44
|
+
"scale_filter": "Set scale filter. Default as lanczos. Valid options are:\n- nearest = Use nearest neighbour (Suitable for pixel art)\n- bilinear = linear interpolation\n- bicubic = Cubic spline interpolation\n- lanczos = A high-quality downsampling filter",
|
44
45
|
"cache_dir": "Set custom cache directory.\nUseful for debugging, or speed up conversion if cache_dir is on RAM disk.",
|
45
46
|
"default_emoji": "Set the default emoji for uploading Signal and Telegram sticker packs."
|
46
47
|
},
|
@@ -75,17 +75,25 @@ class CodecInfo:
|
|
75
75
|
def get_file_codec(file: str) -> Optional[str]:
|
76
76
|
codec = None
|
77
77
|
try:
|
78
|
-
|
78
|
+
im = Image.open(file)
|
79
|
+
codec = im.format
|
79
80
|
except UnidentifiedImageError:
|
80
81
|
pass
|
81
82
|
|
82
83
|
# Unable to distinguish apng and png
|
83
|
-
if codec
|
84
|
-
return codec.lower()
|
85
|
-
else:
|
84
|
+
if codec == None:
|
86
85
|
metadata = iio.immeta(file, plugin="pyav", exclude_applied=False)
|
87
86
|
codec = metadata.get("codec", None)
|
87
|
+
if codec == None:
|
88
|
+
raise RuntimeError(f"Unable to get codec for file {file}")
|
88
89
|
return codec
|
90
|
+
elif codec == "PNG":
|
91
|
+
if im.is_animated:
|
92
|
+
return "apng"
|
93
|
+
else:
|
94
|
+
return "png"
|
95
|
+
else:
|
96
|
+
return codec.lower()
|
89
97
|
|
90
98
|
@staticmethod
|
91
99
|
def get_file_res(file: str) -> tuple[int, int]:
|
@@ -95,7 +103,7 @@ class CodecInfo:
|
|
95
103
|
with LottieAnimation.from_tgs(file) as anim:
|
96
104
|
width, height = anim.lottie_animation_get_size()
|
97
105
|
else:
|
98
|
-
if file_ext
|
106
|
+
if file_ext in (".webp", ".png", ".apng"):
|
99
107
|
plugin = "pillow"
|
100
108
|
else:
|
101
109
|
plugin = "pyav"
|
@@ -114,7 +122,7 @@ class CodecInfo:
|
|
114
122
|
with LottieAnimation.from_tgs(file) as anim:
|
115
123
|
frames = anim.lottie_animation_get_totalframe()
|
116
124
|
else:
|
117
|
-
if file_ext
|
125
|
+
if file_ext in (".webp", ".png", ".apng"):
|
118
126
|
frames = Image.open(file).n_frames
|
119
127
|
else:
|
120
128
|
frames = frames = len([* iio.imiter(file, plugin="pyav")])
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: sticker-convert
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.2.0
|
4
4
|
Summary: Convert (animated) stickers to/from WhatsApp, Telegram, Signal, Line, Kakao, iMessage. Written in Python.
|
5
5
|
Author-email: laggykiller <chaudominic2@gmail.com>
|
6
6
|
Maintainer-email: laggykiller <chaudominic2@gmail.com>
|
@@ -471,22 +471,23 @@ Requires-Dist: webp ~=0.3.0
|
|
471
471
|
To run in CLI mode, pass on any arguments
|
472
472
|
|
473
473
|
```
|
474
|
-
usage: sticker-convert [-h] [--version] [--no-confirm] [--input-dir INPUT_DIR]
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
474
|
+
usage: sticker-convert.py [-h] [--version] [--no-confirm] [--input-dir INPUT_DIR]
|
475
|
+
[--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO]
|
476
|
+
[--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE]
|
477
|
+
[--export-signal | --export-telegram | --export-whatsapp | --export-imessage] [--no-compress]
|
478
|
+
[--preset {auto,signal,telegram,whatsapp,line,kakao,imessage_small,imessage_medium,imessage_large,custom}]
|
479
|
+
[--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--res-min RES_MIN]
|
480
|
+
[--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN]
|
481
|
+
[--res-h-max RES_H_MAX] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--color-min COLOR_MIN]
|
482
|
+
[--color-max COLOR_MAX] [--duration-min DURATION_MIN] [--duration-max DURATION_MAX]
|
483
|
+
[--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT]
|
484
|
+
[--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER] [--cache-dir CACHE_DIR]
|
485
|
+
[--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD]
|
486
|
+
[--signal-get-auth] [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID]
|
487
|
+
[--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-username KAKAO_USERNAME]
|
488
|
+
[--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
|
489
|
+
[--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
|
490
|
+
[--save-cred SAVE_CRED]
|
490
491
|
|
491
492
|
CLI for stickers-convert
|
492
493
|
|
@@ -571,6 +572,12 @@ Compression options:
|
|
571
572
|
Useful if:
|
572
573
|
(1) Size limit for video is larger than image;
|
573
574
|
(2) Mix image and video into same pack.
|
575
|
+
--scale-filter SCALE_FILTER
|
576
|
+
Set scale filter. Default as lanczos. Valid options are:
|
577
|
+
- nearest = Use nearest neighbour (Suitable for pixel art)
|
578
|
+
- bilinear = linear interpolation
|
579
|
+
- bicubic = Cubic spline interpolation
|
580
|
+
- lanczos = A high-quality downsampling filter
|
574
581
|
--cache-dir CACHE_DIR
|
575
582
|
Set custom cache directory.
|
576
583
|
Useful for debugging, or speed up conversion if cache_dir is on RAM disk.
|
@@ -1,17 +1,17 @@
|
|
1
|
-
sticker_convert/__init__.py,sha256=
|
2
|
-
sticker_convert/__main__.py,sha256=
|
3
|
-
sticker_convert/cli.py,sha256=
|
4
|
-
sticker_convert/converter.py,sha256=
|
5
|
-
sticker_convert/gui.py,sha256=
|
1
|
+
sticker_convert/__init__.py,sha256=Dd1gC2r1iT11NGIO03XH159E2WMNqn37zanvmLf8w3g,66
|
2
|
+
sticker_convert/__main__.py,sha256=HHzFzRsxxhxkCL15_sE1rBAdtprT0NfVUNR591BMvl4,628
|
3
|
+
sticker_convert/cli.py,sha256=mDU18LdLD2yr1jvzuE8R9IpESd9ZiMTU1_DlcnY6WWw,16631
|
4
|
+
sticker_convert/converter.py,sha256=epE6LsVANC4eAkTYq0GdCG_-ug2B14Whhq2B1fkAzFY,17338
|
5
|
+
sticker_convert/gui.py,sha256=Li1i0bo0mZEOdd8udzWi9Wh-08xpgECwvejMGugSBGc,27591
|
6
6
|
sticker_convert/job.py,sha256=VEyEW3KV040PbzfPCxUpLU9Im8RVv_hQqGUVBDRz87k,17440
|
7
|
-
sticker_convert/job_option.py,sha256=
|
7
|
+
sticker_convert/job_option.py,sha256=MdBhyp4-cIHxno4SwBX2n45lkq3dK8Epy84nxvrT_PQ,10926
|
8
8
|
sticker_convert/downloaders/download_base.py,sha256=TYC6bod0IHUApPBLltsOg9zUOMJRScUp7RMwUG8nF78,2572
|
9
9
|
sticker_convert/downloaders/download_kakao.py,sha256=Dnu-KfrfBMVHFkxt0Lg1IvoqT0K0pTk_bpIRImI6FOU,8081
|
10
10
|
sticker_convert/downloaders/download_line.py,sha256=71m5IbmHDBdIAVHkY8D5n7Yx1g6DKoyrmc12VM_BL_U,16485
|
11
11
|
sticker_convert/downloaders/download_signal.py,sha256=oV2WaCRgZk-vM6hOyWy0BlUpfMw7Q3xKYEBi2ATVLrE,2881
|
12
12
|
sticker_convert/downloaders/download_telegram.py,sha256=jMJBrXLYW_pKP5w3Azi3dweFBS1tE9BHXA8Q4uqdJ4o,4119
|
13
13
|
sticker_convert/gui_components/gui_utils.py,sha256=_34tJMrwL44CM4N0hVvxZ8o16l2jYau7p7Ew0L1daJ4,3177
|
14
|
-
sticker_convert/gui_components/frames/comp_frame.py,sha256=
|
14
|
+
sticker_convert/gui_components/frames/comp_frame.py,sha256=b6AyFyXBrLOG-wuLxgp2o06XKjLJ3z-XgQog75WoHsI,6511
|
15
15
|
sticker_convert/gui_components/frames/config_frame.py,sha256=JXvyIwl74PviErMK6V8yS8a3lMdRpSOGWlxFgN-ZDuw,3826
|
16
16
|
sticker_convert/gui_components/frames/control_frame.py,sha256=jwm1kBwLFxDp-wgfJwDEpBXpcx_84r26L-Ep0T4azfE,748
|
17
17
|
sticker_convert/gui_components/frames/cred_frame.py,sha256=UD3q5fJgbZ9Q4f3YgqJvptwmJy9w094OcU4P-T2hzns,5534
|
@@ -19,7 +19,7 @@ sticker_convert/gui_components/frames/input_frame.py,sha256=N_xphGfy2EsuSK_OTUkH
|
|
19
19
|
sticker_convert/gui_components/frames/output_frame.py,sha256=fdJyNFjN8Y_qrtTFJeX-BVr3VaXUBmpiEPDnT7TcD3I,3698
|
20
20
|
sticker_convert/gui_components/frames/progress_frame.py,sha256=LC-Bf9kR3hTMQSTbZIgfUAIYYaRJenqOfUHDHfnUJYw,3124
|
21
21
|
sticker_convert/gui_components/frames/right_clicker.py,sha256=037pLjg_ZLQ6XF3MrGy9ljBiXTqkhfmfGFuqYfyrf3Y,633
|
22
|
-
sticker_convert/gui_components/windows/advanced_compression_window.py,sha256=
|
22
|
+
sticker_convert/gui_components/windows/advanced_compression_window.py,sha256=LIppxH5ZhdWB9NJozVhSc9zFS7026FvuG29PfH2TSH8,24768
|
23
23
|
sticker_convert/gui_components/windows/base_window.py,sha256=zsWxW2hs_wQ4dQ9dZMDhyjnQBC1i_7gKCJ_rVqb_quE,1032
|
24
24
|
sticker_convert/gui_components/windows/kakao_get_auth_window.py,sha256=iMSrpslItfo43n0QrTO74XDbLEX3MmA0Hb8uyuhOygw,5964
|
25
25
|
sticker_convert/gui_components/windows/line_get_auth_window.py,sha256=qX73KYpQ5nLH89R2mj2Rh07mzhjIUKUnSuDy0RFZR4E,2986
|
@@ -60,9 +60,9 @@ sticker_convert/resources/NotoColorEmoji.ttf,sha256=LurIVaCIA8bSCfjrdO1feYr0bhKL
|
|
60
60
|
sticker_convert/resources/appicon.icns,sha256=FB2DVTOQcFfQNZ9RcyG3z9c9k7eOiI1qw0IJhXMRFg4,5404
|
61
61
|
sticker_convert/resources/appicon.ico,sha256=-ldugcl2Yq2pBRTktnhGKWInpKyWzRjCiPvMr3XPTlc,38078
|
62
62
|
sticker_convert/resources/appicon.png,sha256=6XBEQz7PnerqS43aRkwpWolFG4WvKMuQ-st1ly-_JPg,5265
|
63
|
-
sticker_convert/resources/compression.json,sha256=
|
63
|
+
sticker_convert/resources/compression.json,sha256=fqofbnjko6ReyC4j6aJ0g6EUeGVjxS--aqBRWsCNCns,8193
|
64
64
|
sticker_convert/resources/emoji.json,sha256=vIRB-0ICtH8ZvyWhUPqc4VU5po-G-z8bTMrfCLBPPdM,408777
|
65
|
-
sticker_convert/resources/help.json,sha256=
|
65
|
+
sticker_convert/resources/help.json,sha256=EjFNRcMXmk7NBuaKxg2WEp-x7yT4TCorWNNzoSssk9k,4892
|
66
66
|
sticker_convert/resources/input.json,sha256=ca-S5o4Yt2Qke7iNf_RR18MAg5HKDoXd6j9Gs57Kt6k,2211
|
67
67
|
sticker_convert/resources/output.json,sha256=0k8J3z0nPRkyIZj4DvXI4FPvlFuYFoYgA2ldVaMtF0Y,1131
|
68
68
|
sticker_convert/uploaders/compress_wastickers.py,sha256=shud-hWoAJTj7yJYBNZ1FnerHpHO1K8-8g4f3InOMbg,5393
|
@@ -76,17 +76,17 @@ sticker_convert/utils/auth/get_kakao_auth.py,sha256=Q3CxzDqzoo9vf_bsbmpKZXeQODEX
|
|
76
76
|
sticker_convert/utils/auth/get_line_auth.py,sha256=pKe2N3QLTyB0wWBpkD9rlDBqHK7LZ5hnAmfPH7XVmFI,1211
|
77
77
|
sticker_convert/utils/auth/get_signal_auth.py,sha256=NHGOZEiKkGaJmj58BmR8ynmUsAn_IRzE4jpEHXKUhVM,11874
|
78
78
|
sticker_convert/utils/files/cache_store.py,sha256=lNS6ItZ3lwNa7NipkDo7n0wIoAf728dcRV0r0ohmM3s,730
|
79
|
-
sticker_convert/utils/files/dir_utils.py,sha256=
|
79
|
+
sticker_convert/utils/files/dir_utils.py,sha256=_dDt3UAisnCyiqWoZsfMIEnX2Mkqz-O4UUWCRR0IWDM,1914
|
80
80
|
sticker_convert/utils/files/json_manager.py,sha256=BBndjSY5kvjxurOpnDI2DRsKoLrNBTf5HoGfUqlf-4Y,503
|
81
81
|
sticker_convert/utils/files/metadata_handler.py,sha256=KIy8j89DMBW7-gpL9jqhzz96GgBvPHsRYegHXemk_mY,8346
|
82
82
|
sticker_convert/utils/files/run_bin.py,sha256=4c8y5c_2wUfm0hbJSOGFcezpW5BVqM5_e9aliPbxvwo,1632
|
83
83
|
sticker_convert/utils/media/apple_png_normalize.py,sha256=YGrZ8pZvgfhw8dW-0gf7XcXk_R82lJTX-oTo6SsB7uY,3719
|
84
|
-
sticker_convert/utils/media/codec_info.py,sha256=
|
84
|
+
sticker_convert/utils/media/codec_info.py,sha256=rrEcWwpBZwMEifvSdRuSjTVOye_D5vSonqV1OZMs44Y,4834
|
85
85
|
sticker_convert/utils/media/decrypt_kakao.py,sha256=gMz64vIGEIPAl4FFWuUbPMHE7vExr46ZFpzMoukvwws,1918
|
86
86
|
sticker_convert/utils/media/format_verify.py,sha256=7WvvDSFDkyG1WlkXKqVbmPjKiyEedtqivZcCqSNziD8,6179
|
87
|
-
sticker_convert-2.
|
88
|
-
sticker_convert-2.
|
89
|
-
sticker_convert-2.
|
90
|
-
sticker_convert-2.
|
91
|
-
sticker_convert-2.
|
92
|
-
sticker_convert-2.
|
87
|
+
sticker_convert-2.2.0.dist-info/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
|
88
|
+
sticker_convert-2.2.0.dist-info/METADATA,sha256=Gg8NWKOp85YEdGqqw5Upe6xmV1iMimY4cVEiFOxnYd4,45186
|
89
|
+
sticker_convert-2.2.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
90
|
+
sticker_convert-2.2.0.dist-info/entry_points.txt,sha256=MNJ7XyC--ugxi5jS1nzjDLGnxCyLuaGdsVLnJhDHCqs,66
|
91
|
+
sticker_convert-2.2.0.dist-info/top_level.txt,sha256=r9vfnB0l1ZnH5pTH5RvkobnK3Ow9m0RsncaOMAtiAtk,16
|
92
|
+
sticker_convert-2.2.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|