sticker-convert 2.7.11__py3-none-any.whl → 2.7.13__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- sticker_convert/cli.py +18 -0
- sticker_convert/converter.py +38 -18
- sticker_convert/resources/help.json +3 -2
- sticker_convert/utils/auth/get_line_auth.py +6 -0
- sticker_convert/utils/files/json_resources_loader.py +18 -3
- sticker_convert/version.py +1 -1
- {sticker_convert-2.7.11.dist-info → sticker_convert-2.7.13.dist-info}/METADATA +14 -10
- {sticker_convert-2.7.11.dist-info → sticker_convert-2.7.13.dist-info}/RECORD +12 -12
- {sticker_convert-2.7.11.dist-info → sticker_convert-2.7.13.dist-info}/LICENSE +0 -0
- {sticker_convert-2.7.11.dist-info → sticker_convert-2.7.13.dist-info}/WHEEL +0 -0
- {sticker_convert-2.7.11.dist-info → sticker_convert-2.7.13.dist-info}/entry_points.txt +0 -0
- {sticker_convert-2.7.11.dist-info → sticker_convert-2.7.13.dist-info}/top_level.txt +0 -0
sticker_convert/cli.py
CHANGED
@@ -9,6 +9,8 @@ from multiprocessing import cpu_count
|
|
9
9
|
from pathlib import Path
|
10
10
|
from typing import Any, Dict
|
11
11
|
|
12
|
+
from mergedeep import merge # type: ignore
|
13
|
+
|
12
14
|
from sticker_convert.definitions import CONFIG_DIR, DEFAULT_DIR
|
13
15
|
from sticker_convert.job import Job
|
14
16
|
from sticker_convert.job_option import CompOption, CredOption, InputOption, OutputOption
|
@@ -50,6 +52,12 @@ class CLI:
|
|
50
52
|
action="store_true",
|
51
53
|
help=self.help["global"]["no_confirm"],
|
52
54
|
)
|
55
|
+
parser.add_argument(
|
56
|
+
"--custom-presets",
|
57
|
+
dest="custom_presets",
|
58
|
+
default=None,
|
59
|
+
help=self.help["global"]["custom_presets"],
|
60
|
+
)
|
53
61
|
|
54
62
|
parser_input = parser.add_argument_group("Input options")
|
55
63
|
for k, v_str in self.help["input"].items():
|
@@ -162,6 +170,16 @@ class CLI:
|
|
162
170
|
|
163
171
|
args = parser.parse_args()
|
164
172
|
|
173
|
+
if args.custom_presets:
|
174
|
+
try:
|
175
|
+
custom_presets = JsonManager.load_json(Path(args.custom_presets))
|
176
|
+
self.compression_presets: Dict[Any, Any] = merge( # type: ignore
|
177
|
+
self.compression_presets, # type: ignore
|
178
|
+
custom_presets,
|
179
|
+
)
|
180
|
+
except RuntimeError:
|
181
|
+
print(f"Error: Cannot load custom presets from {args.custom_presets}")
|
182
|
+
|
165
183
|
self.cb.no_confirm = args.no_confirm
|
166
184
|
|
167
185
|
self.opt_input = self.get_opt_input(args)
|
sticker_convert/converter.py
CHANGED
@@ -19,8 +19,8 @@ from sticker_convert.utils.media.codec_info import CodecInfo
|
|
19
19
|
from sticker_convert.utils.media.format_verify import FormatVerify
|
20
20
|
|
21
21
|
if TYPE_CHECKING:
|
22
|
-
from av.video.frame import VideoFrame
|
23
|
-
from av.video.plane import VideoPlane
|
22
|
+
from av.video.frame import VideoFrame
|
23
|
+
from av.video.plane import VideoPlane
|
24
24
|
|
25
25
|
MSG_START_COMP = "[I] Start compressing {} -> {}"
|
26
26
|
MSG_SKIP_COMP = "[S] Compatible file found, skip compress and just copy {} -> {}"
|
@@ -264,14 +264,21 @@ class StickerConvert:
|
|
264
264
|
self.result_size = self.size
|
265
265
|
self.result_step = step_current
|
266
266
|
|
267
|
-
if
|
267
|
+
if (
|
268
|
+
step_upper - step_lower > 0
|
269
|
+
and step_current != step_lower
|
270
|
+
and self.size_max
|
271
|
+
):
|
268
272
|
if self.size <= self.size_max:
|
269
273
|
sign = "<"
|
270
274
|
step_upper = step_current
|
271
275
|
else:
|
272
276
|
sign = ">"
|
273
277
|
step_lower = step_current
|
274
|
-
step_current
|
278
|
+
if step_current == step_lower + 1:
|
279
|
+
step_current = step_lower
|
280
|
+
else:
|
281
|
+
step_current = int(rounding((step_lower + step_upper) / 2))
|
275
282
|
self.recompress(sign)
|
276
283
|
elif self.result:
|
277
284
|
return self.compress_done(self.result, self.result_step)
|
@@ -409,7 +416,7 @@ class StickerConvert:
|
|
409
416
|
|
410
417
|
if suffix in (".tgs", ".lottie", ".json"):
|
411
418
|
self._frames_import_lottie()
|
412
|
-
elif suffix in (".webp", ".apng", "png"):
|
419
|
+
elif suffix in (".webp", ".apng", ".png", ".gif"):
|
413
420
|
# ffmpeg do not support webp decoding (yet)
|
414
421
|
# ffmpeg could fail to decode apng if file is buggy
|
415
422
|
self._frames_import_pillow()
|
@@ -431,6 +438,7 @@ class StickerConvert:
|
|
431
438
|
from av.codec.context import CodecContext
|
432
439
|
from av.container.input import InputContainer
|
433
440
|
from av.video.codeccontext import VideoCodecContext
|
441
|
+
from av.video.frame import VideoFrame
|
434
442
|
|
435
443
|
# Crashes when handling some webm in yuv420p and convert to rgba
|
436
444
|
# https://github.com/PyAV-Org/PyAV/issues/1166
|
@@ -451,19 +459,31 @@ class StickerConvert:
|
|
451
459
|
|
452
460
|
for packet in container.demux(container.streams.video):
|
453
461
|
for frame in context.decode(packet):
|
454
|
-
|
455
|
-
|
456
|
-
else:
|
457
|
-
width = frame.width
|
462
|
+
width_orig = frame.width
|
463
|
+
height_orig = frame.height
|
458
464
|
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
465
|
+
# Need to pad frame to even dimension first
|
466
|
+
if width_orig % 2 == 1 or height_orig % 2 == 1:
|
467
|
+
from av.filter import Graph
|
468
|
+
|
469
|
+
width_new = width_orig + width_orig % 2
|
470
|
+
height_new = height_orig + height_orig % 2
|
471
|
+
|
472
|
+
graph = Graph()
|
473
|
+
in_src = graph.add_buffer(template=container.streams.video[0])
|
474
|
+
pad = graph.add(
|
475
|
+
"pad", f"{width_new}:{height_new}:0:0:color=#00000000"
|
476
|
+
)
|
477
|
+
in_src.link_to(pad)
|
478
|
+
sink = graph.add("buffersink")
|
479
|
+
pad.link_to(sink)
|
480
|
+
graph.configure()
|
481
|
+
|
482
|
+
graph.push(frame)
|
483
|
+
frame = cast(VideoFrame, graph.pull())
|
463
484
|
|
464
485
|
if frame.format.name == "yuv420p":
|
465
486
|
rgb_array = frame.to_ndarray(format="rgb24")
|
466
|
-
cast("np.ndarray[Any, Any]", rgb_array)
|
467
487
|
rgba_array = np.dstack(
|
468
488
|
(
|
469
489
|
rgb_array,
|
@@ -475,13 +495,13 @@ class StickerConvert:
|
|
475
495
|
# Not safe to directly call frame.to_ndarray(format="rgba")
|
476
496
|
# https://github.com/laggykiller/sticker-convert/issues/114
|
477
497
|
frame = frame.reformat(
|
478
|
-
width=width,
|
479
|
-
height=height,
|
480
498
|
format="yuva420p",
|
481
499
|
dst_colorspace=1,
|
482
500
|
)
|
483
501
|
rgba_array = yuva_to_rgba(frame)
|
484
502
|
|
503
|
+
# Remove pixels that was added to make dimensions even
|
504
|
+
rgba_array = rgba_array[0:width_orig, 0:height_orig]
|
485
505
|
self.frames_raw.append(rgba_array)
|
486
506
|
|
487
507
|
def _frames_import_lottie(self) -> None:
|
@@ -727,10 +747,10 @@ class StickerConvert:
|
|
727
747
|
if 0 in alpha:
|
728
748
|
extra_kwargs["transparency"] = 0
|
729
749
|
extra_kwargs["disposal"] = 2
|
730
|
-
im_out = [self.quantize(Image.fromarray(i)) for i in frames_processed]
|
750
|
+
im_out = [self.quantize(Image.fromarray(i)) for i in frames_processed] # type: ignore
|
731
751
|
else:
|
732
752
|
im_out = [
|
733
|
-
self.quantize(Image.fromarray(i).convert("RGB")).convert("RGB")
|
753
|
+
self.quantize(Image.fromarray(i).convert("RGB")).convert("RGB") # type: ignore
|
734
754
|
for i in frames_processed
|
735
755
|
]
|
736
756
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"global": {
|
3
|
-
"no_confirm": "Do not ask any questions."
|
3
|
+
"no_confirm": "Do not ask any questions.",
|
4
|
+
"custom_presets": "Specify a json file containing custom compression presets.\nSee compression.json for format.\nNote that if present, 'custom_preset.json' from config directory would be auto loaded."
|
4
5
|
},
|
5
6
|
"input": {
|
6
7
|
"input_dir": "Specify input directory."
|
@@ -46,7 +47,7 @@
|
|
46
47
|
"vid_format": "Set file format if input is animated.",
|
47
48
|
"img_format": "Set file format if input is static.",
|
48
49
|
"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.",
|
49
|
-
"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",
|
50
|
+
"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",
|
50
51
|
"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",
|
51
52
|
"cache_dir": "Set custom cache directory.\nUseful for debugging, or speed up conversion if cache_dir is on RAM disk.",
|
52
53
|
"default_emoji": "Set the default emoji for uploading Signal and Telegram sticker packs."
|
@@ -22,6 +22,12 @@ class GetLineAuth:
|
|
22
22
|
rookiepy.vivaldi, # type: ignore
|
23
23
|
]
|
24
24
|
|
25
|
+
# https://github.com/thewh1teagle/rookie/pull/24
|
26
|
+
if "libre_wolf" in rookiepy.__all__:
|
27
|
+
browsers.extend(rookiepy.libre_wolf) # type: ignore
|
28
|
+
else:
|
29
|
+
browsers.extend(rookiepy.librewolf) # type: ignore
|
30
|
+
|
25
31
|
if platform.system() == "Windows":
|
26
32
|
browsers.extend(
|
27
33
|
[
|
@@ -1,12 +1,27 @@
|
|
1
|
-
from typing import Dict
|
1
|
+
from typing import Any, Dict
|
2
2
|
|
3
|
-
from
|
3
|
+
from mergedeep import merge # type: ignore
|
4
|
+
|
5
|
+
from sticker_convert.definitions import CONFIG_DIR, ROOT_DIR
|
4
6
|
from sticker_convert.utils.files.json_manager import JsonManager
|
5
7
|
|
8
|
+
|
9
|
+
def _load_compression() -> Dict[Any, Any]:
|
10
|
+
compression_json = JsonManager.load_json(ROOT_DIR / "resources/compression.json")
|
11
|
+
custom_preset_json_path = CONFIG_DIR / "custom_preset.json"
|
12
|
+
if custom_preset_json_path.exists():
|
13
|
+
custom_preset_json = JsonManager.load_json(custom_preset_json_path)
|
14
|
+
compression_json: Dict[Any, Any] = merge( # type: ignore
|
15
|
+
compression_json, # type: ignore
|
16
|
+
custom_preset_json,
|
17
|
+
)
|
18
|
+
return compression_json
|
19
|
+
|
20
|
+
|
6
21
|
HELP_JSON: Dict[str, Dict[str, str]] = JsonManager.load_json(
|
7
22
|
ROOT_DIR / "resources/help.json"
|
8
23
|
)
|
9
24
|
INPUT_JSON = JsonManager.load_json(ROOT_DIR / "resources/input.json")
|
10
|
-
COMPRESSION_JSON =
|
25
|
+
COMPRESSION_JSON = _load_compression()
|
11
26
|
OUTPUT_JSON = JsonManager.load_json(ROOT_DIR / "resources/output.json")
|
12
27
|
EMOJI_JSON = JsonManager.load_json(ROOT_DIR / "resources/emoji.json")
|
sticker_convert/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: sticker-convert
|
3
|
-
Version: 2.7.
|
3
|
+
Version: 2.7.13
|
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>
|
@@ -475,7 +475,7 @@ Requires-Dist: webp ~=0.3.0
|
|
475
475
|
To run in CLI mode, pass on any arguments
|
476
476
|
|
477
477
|
```
|
478
|
-
usage: sticker-convert.py [-h] [--version] [--no-confirm] [--input-dir INPUT_DIR]
|
478
|
+
usage: sticker-convert.py [-h] [--version] [--no-confirm] [--custom-presets CUSTOM_PRESETS] [--input-dir INPUT_DIR]
|
479
479
|
[--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO]
|
480
480
|
[--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE]
|
481
481
|
[--export-signal | --export-telegram | --export-telegram-emoji | --export-whatsapp | --export-imessage]
|
@@ -483,7 +483,7 @@ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--input-dir INPUT_DIR
|
|
483
483
|
[--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,imessage_small,imessage_medium,imessage_large,custom}]
|
484
484
|
[--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX]
|
485
485
|
[--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN]
|
486
|
-
[--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER]
|
486
|
+
[--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER]
|
487
487
|
[--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
|
488
488
|
[--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
|
489
489
|
[--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--bg-color BG_COLOR]
|
@@ -494,15 +494,19 @@ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--input-dir INPUT_DIR
|
|
494
494
|
[--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN]
|
495
495
|
[--telegram-userid TELEGRAM_USERID] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth]
|
496
496
|
[--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD]
|
497
|
-
[--kakao-country-code KAKAO_COUNTRY_CODE] [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth]
|
497
|
+
[--kakao-country-code KAKAO_COUNTRY_CODE] [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth]
|
498
498
|
[--line-cookies LINE_COOKIES] [--save-cred SAVE_CRED]
|
499
499
|
|
500
500
|
CLI for stickers-convert
|
501
501
|
|
502
|
-
|
502
|
+
optional arguments:
|
503
503
|
-h, --help show this help message and exit
|
504
504
|
--version show program's version number and exit
|
505
505
|
--no-confirm Do not ask any questions.
|
506
|
+
--custom-presets CUSTOM_PRESETS
|
507
|
+
Specify a json file containing custom compression presets.
|
508
|
+
See compression.json for format.
|
509
|
+
Note that if present, 'custom_preset.json' from config directory would be auto loaded.
|
506
510
|
|
507
511
|
Input options:
|
508
512
|
--input-dir INPUT_DIR
|
@@ -540,7 +544,7 @@ Output options:
|
|
540
544
|
|
541
545
|
Compression options:
|
542
546
|
--no-compress Do not compress files. Useful for only downloading stickers.
|
543
|
-
--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,imessage_small,imessage_medium,imessage_large,custom}
|
547
|
+
--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,imessage_small,imessage_medium,imessage_large,custom}
|
544
548
|
Apply preset for compression.
|
545
549
|
--steps STEPS Set number of divisions between min and max settings.
|
546
550
|
Steps higher = Slower but yields file more closer to the specified file size limit.
|
@@ -600,7 +604,7 @@ Compression options:
|
|
600
604
|
--scale-filter SCALE_FILTER
|
601
605
|
Set scale filter. Default as bicubic. Valid options are:
|
602
606
|
- nearest = Use nearest neighbour (Suitable for pixel art)
|
603
|
-
-box = Similar to nearest, but better downscaling
|
607
|
+
- box = Similar to nearest, but better downscaling
|
604
608
|
- bilinear = Linear interpolation
|
605
609
|
- hamming = Similar to bilinear, but better downscaling
|
606
610
|
- bicubic = Cubic spline interpolation
|
@@ -628,10 +632,10 @@ Credentials options:
|
|
628
632
|
--telegram-token TELEGRAM_TOKEN
|
629
633
|
Set Telegram token. Required for uploading and downloading Telegram stickers.
|
630
634
|
--telegram-userid TELEGRAM_USERID
|
631
|
-
Set telegram user_id (From real account, not bot account). Required for uploading Telegram stickers.
|
635
|
+
Set telegram user_id (From real account, not bot account). Required for uploading Telegram stickers.
|
632
636
|
--kakao-auth-token KAKAO_AUTH_TOKEN
|
633
|
-
Set Kakao auth_token. Required for downloading animated stickers from https://e.kakao.com/t/xxxxx
|
634
|
-
--kakao-get-auth Generate Kakao auth_token. Kakao username, password, country code and phone number are also required.
|
637
|
+
Set Kakao auth_token. Required for downloading animated stickers from https://e.kakao.com/t/xxxxx
|
638
|
+
--kakao-get-auth Generate Kakao auth_token. Kakao username, password, country code and phone number are also required.
|
635
639
|
--kakao-username KAKAO_USERNAME
|
636
640
|
Set Kakao username, which is email or phone number used for signing up Kakao account
|
637
641
|
Example: +447700900142
|
@@ -1,12 +1,12 @@
|
|
1
1
|
sticker_convert/__init__.py,sha256=iQnv6UOOA69c3soAn7ZOnAIubTIQSUxtq1Uhh8xRWvU,102
|
2
2
|
sticker_convert/__main__.py,sha256=6RJauR-SCSSTT3TU7FFB6B6PVwsCxO2xZXtmZ3jc2Is,463
|
3
|
-
sticker_convert/cli.py,sha256=
|
4
|
-
sticker_convert/converter.py,sha256
|
3
|
+
sticker_convert/cli.py,sha256=kyfhvMoHq42uLZsYYLrr6b30xsNE93GVZlbGYPFjC2I,18385
|
4
|
+
sticker_convert/converter.py,sha256=XqJyHPWaZCZEbUK_-0CUYmumeUzgOS4lg7zTPH9JYA8,33821
|
5
5
|
sticker_convert/definitions.py,sha256=ZhP2ALCEud-w9ZZD4c3TDG9eHGPZyaAL7zPUsJAbjtE,2073
|
6
6
|
sticker_convert/gui.py,sha256=TqdgFbHBRYgcXWWrsfxLUJ8Zu9WeE11vYyZMX6nalik,30599
|
7
7
|
sticker_convert/job.py,sha256=J4e7dZ48t5EhM3fG-xF1BEQ10WYljx3wWamKXAJjCa8,26000
|
8
8
|
sticker_convert/job_option.py,sha256=1YVhyTfu2cWz3qpAKbdIM11jbL0CJz0ksOYAeg8v6dc,7649
|
9
|
-
sticker_convert/version.py,sha256=
|
9
|
+
sticker_convert/version.py,sha256=jOLhRKwMOcmLYOtzpH73qVOpP1okliTWPuuIgfNT8xw,47
|
10
10
|
sticker_convert/downloaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
11
|
sticker_convert/downloaders/download_base.py,sha256=5R7c8kwahAflOOYrtSQPnBVQ4T-DsprPUMP7G9wcJX4,2824
|
12
12
|
sticker_convert/downloaders/download_kakao.py,sha256=RYrebTxEjKjXAr9xw18r0dMW0dFjSqZxzi8dpaq56TY,8581
|
@@ -68,7 +68,7 @@ sticker_convert/resources/appicon.ico,sha256=-ldugcl2Yq2pBRTktnhGKWInpKyWzRjCiPv
|
|
68
68
|
sticker_convert/resources/appicon.png,sha256=6XBEQz7PnerqS43aRkwpWolFG4WvKMuQ-st1ly-_JPg,5265
|
69
69
|
sticker_convert/resources/compression.json,sha256=vwn6wLsfsPnNnpjhJHRvzozBI4F_kkb9-eBR8IlyYLo,10833
|
70
70
|
sticker_convert/resources/emoji.json,sha256=sXSuKusyG1L2Stuf9BL5ZqfzOIOdeAeE3RXcrXAsLdY,413367
|
71
|
-
sticker_convert/resources/help.json,sha256=
|
71
|
+
sticker_convert/resources/help.json,sha256=TUZi_70uVmgImApBUtKieDGEMtu8syVjE0ah8sKEcbk,6470
|
72
72
|
sticker_convert/resources/input.json,sha256=sRz8qWaLh2KTjjlPIxz2UfynVn2Bn0olywbb8-qT_Hc,2251
|
73
73
|
sticker_convert/resources/output.json,sha256=QYP2gqDvEaAm5I9bH4NReaB1XMLboevv69u-V8YdZUs,1373
|
74
74
|
sticker_convert/uploaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -80,11 +80,11 @@ sticker_convert/uploaders/xcode_imessage.py,sha256=mwnUTNclq4SFGX8JgFoM-bsvAtsYt
|
|
80
80
|
sticker_convert/utils/callback.py,sha256=JnwrgaSNdl-74Nd-fz6EH-r6ePLLb-4a5C1P0OAPjNQ,5279
|
81
81
|
sticker_convert/utils/url_detect.py,sha256=Cw3SzHj0xQTgCY8KvXbgFGRn_VhDJuZvH0mWsiQOg5s,769
|
82
82
|
sticker_convert/utils/auth/get_kakao_auth.py,sha256=ipAZ1DUd5CMTpUoxRXHVOFC3DKIpxwxpTYAfrOJ6UZ8,9829
|
83
|
-
sticker_convert/utils/auth/get_line_auth.py,sha256=
|
83
|
+
sticker_convert/utils/auth/get_line_auth.py,sha256=CAg5oAyqnzyAr1sP0iaecJPpmreeERiZnVxIX9X_Ib0,2682
|
84
84
|
sticker_convert/utils/auth/get_signal_auth.py,sha256=6Sx-lMuyBHeX1RpjAWI8u03qnRu9fmO4p89pd7fowOE,4925
|
85
85
|
sticker_convert/utils/files/cache_store.py,sha256=etfe614OAhAyrnM5fGeESKq6R88YLNqkqkxSzEmZ0V0,1047
|
86
86
|
sticker_convert/utils/files/json_manager.py,sha256=Vr6pZJdLMkrJJWN99210aduVHb0ILyf0SSTaw4TZqgc,541
|
87
|
-
sticker_convert/utils/files/json_resources_loader.py,sha256=
|
87
|
+
sticker_convert/utils/files/json_resources_loader.py,sha256=flZFixUXRTrOAhvRQpuSQgmJ69yXL94sxukcowLT1JQ,1049
|
88
88
|
sticker_convert/utils/files/metadata_handler.py,sha256=TJpQ-7KdnqQh09hwR6xB_scRLhbJ6D3zgORy3dkf858,9933
|
89
89
|
sticker_convert/utils/files/run_bin.py,sha256=QalA9je6liHxiOtxsjsFsIkc2t59quhcJCVpP1X3p50,1743
|
90
90
|
sticker_convert/utils/files/sanitize_filename.py,sha256=HBklPGsHRJjFQUIC5rYTQsUrsuTtezZXIEA8CPhLP8A,2156
|
@@ -92,9 +92,9 @@ sticker_convert/utils/media/apple_png_normalize.py,sha256=LbrQhc7LlYX4I9ek4XJsZE
|
|
92
92
|
sticker_convert/utils/media/codec_info.py,sha256=JHHlfCLSpepYFv6TSL1XqwUJoVOpOPFxurRtduplPGY,12856
|
93
93
|
sticker_convert/utils/media/decrypt_kakao.py,sha256=4wq9ZDRnFkx1WmFZnyEogBofiLGsWQM_X69HlA36578,1947
|
94
94
|
sticker_convert/utils/media/format_verify.py,sha256=Xf94jyqk_6M9IlFGMy0wYIgQKn_yg00nD4XW0CgAbew,5732
|
95
|
-
sticker_convert-2.7.
|
96
|
-
sticker_convert-2.7.
|
97
|
-
sticker_convert-2.7.
|
98
|
-
sticker_convert-2.7.
|
99
|
-
sticker_convert-2.7.
|
100
|
-
sticker_convert-2.7.
|
95
|
+
sticker_convert-2.7.13.dist-info/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
|
96
|
+
sticker_convert-2.7.13.dist-info/METADATA,sha256=dwERdM02NVAJqK7mBwQjAaWMipbyJVr-IRIzSSKJY98,49133
|
97
|
+
sticker_convert-2.7.13.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
98
|
+
sticker_convert-2.7.13.dist-info/entry_points.txt,sha256=MNJ7XyC--ugxi5jS1nzjDLGnxCyLuaGdsVLnJhDHCqs,66
|
99
|
+
sticker_convert-2.7.13.dist-info/top_level.txt,sha256=r9vfnB0l1ZnH5pTH5RvkobnK3Ow9m0RsncaOMAtiAtk,16
|
100
|
+
sticker_convert-2.7.13.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|