sticker-convert 2.7.11__py3-none-any.whl → 2.7.12__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)
@@ -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.12"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sticker-convert
3
- Version: 2.7.11
3
+ Version: 2.7.12
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
3
+ sticker_convert/cli.py,sha256=kyfhvMoHq42uLZsYYLrr6b30xsNE93GVZlbGYPFjC2I,18385
4
4
  sticker_convert/converter.py,sha256=-BxUT-VCw-VbfbG7ZZxNTI4FIJcU3Pq2rzw0VuitiVI,32904
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=itLv7GvtbPZ961xSemMjepArEGEJR3yg6PpGH0MuovQ,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.12.dist-info/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
96
+ sticker_convert-2.7.12.dist-info/METADATA,sha256=tJ1IQvfsDyRiDDQSkHech1YhfhlB9U9HPeUEk5a15eY,49133
97
+ sticker_convert-2.7.12.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
98
+ sticker_convert-2.7.12.dist-info/entry_points.txt,sha256=MNJ7XyC--ugxi5jS1nzjDLGnxCyLuaGdsVLnJhDHCqs,66
99
+ sticker_convert-2.7.12.dist-info/top_level.txt,sha256=r9vfnB0l1ZnH5pTH5RvkobnK3Ow9m0RsncaOMAtiAtk,16
100
+ sticker_convert-2.7.12.dist-info/RECORD,,