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 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,,