sticker-convert 2.7.11__py3-none-any.whl → 2.7.13__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
@@ -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)
@@ -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 # type: ignore
23
- from av.video.plane import VideoPlane # type: ignore
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 step_upper - step_lower > 1 and self.size_max:
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 = int(rounding((step_lower + step_upper) / 2))
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
- if frame.width % 2 != 0:
455
- width = frame.width - 1
456
- else:
457
- width = frame.width
462
+ width_orig = frame.width
463
+ height_orig = frame.height
458
464
 
459
- if frame.height % 2 != 0:
460
- height = frame.height - 1
461
- else:
462
- height = frame.height
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 sticker_convert.definitions import ROOT_DIR
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 = JsonManager.load_json(ROOT_DIR / "resources/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")
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
- __version__ = "2.7.11"
3
+ __version__ = "2.7.13"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sticker-convert
3
- Version: 2.7.11
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
- options:
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=Ex5Nculo1cbkfhLPibnYR6-SM431ODGPb324Bos0z6k,17702
4
- sticker_convert/converter.py,sha256=-BxUT-VCw-VbfbG7ZZxNTI4FIJcU3Pq2rzw0VuitiVI,32904
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=tTaHAzgGR3wsJma5ER1_I_t7kMUYLr2TLIjhQlI_4_4,47
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=dYLh751rhhriSwc2p_xKVdWPCgUZTPyNJ1QFZdUjA2M,6259
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=WzO5aGL1-_KHTcBA6ymOZLD3vLp35MUj0pG7w08K5Wo,2436
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=H3uMn-77wtALwiGAPhA31OIohcZtWvvzXO7rFmM8EMg,535
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.11.dist-info/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
96
- sticker_convert-2.7.11.dist-info/METADATA,sha256=KCj6r_V42sWAkpZPDAZc6DnWd_M-OZOwf4N7zY19mso,48837
97
- sticker_convert-2.7.11.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
98
- sticker_convert-2.7.11.dist-info/entry_points.txt,sha256=MNJ7XyC--ugxi5jS1nzjDLGnxCyLuaGdsVLnJhDHCqs,66
99
- sticker_convert-2.7.11.dist-info/top_level.txt,sha256=r9vfnB0l1ZnH5pTH5RvkobnK3Ow9m0RsncaOMAtiAtk,16
100
- sticker_convert-2.7.11.dist-info/RECORD,,
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,,