sticker-convert 2.8.9__tar.gz → 2.8.10__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. {sticker_convert-2.8.9/src/sticker_convert.egg-info → sticker_convert-2.8.10}/PKG-INFO +25 -21
  2. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/README.md +19 -14
  3. sticker_convert-2.8.9/src/sticker_convert.egg-info/requires.txt → sticker_convert-2.8.10/requirements.txt +6 -7
  4. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/cli.py +1 -4
  5. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/converter.py +17 -81
  6. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui.py +0 -2
  7. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/frames/comp_frame.py +0 -1
  8. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/windows/advanced_compression_window.py +0 -16
  9. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/job_option.py +0 -1
  10. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/resources/compression.json +0 -12
  11. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/resources/help.json +0 -1
  12. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/version.py +1 -1
  13. {sticker_convert-2.8.9 → sticker_convert-2.8.10/src/sticker_convert.egg-info}/PKG-INFO +25 -21
  14. sticker_convert-2.8.9/requirements.txt → sticker_convert-2.8.10/src/sticker_convert.egg-info/requires.txt +5 -6
  15. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/LICENSE +0 -0
  16. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/MANIFEST.in +0 -0
  17. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/pyproject.toml +0 -0
  18. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/setup.cfg +0 -0
  19. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/__init__.py +0 -0
  20. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/__main__.py +0 -0
  21. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/definitions.py +0 -0
  22. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/downloaders/__init__.py +0 -0
  23. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/downloaders/download_base.py +0 -0
  24. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/downloaders/download_kakao.py +0 -0
  25. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/downloaders/download_line.py +0 -0
  26. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/downloaders/download_signal.py +0 -0
  27. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/downloaders/download_telegram.py +0 -0
  28. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/downloaders/download_viber.py +0 -0
  29. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/__init__.py +0 -0
  30. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/frames/__init__.py +0 -0
  31. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/frames/config_frame.py +0 -0
  32. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/frames/control_frame.py +0 -0
  33. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/frames/cred_frame.py +0 -0
  34. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/frames/input_frame.py +0 -0
  35. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/frames/output_frame.py +0 -0
  36. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/frames/progress_frame.py +0 -0
  37. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/frames/right_clicker.py +0 -0
  38. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/gui_utils.py +0 -0
  39. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/windows/__init__.py +0 -0
  40. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/windows/base_window.py +0 -0
  41. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/windows/kakao_get_auth_window.py +0 -0
  42. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/windows/line_get_auth_window.py +0 -0
  43. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/gui_components/windows/signal_get_auth_window.py +0 -0
  44. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/.github/FUNDING.yml +0 -0
  45. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/.gitignore +0 -0
  46. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/README.md +0 -0
  47. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers/Info.plist +0 -0
  48. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Info.plist +0 -0
  49. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Contents.json +0 -0
  50. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Contents.json +0 -0
  51. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Contents.json +0 -0
  52. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Sticker 1.png +0 -0
  53. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Contents.json +0 -0
  54. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Sticker 2.png +0 -0
  55. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Contents.json +0 -0
  56. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Sticker 3.png +0 -0
  57. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/App-Store-1024x1024pt.png +0 -0
  58. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Contents.json +0 -0
  59. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-App-Store-1024x768pt.png +0 -0
  60. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-67x50pt@2x.png +0 -0
  61. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-Pro-74x55pt@2x.png +0 -0
  62. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@2x.png +0 -0
  63. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@3x.png +0 -0
  64. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@2x.png +0 -0
  65. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@3x.png +0 -0
  66. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@2x.png +0 -0
  67. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@3x.png +0 -0
  68. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPad-Settings-29pt@2x.png +0 -0
  69. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-Settings-29pt@3x.png +0 -0
  70. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-settings-29pt@2x.png +0 -0
  71. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.pbxproj +0 -0
  72. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
  73. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
  74. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcuserdata/niklaspeterson.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  75. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/xcuserdata/niklaspeterson.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
  76. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/job.py +0 -0
  77. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/resources/NotoColorEmoji.ttf +0 -0
  78. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/resources/appicon.icns +0 -0
  79. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/resources/appicon.ico +0 -0
  80. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/resources/appicon.png +0 -0
  81. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/resources/emoji.json +0 -0
  82. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/resources/input.json +0 -0
  83. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/resources/output.json +0 -0
  84. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/uploaders/__init__.py +0 -0
  85. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/uploaders/compress_wastickers.py +0 -0
  86. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/uploaders/upload_base.py +0 -0
  87. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/uploaders/upload_signal.py +0 -0
  88. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/uploaders/upload_telegram.py +0 -0
  89. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/uploaders/xcode_imessage.py +0 -0
  90. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/auth/get_kakao_auth.py +0 -0
  91. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/auth/get_line_auth.py +0 -0
  92. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/auth/get_signal_auth.py +0 -0
  93. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/callback.py +0 -0
  94. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/files/cache_store.py +0 -0
  95. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/files/json_manager.py +0 -0
  96. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/files/json_resources_loader.py +0 -0
  97. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/files/metadata_handler.py +0 -0
  98. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/files/run_bin.py +0 -0
  99. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/files/sanitize_filename.py +0 -0
  100. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/media/apple_png_normalize.py +0 -0
  101. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/media/codec_info.py +0 -0
  102. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/media/decrypt_kakao.py +0 -0
  103. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/media/format_verify.py +0 -0
  104. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert/utils/url_detect.py +0 -0
  105. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert.egg-info/SOURCES.txt +0 -0
  106. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert.egg-info/dependency_links.txt +0 -0
  107. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert.egg-info/entry_points.txt +0 -0
  108. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/src/sticker_convert.egg-info/top_level.txt +0 -0
  109. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/tests/test_compression.py +0 -0
  110. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/tests/test_download.py +0 -0
  111. {sticker_convert-2.8.9 → sticker_convert-2.8.10}/tests/test_export.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sticker-convert
3
- Version: 2.8.9
3
+ Version: 2.8.10
4
4
  Summary: Convert (animated) stickers to/from WhatsApp, Telegram, Signal, Line, Kakao, Viber, iMessage. Written in Python.
5
5
  Author-email: laggykiller <chaudominic2@gmail.com>
6
6
  Maintainer-email: laggykiller <chaudominic2@gmail.com>
@@ -365,9 +365,9 @@ Requires-Python: >=3.8
365
365
  Description-Content-Type: text/markdown
366
366
  License-File: LICENSE
367
367
  Requires-Dist: aiolimiter~=1.1.0
368
- Requires-Dist: anyio~=4.3.0
369
- Requires-Dist: apngasm_python~=1.2.3
370
- Requires-Dist: av~=12.0.0
368
+ Requires-Dist: anyio~=4.4.0
369
+ Requires-Dist: apngasm_python~=1.3.1
370
+ Requires-Dist: av~=12.1.0
371
371
  Requires-Dist: beautifulsoup4~=4.12.3
372
372
  Requires-Dist: rookiepy~=0.5.1
373
373
  Requires-Dist: imagequant~=1.1.1
@@ -376,14 +376,13 @@ Requires-Dist: mergedeep~=1.3.4
376
376
  Requires-Dist: numpy>=1.22.4
377
377
  Requires-Dist: Pillow~=10.3.0
378
378
  Requires-Dist: pyoxipng~=9.0.0
379
- Requires-Dist: python-telegram-bot~=21.1
380
- Requires-Dist: requests~=2.31.0
379
+ Requires-Dist: python-telegram-bot~=21.2
380
+ Requires-Dist: requests~=2.32.2
381
381
  Requires-Dist: rlottie_python~=1.3.4
382
382
  Requires-Dist: signalstickers-client-fork-laggykiller~=3.3.0.post1
383
383
  Requires-Dist: sqlcipher3-wheels~=0.5.2.post1
384
384
  Requires-Dist: tqdm~=4.66.4
385
385
  Requires-Dist: ttkbootstrap-fork-laggykiller~=1.5.1
386
- Requires-Dist: webp~=0.3.0
387
386
 
388
387
  # sticker-convert
389
388
  ![imgs/banner.png](imgs/banner.png)
@@ -479,22 +478,28 @@ Requires-Dist: webp~=0.3.0
479
478
  To run in CLI mode, pass on any arguments
480
479
 
481
480
  ```
482
- usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS] [--input-dir INPUT_DIR]
481
+ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS]
482
+ [--input-dir INPUT_DIR]
483
483
  [--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO | --download-viber DOWNLOAD_VIBER]
484
484
  [--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE]
485
- [--export-signal | --export-telegram | --export-telegram-emoji | --export-whatsapp | --export-imessage] [--no-compress]
485
+ [--export-signal | --export-telegram | --export-telegram-emoji | --export-whatsapp | --export-imessage]
486
+ [--no-compress]
486
487
  [--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,imessage_small,imessage_medium,imessage_large,custom}]
487
- [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--fps-power FPS_POWER] [--res-min RES_MIN]
488
- [--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX]
489
- [--res-power RES_POWER] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER] [--color-min COLOR_MIN]
490
- [--color-max COLOR_MAX] [--color-power COLOR_POWER] [--duration-min DURATION_MIN] [--duration-max DURATION_MAX]
491
- [--padding-percent PADDING_PERCENT] [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX]
492
- [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD]
493
- [--force-pywebp] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD]
494
- [--signal-get-auth] [--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID]
495
- [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD]
496
- [--kakao-country-code KAKAO_COUNTRY_CODE] [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
497
- [--save-cred SAVE_CRED]
488
+ [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX]
489
+ [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN]
490
+ [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER]
491
+ [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
492
+ [--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
493
+ [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT]
494
+ [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX]
495
+ [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
496
+ [--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI]
497
+ [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
498
+ [--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN]
499
+ [--telegram-userid TELEGRAM_USERID] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth]
500
+ [--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD]
501
+ [--kakao-country-code KAKAO_COUNTRY_CODE] [--kakao-phone-number KAKAO_PHONE_NUMBER]
502
+ [--line-get-auth] [--line-cookies LINE_COOKIES] [--save-cred SAVE_CRED]
498
503
 
499
504
  CLI for stickers-convert
500
505
 
@@ -620,7 +625,6 @@ Compression options:
620
625
  - imagequant = Best quality but slow
621
626
  - fastoctree = Fast but image looks chunky
622
627
  - none = No image quantizing, large image size as result
623
- --force-pywebp Force using pywebp for encoding webp files instead of Pillow.
624
628
  --cache-dir CACHE_DIR
625
629
  Set custom cache directory.
626
630
  Useful for debugging, or speed up conversion if cache_dir is on RAM disk.
@@ -92,22 +92,28 @@
92
92
  To run in CLI mode, pass on any arguments
93
93
 
94
94
  ```
95
- usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS] [--input-dir INPUT_DIR]
95
+ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS]
96
+ [--input-dir INPUT_DIR]
96
97
  [--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO | --download-viber DOWNLOAD_VIBER]
97
98
  [--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE]
98
- [--export-signal | --export-telegram | --export-telegram-emoji | --export-whatsapp | --export-imessage] [--no-compress]
99
+ [--export-signal | --export-telegram | --export-telegram-emoji | --export-whatsapp | --export-imessage]
100
+ [--no-compress]
99
101
  [--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,imessage_small,imessage_medium,imessage_large,custom}]
100
- [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--fps-power FPS_POWER] [--res-min RES_MIN]
101
- [--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX]
102
- [--res-power RES_POWER] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER] [--color-min COLOR_MIN]
103
- [--color-max COLOR_MAX] [--color-power COLOR_POWER] [--duration-min DURATION_MIN] [--duration-max DURATION_MAX]
104
- [--padding-percent PADDING_PERCENT] [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX]
105
- [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD]
106
- [--force-pywebp] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD]
107
- [--signal-get-auth] [--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID]
108
- [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD]
109
- [--kakao-country-code KAKAO_COUNTRY_CODE] [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
110
- [--save-cred SAVE_CRED]
102
+ [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX]
103
+ [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN]
104
+ [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER]
105
+ [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
106
+ [--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
107
+ [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT]
108
+ [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX]
109
+ [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
110
+ [--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI]
111
+ [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
112
+ [--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN]
113
+ [--telegram-userid TELEGRAM_USERID] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth]
114
+ [--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD]
115
+ [--kakao-country-code KAKAO_COUNTRY_CODE] [--kakao-phone-number KAKAO_PHONE_NUMBER]
116
+ [--line-get-auth] [--line-cookies LINE_COOKIES] [--save-cred SAVE_CRED]
111
117
 
112
118
  CLI for stickers-convert
113
119
 
@@ -233,7 +239,6 @@ Compression options:
233
239
  - imagequant = Best quality but slow
234
240
  - fastoctree = Fast but image looks chunky
235
241
  - none = No image quantizing, large image size as result
236
- --force-pywebp Force using pywebp for encoding webp files instead of Pillow.
237
242
  --cache-dir CACHE_DIR
238
243
  Set custom cache directory.
239
244
  Useful for debugging, or speed up conversion if cache_dir is on RAM disk.
@@ -1,7 +1,7 @@
1
1
  aiolimiter~=1.1.0
2
- anyio~=4.3.0
3
- apngasm_python~=1.2.3
4
- av~=12.0.0
2
+ anyio~=4.4.0
3
+ apngasm_python~=1.3.1
4
+ av~=12.1.0
5
5
  beautifulsoup4~=4.12.3
6
6
  rookiepy~=0.5.1
7
7
  imagequant~=1.1.1
@@ -10,11 +10,10 @@ mergedeep~=1.3.4
10
10
  numpy>=1.22.4
11
11
  Pillow~=10.3.0
12
12
  pyoxipng~=9.0.0
13
- python-telegram-bot~=21.1
14
- requests~=2.31.0
13
+ python-telegram-bot~=21.2
14
+ requests~=2.32.2
15
15
  rlottie_python~=1.3.4
16
16
  signalstickers-client-fork-laggykiller~=3.3.0.post1
17
17
  sqlcipher3-wheels~=0.5.2.post1
18
18
  tqdm~=4.66.4
19
- ttkbootstrap-fork-laggykiller~=1.5.1
20
- webp~=0.3.0
19
+ ttkbootstrap-fork-laggykiller~=1.5.1
@@ -136,7 +136,7 @@ class CLI:
136
136
  "scale_filter",
137
137
  "quantize_method",
138
138
  )
139
- flags_comp_bool = ("fake_vid", "force_pywebp")
139
+ flags_comp_bool = ("fake_vid",)
140
140
  keyword_args: Dict[str, Any]
141
141
  for k, v in self.help["comp"].items():
142
142
  if k in flags_comp_int:
@@ -390,9 +390,6 @@ class CLI:
390
390
  fake_vid=self.compression_presets[preset]["fake_vid"]
391
391
  if args.fake_vid is None
392
392
  else args.fake_vid,
393
- force_pywebp=self.compression_presets[preset]["force_pywebp"]
394
- if args.force_pywebp is None
395
- else args.force_pywebp,
396
393
  cache_dir=args.cache_dir,
397
394
  scale_filter=self.compression_presets[preset]["scale_filter"]
398
395
  if args.scale_filter is None
@@ -33,19 +33,6 @@ MSG_FAIL_COMP = (
33
33
  "[F] Failed Compression {} -> {}, "
34
34
  "cannot get below limit {} with lowest quality under current settings (Best size: {})"
35
35
  )
36
- MSG_PYWEBP_FLAG_SET = "`--force-pywebp` was set\n"
37
- MSG_PYWEBP_NO_LIBWEBP = "system WebP>=0.5.0 was not found.\n"
38
- MSG_PYWEBP_DUPFRAME = (
39
- "[W] {} contains duplicated frame.\n"
40
- " Using pywebp instead of Pillow as {}"
41
- " This is faster, but known to collapse same frames into single frame,\n"
42
- " causing problem with animation timing."
43
- )
44
- MSG_WEBP_PIL_DUPFRAME = (
45
- "[W] {} contains duplicated frame.\n"
46
- " Using Pillow to create animated webp to avoid same frames collapse\n"
47
- " into single frame, but this is slower."
48
- )
49
36
 
50
37
  YUV_RGB_MATRIX = np.array(
51
38
  [
@@ -197,8 +184,6 @@ class StickerConvert:
197
184
  self.result_step: Optional[int] = None
198
185
 
199
186
  self.apngasm = None
200
- self.msg_pywebp_dupframe_displayed = False
201
- self.msg_webp_pil_dupframe_displayed = False
202
187
 
203
188
  @staticmethod
204
189
  def convert(
@@ -698,11 +683,9 @@ class StickerConvert:
698
683
  self._frames_export_apng()
699
684
  else:
700
685
  self._frames_export_png()
701
- elif self.out_f.suffix == ".webp":
702
- self._frames_export_webp()
703
686
  elif self.out_f.suffix == ".gif":
704
687
  self._frames_export_pil_anim()
705
- elif self.out_f.suffix in (".webm", ".mp4", ".mkv") or is_animated:
688
+ elif self.out_f.suffix in (".webm", ".mp4", ".mkv", ".webp") or is_animated:
706
689
  self._frames_export_pyav()
707
690
  else:
708
691
  self._frames_export_pil()
@@ -719,46 +702,6 @@ class StickerConvert:
719
702
 
720
703
  return False
721
704
 
722
- def _frames_export_webp(self) -> None:
723
- # TODO: Encode webp with pyav when available
724
- # https://github.com/PyAV-Org/PyAV/issues/1352
725
- has_dup_frames = self._check_dup()
726
- if self.fps:
727
- # It was noted that pywebp would collapse all frames.
728
- # aed005b attempted to fix this by creating webp with
729
- # variable frame duration. However, the webp created would
730
- # not be accepted by WhatsApp.
731
- # Therefore, we are preferring Pillow over pywebp.
732
- if has_dup_frames:
733
- if self.opt_comp.force_pywebp:
734
- if not self.msg_pywebp_dupframe_displayed:
735
- self.cb.put(
736
- MSG_PYWEBP_DUPFRAME.format(
737
- self.in_f_name, MSG_PYWEBP_FLAG_SET
738
- )
739
- )
740
- self.msg_pywebp_dupframe_displayed = True
741
- self._frames_export_pywebp()
742
- elif not PIL_WEBP_ANIM:
743
- if not self.msg_pywebp_dupframe_displayed:
744
- self.cb.put(
745
- MSG_PYWEBP_DUPFRAME.format(
746
- self.in_f_name, MSG_PYWEBP_NO_LIBWEBP
747
- )
748
- )
749
- self.msg_pywebp_dupframe_displayed = True
750
- self._frames_export_pywebp()
751
- else:
752
- # Warn that using Pillow is slower
753
- if not self.msg_webp_pil_dupframe_displayed:
754
- self.cb.put(MSG_WEBP_PIL_DUPFRAME.format(self.in_f_name))
755
- self.msg_webp_pil_dupframe_displayed = True
756
- self._frames_export_pil_anim()
757
- else:
758
- self._frames_export_pywebp()
759
- else:
760
- self._frames_export_pil()
761
-
762
705
  def _frames_export_pil(self) -> None:
763
706
  with Image.fromarray(self.frames_processed[0]) as im: # type: ignore
764
707
  im.save(
@@ -771,30 +714,38 @@ class StickerConvert:
771
714
  import av
772
715
  from av.video.stream import VideoStream
773
716
 
774
- options: Dict[str, str] = {}
717
+ options_container: Dict[str, str] = {}
718
+ options_stream: Dict[str, str] = {}
775
719
 
776
720
  if isinstance(self.quality, int):
777
721
  # Seems not actually working
778
- options["quality"] = str(self.quality)
779
- options["lossless"] = "0"
722
+ options_stream["quality"] = str(self.quality)
723
+ options_stream["lossless"] = "0"
780
724
 
781
725
  if self.out_f.suffix in (".apng", ".png"):
782
726
  codec = "apng"
783
727
  pixel_format = "rgba"
784
- options["plays"] = "0"
728
+ options_container["plays"] = "0"
785
729
  elif self.out_f.suffix in (".webm", ".mkv"):
786
730
  codec = "libvpx-vp9"
787
731
  pixel_format = "yuva420p"
788
- options["loop"] = "0"
732
+ options_container["loop"] = "0"
733
+ elif self.out_f.suffix == ".webp":
734
+ codec = "webp"
735
+ pixel_format = "yuva420p"
736
+ options_container["loop"] = "0"
789
737
  else:
790
738
  codec = "libvpx-vp9"
791
739
  pixel_format = "yuv420p"
792
- options["loop"] = "0"
740
+ options_container["loop"] = "0"
793
741
 
794
742
  with av.open(
795
- self.tmp_f, "w", format=self.out_f.suffix.replace(".", "")
743
+ self.tmp_f,
744
+ "w",
745
+ format=self.out_f.suffix.replace(".", ""),
746
+ options=options_container,
796
747
  ) as output:
797
- out_stream = output.add_stream(codec, rate=self.fps, options=options)
748
+ out_stream = output.add_stream(codec, rate=self.fps, options=options_stream)
798
749
  out_stream = cast(VideoStream, out_stream)
799
750
  assert isinstance(self.res_w, int) and isinstance(self.res_h, int)
800
751
  out_stream.width = self.res_w
@@ -858,21 +809,6 @@ class StickerConvert:
858
809
  **extra_kwargs,
859
810
  )
860
811
 
861
- def _frames_export_pywebp(self) -> None:
862
- import webp # type: ignore
863
-
864
- assert self.fps
865
-
866
- config = webp.WebPConfig.new(quality=self.quality) # type: ignore
867
- enc = webp.WebPAnimEncoder.new(self.res_w, self.res_h) # type: ignore
868
- timestamp_ms = 0
869
- for frame in self.frames_processed:
870
- pic = webp.WebPPicture.from_numpy(frame) # type: ignore
871
- enc.encode_frame(pic, timestamp_ms, config=config) # type: ignore
872
- timestamp_ms += int(1000 / self.fps)
873
- anim_data = enc.assemble(timestamp_ms) # type: ignore
874
- self.tmp_f.write(anim_data.buffer()) # type: ignore
875
-
876
812
  def _frames_export_png(self) -> None:
877
813
  with Image.fromarray(self.frames_processed[0], "RGBA") as image: # type: ignore
878
814
  image_quant = self.quantize(image)
@@ -135,7 +135,6 @@ class GUI(Window):
135
135
  self.fake_vid_var = BooleanVar()
136
136
  self.scale_filter_var = StringVar(self)
137
137
  self.quantize_method_var = StringVar(self)
138
- self.force_pywebp_var = BooleanVar()
139
138
  self.cache_dir_var = StringVar(self)
140
139
  self.default_emoji_var = StringVar(self)
141
140
  self.steps_var = IntVar(self)
@@ -526,7 +525,6 @@ class GUI(Window):
526
525
  fake_vid=self.fake_vid_var.get(),
527
526
  scale_filter=self.scale_filter_var.get(),
528
527
  quantize_method=self.quantize_method_var.get(),
529
- force_pywebp=self.force_pywebp_var.get(),
530
528
  cache_dir=self.cache_dir_var.get()
531
529
  if self.cache_dir_var.get() != ""
532
530
  else None,
@@ -135,7 +135,6 @@ class CompFrame(LabelFrame):
135
135
  self.gui.fake_vid_var.set(preset.get("fake_vid"))
136
136
  self.gui.scale_filter_var.set(preset.get("scale_filter"))
137
137
  self.gui.quantize_method_var.set(preset.get("quantize_method"))
138
- self.gui.force_pywebp_var.set(preset.get("force_pywebp"))
139
138
  self.gui.default_emoji_var.set(preset.get("default_emoji"))
140
139
  self.gui.steps_var.set(preset.get("steps"))
141
140
 
@@ -293,18 +293,6 @@ class AdvancedCompressionWindow(BaseWindow):
293
293
  bootstyle="secondary", # type: ignore
294
294
  )
295
295
 
296
- self.force_pywebp_help_btn = self.add_help_btn(
297
- self.gui.help["comp"]["force_pywebp"]
298
- )
299
- self.force_pywebp_lbl = Label(self.frame_advcomp, text="Force pywebp")
300
- self.force_pywebp_cbox = Checkbutton(
301
- self.frame_advcomp,
302
- variable=self.gui.force_pywebp_var,
303
- onvalue=True,
304
- offvalue=False,
305
- bootstyle="success-round-toggle", # type: ignore
306
- )
307
-
308
296
  self.cache_dir_help_btn = self.add_help_btn(self.gui.help["comp"]["cache_dir"])
309
297
  self.cache_dir_lbl = Label(self.frame_advcomp, text="Custom cache directory")
310
298
  self.cache_dir_entry = Entry(
@@ -424,10 +412,6 @@ class AdvancedCompressionWindow(BaseWindow):
424
412
  column=2, row=r, columnspan=4, sticky="nes", padx=3, pady=3
425
413
  )
426
414
  r += 1
427
- self.force_pywebp_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
428
- self.force_pywebp_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
429
- self.force_pywebp_cbox.grid(column=6, row=r, sticky="nes", padx=3, pady=3)
430
- r += 1
431
415
  self.cache_dir_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
432
416
  self.cache_dir_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
433
417
  self.cache_dir_entry.grid(
@@ -74,7 +74,6 @@ class CompOption(BaseOption):
74
74
  steps: int = 1
75
75
  fake_vid: Optional[bool] = None
76
76
  quantize_method: Optional[str] = None
77
- force_pywebp: Optional[bool] = None
78
77
  scale_filter: Optional[str] = None
79
78
  cache_dir: Optional[str] = None
80
79
  default_emoji: str = "😀"
@@ -44,7 +44,6 @@
44
44
  "fake_vid": false,
45
45
  "scale_filter": "bicubic",
46
46
  "quantize_method": "imagequant",
47
- "force_pywebp": false,
48
47
  "default_emoji": "😀"
49
48
  },
50
49
  "signal": {
@@ -92,7 +91,6 @@
92
91
  "fake_vid": false,
93
92
  "scale_filter": "bicubic",
94
93
  "quantize_method": "imagequant",
95
- "force_pywebp": false,
96
94
  "default_emoji": "😀"
97
95
  },
98
96
  "telegram": {
@@ -140,7 +138,6 @@
140
138
  "fake_vid": false,
141
139
  "scale_filter": "bicubic",
142
140
  "quantize_method": "imagequant",
143
- "force_pywebp": false,
144
141
  "default_emoji": "😀"
145
142
  },
146
143
  "telegram_emoji": {
@@ -188,7 +185,6 @@
188
185
  "fake_vid": false,
189
186
  "scale_filter": "bicubic",
190
187
  "quantize_method": "imagequant",
191
- "force_pywebp": false,
192
188
  "default_emoji": "😀"
193
189
  },
194
190
  "whatsapp": {
@@ -236,7 +232,6 @@
236
232
  "fake_vid": true,
237
233
  "scale_filter": "bicubic",
238
234
  "quantize_method": "imagequant",
239
- "force_pywebp": false,
240
235
  "default_emoji": "😀"
241
236
  },
242
237
  "line": {
@@ -284,7 +279,6 @@
284
279
  "fake_vid": false,
285
280
  "scale_filter": "bicubic",
286
281
  "quantize_method": "imagequant",
287
- "force_pywebp": false,
288
282
  "default_emoji": "😀"
289
283
  },
290
284
  "kakao": {
@@ -332,7 +326,6 @@
332
326
  "fake_vid": false,
333
327
  "scale_filter": "bicubic",
334
328
  "quantize_method": "imagequant",
335
- "force_pywebp": false,
336
329
  "default_emoji": "😀"
337
330
  },
338
331
  "viber": {
@@ -380,7 +373,6 @@
380
373
  "fake_vid": false,
381
374
  "scale_filter": "bicubic",
382
375
  "quantize_method": "imagequant",
383
- "force_pywebp": false,
384
376
  "default_emoji": "😀"
385
377
  },
386
378
  "imessage_small": {
@@ -428,7 +420,6 @@
428
420
  "fake_vid": false,
429
421
  "scale_filter": "bicubic",
430
422
  "quantize_method": "imagequant",
431
- "force_pywebp": false,
432
423
  "default_emoji": "😀"
433
424
  },
434
425
  "imessage_medium": {
@@ -476,7 +467,6 @@
476
467
  "fake_vid": false,
477
468
  "scale_filter": "bicubic",
478
469
  "quantize_method": "imagequant",
479
- "force_pywebp": false,
480
470
  "default_emoji": "😀"
481
471
  },
482
472
  "imessage_large": {
@@ -524,7 +514,6 @@
524
514
  "fake_vid": false,
525
515
  "scale_filter": "bicubic",
526
516
  "quantize_method": "imagequant",
527
- "force_pywebp": false,
528
517
  "default_emoji": "😀"
529
518
  },
530
519
  "custom": {
@@ -572,7 +561,6 @@
572
561
  "fake_vid": false,
573
562
  "scale_filter": "bicubic",
574
563
  "quantize_method": "imagequant",
575
- "force_pywebp": false,
576
564
  "default_emoji": "😀"
577
565
  }
578
566
  }
@@ -51,7 +51,6 @@
51
51
  "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.",
52
52
  "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",
53
53
  "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",
54
- "force_pywebp": "Force using pywebp for encoding webp files instead of Pillow.",
55
54
  "cache_dir": "Set custom cache directory.\nUseful for debugging, or speed up conversion if cache_dir is on RAM disk.",
56
55
  "default_emoji": "Set the default emoji for uploading Signal and Telegram sticker packs."
57
56
  },
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
- __version__ = "2.8.9"
3
+ __version__ = "2.8.10"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sticker-convert
3
- Version: 2.8.9
3
+ Version: 2.8.10
4
4
  Summary: Convert (animated) stickers to/from WhatsApp, Telegram, Signal, Line, Kakao, Viber, iMessage. Written in Python.
5
5
  Author-email: laggykiller <chaudominic2@gmail.com>
6
6
  Maintainer-email: laggykiller <chaudominic2@gmail.com>
@@ -365,9 +365,9 @@ Requires-Python: >=3.8
365
365
  Description-Content-Type: text/markdown
366
366
  License-File: LICENSE
367
367
  Requires-Dist: aiolimiter~=1.1.0
368
- Requires-Dist: anyio~=4.3.0
369
- Requires-Dist: apngasm_python~=1.2.3
370
- Requires-Dist: av~=12.0.0
368
+ Requires-Dist: anyio~=4.4.0
369
+ Requires-Dist: apngasm_python~=1.3.1
370
+ Requires-Dist: av~=12.1.0
371
371
  Requires-Dist: beautifulsoup4~=4.12.3
372
372
  Requires-Dist: rookiepy~=0.5.1
373
373
  Requires-Dist: imagequant~=1.1.1
@@ -376,14 +376,13 @@ Requires-Dist: mergedeep~=1.3.4
376
376
  Requires-Dist: numpy>=1.22.4
377
377
  Requires-Dist: Pillow~=10.3.0
378
378
  Requires-Dist: pyoxipng~=9.0.0
379
- Requires-Dist: python-telegram-bot~=21.1
380
- Requires-Dist: requests~=2.31.0
379
+ Requires-Dist: python-telegram-bot~=21.2
380
+ Requires-Dist: requests~=2.32.2
381
381
  Requires-Dist: rlottie_python~=1.3.4
382
382
  Requires-Dist: signalstickers-client-fork-laggykiller~=3.3.0.post1
383
383
  Requires-Dist: sqlcipher3-wheels~=0.5.2.post1
384
384
  Requires-Dist: tqdm~=4.66.4
385
385
  Requires-Dist: ttkbootstrap-fork-laggykiller~=1.5.1
386
- Requires-Dist: webp~=0.3.0
387
386
 
388
387
  # sticker-convert
389
388
  ![imgs/banner.png](imgs/banner.png)
@@ -479,22 +478,28 @@ Requires-Dist: webp~=0.3.0
479
478
  To run in CLI mode, pass on any arguments
480
479
 
481
480
  ```
482
- usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS] [--input-dir INPUT_DIR]
481
+ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS]
482
+ [--input-dir INPUT_DIR]
483
483
  [--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO | --download-viber DOWNLOAD_VIBER]
484
484
  [--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE]
485
- [--export-signal | --export-telegram | --export-telegram-emoji | --export-whatsapp | --export-imessage] [--no-compress]
485
+ [--export-signal | --export-telegram | --export-telegram-emoji | --export-whatsapp | --export-imessage]
486
+ [--no-compress]
486
487
  [--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,imessage_small,imessage_medium,imessage_large,custom}]
487
- [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--fps-power FPS_POWER] [--res-min RES_MIN]
488
- [--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX]
489
- [--res-power RES_POWER] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER] [--color-min COLOR_MIN]
490
- [--color-max COLOR_MAX] [--color-power COLOR_POWER] [--duration-min DURATION_MIN] [--duration-max DURATION_MAX]
491
- [--padding-percent PADDING_PERCENT] [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX]
492
- [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD]
493
- [--force-pywebp] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD]
494
- [--signal-get-auth] [--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID]
495
- [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD]
496
- [--kakao-country-code KAKAO_COUNTRY_CODE] [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
497
- [--save-cred SAVE_CRED]
488
+ [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX]
489
+ [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN]
490
+ [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER]
491
+ [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
492
+ [--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
493
+ [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT]
494
+ [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX]
495
+ [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
496
+ [--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI]
497
+ [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
498
+ [--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN]
499
+ [--telegram-userid TELEGRAM_USERID] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth]
500
+ [--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD]
501
+ [--kakao-country-code KAKAO_COUNTRY_CODE] [--kakao-phone-number KAKAO_PHONE_NUMBER]
502
+ [--line-get-auth] [--line-cookies LINE_COOKIES] [--save-cred SAVE_CRED]
498
503
 
499
504
  CLI for stickers-convert
500
505
 
@@ -620,7 +625,6 @@ Compression options:
620
625
  - imagequant = Best quality but slow
621
626
  - fastoctree = Fast but image looks chunky
622
627
  - none = No image quantizing, large image size as result
623
- --force-pywebp Force using pywebp for encoding webp files instead of Pillow.
624
628
  --cache-dir CACHE_DIR
625
629
  Set custom cache directory.
626
630
  Useful for debugging, or speed up conversion if cache_dir is on RAM disk.
@@ -1,7 +1,7 @@
1
1
  aiolimiter~=1.1.0
2
- anyio~=4.3.0
3
- apngasm_python~=1.2.3
4
- av~=12.0.0
2
+ anyio~=4.4.0
3
+ apngasm_python~=1.3.1
4
+ av~=12.1.0
5
5
  beautifulsoup4~=4.12.3
6
6
  rookiepy~=0.5.1
7
7
  imagequant~=1.1.1
@@ -10,11 +10,10 @@ mergedeep~=1.3.4
10
10
  numpy>=1.22.4
11
11
  Pillow~=10.3.0
12
12
  pyoxipng~=9.0.0
13
- python-telegram-bot~=21.1
14
- requests~=2.31.0
13
+ python-telegram-bot~=21.2
14
+ requests~=2.32.2
15
15
  rlottie_python~=1.3.4
16
16
  signalstickers-client-fork-laggykiller~=3.3.0.post1
17
17
  sqlcipher3-wheels~=0.5.2.post1
18
18
  tqdm~=4.66.4
19
19
  ttkbootstrap-fork-laggykiller~=1.5.1
20
- webp~=0.3.0