sticker-convert 2.8.1__tar.gz → 2.8.2__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. {sticker-convert-2.8.1/src/sticker_convert.egg-info → sticker-convert-2.8.2}/PKG-INFO +18 -15
  2. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/README.md +17 -14
  3. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/cli.py +4 -0
  4. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/converter.py +5 -4
  5. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/downloaders/download_telegram.py +1 -1
  6. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui.py +3 -1
  7. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/windows/advanced_compression_window.py +117 -101
  8. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/job.py +9 -8
  9. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/job_option.py +3 -0
  10. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/resources/compression.json +11 -0
  11. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/resources/help.json +1 -0
  12. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/uploaders/upload_telegram.py +1 -1
  13. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/version.py +1 -1
  14. {sticker-convert-2.8.1 → sticker-convert-2.8.2/src/sticker_convert.egg-info}/PKG-INFO +18 -15
  15. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/LICENSE +0 -0
  16. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/MANIFEST.in +0 -0
  17. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/pyproject.toml +0 -0
  18. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/requirements.txt +0 -0
  19. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/setup.cfg +0 -0
  20. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/__init__.py +0 -0
  21. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/__main__.py +0 -0
  22. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/definitions.py +0 -0
  23. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/downloaders/__init__.py +0 -0
  24. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/downloaders/download_base.py +0 -0
  25. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/downloaders/download_kakao.py +0 -0
  26. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/downloaders/download_line.py +0 -0
  27. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/downloaders/download_signal.py +0 -0
  28. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/__init__.py +0 -0
  29. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/frames/__init__.py +0 -0
  30. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/frames/comp_frame.py +0 -0
  31. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/frames/config_frame.py +0 -0
  32. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/frames/control_frame.py +0 -0
  33. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/frames/cred_frame.py +0 -0
  34. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/frames/input_frame.py +0 -0
  35. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/frames/output_frame.py +0 -0
  36. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/frames/progress_frame.py +0 -0
  37. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/frames/right_clicker.py +0 -0
  38. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/gui_utils.py +0 -0
  39. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/windows/__init__.py +0 -0
  40. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/windows/base_window.py +0 -0
  41. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/windows/kakao_get_auth_window.py +0 -0
  42. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/windows/line_get_auth_window.py +0 -0
  43. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/gui_components/windows/signal_get_auth_window.py +0 -0
  44. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/.github/FUNDING.yml +0 -0
  45. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/.gitignore +0 -0
  46. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/README.md +0 -0
  47. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/stickers/Info.plist +0 -0
  48. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Info.plist +0 -0
  49. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Contents.json +0 -0
  50. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Contents.json +0 -0
  51. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Contents.json +0 -0
  59. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/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.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.pbxproj +0 -0
  72. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
  73. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
  74. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcuserdata/niklaspeterson.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  75. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/xcuserdata/niklaspeterson.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
  76. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/resources/NotoColorEmoji.ttf +0 -0
  77. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/resources/appicon.icns +0 -0
  78. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/resources/appicon.ico +0 -0
  79. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/resources/appicon.png +0 -0
  80. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/resources/emoji.json +0 -0
  81. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/resources/input.json +0 -0
  82. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/resources/output.json +0 -0
  83. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/uploaders/__init__.py +0 -0
  84. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/uploaders/compress_wastickers.py +0 -0
  85. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/uploaders/upload_base.py +0 -0
  86. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/uploaders/upload_signal.py +0 -0
  87. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/uploaders/xcode_imessage.py +0 -0
  88. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/auth/get_kakao_auth.py +0 -0
  89. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/auth/get_line_auth.py +0 -0
  90. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/auth/get_signal_auth.py +0 -0
  91. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/callback.py +0 -0
  92. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/files/cache_store.py +0 -0
  93. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/files/json_manager.py +0 -0
  94. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/files/json_resources_loader.py +0 -0
  95. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/files/metadata_handler.py +0 -0
  96. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/files/run_bin.py +0 -0
  97. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/files/sanitize_filename.py +0 -0
  98. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/media/apple_png_normalize.py +0 -0
  99. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/media/codec_info.py +0 -0
  100. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/media/decrypt_kakao.py +0 -0
  101. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/media/format_verify.py +0 -0
  102. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert/utils/url_detect.py +0 -0
  103. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert.egg-info/SOURCES.txt +0 -0
  104. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert.egg-info/dependency_links.txt +0 -0
  105. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert.egg-info/entry_points.txt +0 -0
  106. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert.egg-info/requires.txt +0 -0
  107. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/src/sticker_convert.egg-info/top_level.txt +0 -0
  108. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/tests/test_compression.py +0 -0
  109. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/tests/test_download.py +0 -0
  110. {sticker-convert-2.8.1 → sticker-convert-2.8.2}/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.1
3
+ Version: 2.8.2
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>
@@ -483,23 +483,24 @@ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--custom-presets CUST
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]
487
- [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
488
- [--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
489
- [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--bg-color BG_COLOR]
490
- [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT]
491
- [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
492
- [--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI]
493
- [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
494
- [--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN]
495
- [--telegram-userid TELEGRAM_USERID] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth]
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]
498
- [--line-cookies LINE_COOKIES] [--save-cred SAVE_CRED]
486
+ [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX]
487
+ [--res-power RES_POWER] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX]
488
+ [--quality-power QUALITY_POWER] [--color-min COLOR_MIN] [--color-max COLOR_MAX]
489
+ [--color-power COLOR_POWER] [--duration-min DURATION_MIN] [--duration-max DURATION_MAX]
490
+ [--padding-percent PADDING_PERCENT] [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX]
491
+ [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT] [--img-format IMG_FORMAT]
492
+ [--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD]
493
+ [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID]
494
+ [--signal-password SIGNAL_PASSWORD] [--signal-get-auth] [--signal-data-dir SIGNAL_DATA_DIR]
495
+ [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID]
496
+ [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-username KAKAO_USERNAME]
497
+ [--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
498
+ [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
499
+ [--save-cred SAVE_CRED]
499
500
 
500
501
  CLI for stickers-convert
501
502
 
502
- optional arguments:
503
+ options:
503
504
  -h, --help show this help message and exit
504
505
  --version show program's version number and exit
505
506
  --no-confirm Do not ask any questions.
@@ -585,6 +586,8 @@ Compression options:
585
586
  Set minimum output duration in miliseconds.
586
587
  --duration-max DURATION_MAX
587
588
  Set maximum output duration in miliseconds.
589
+ --padding-percent PADDING_PERCENT
590
+ Set percentage of space used as padding.
588
591
  --bg-color BG_COLOR Set custom background color.
589
592
  Example: 00ff00 for green.
590
593
  If this is not set, background color would be auto set to black if image is bright, or white if image is dark.
@@ -96,23 +96,24 @@ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--custom-presets CUST
96
96
  [--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,imessage_small,imessage_medium,imessage_large,custom}]
97
97
  [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX]
98
98
  [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN]
99
- [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER]
100
- [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
101
- [--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
102
- [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--bg-color BG_COLOR]
103
- [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT]
104
- [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
105
- [--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI]
106
- [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
107
- [--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN]
108
- [--telegram-userid TELEGRAM_USERID] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth]
109
- [--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD]
110
- [--kakao-country-code KAKAO_COUNTRY_CODE] [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth]
111
- [--line-cookies LINE_COOKIES] [--save-cred SAVE_CRED]
99
+ [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX]
100
+ [--res-power RES_POWER] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX]
101
+ [--quality-power QUALITY_POWER] [--color-min COLOR_MIN] [--color-max COLOR_MAX]
102
+ [--color-power COLOR_POWER] [--duration-min DURATION_MIN] [--duration-max DURATION_MAX]
103
+ [--padding-percent PADDING_PERCENT] [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX]
104
+ [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT] [--img-format IMG_FORMAT]
105
+ [--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD]
106
+ [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID]
107
+ [--signal-password SIGNAL_PASSWORD] [--signal-get-auth] [--signal-data-dir SIGNAL_DATA_DIR]
108
+ [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID]
109
+ [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-username KAKAO_USERNAME]
110
+ [--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
111
+ [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
112
+ [--save-cred SAVE_CRED]
112
113
 
113
114
  CLI for stickers-convert
114
115
 
115
- optional arguments:
116
+ options:
116
117
  -h, --help show this help message and exit
117
118
  --version show program's version number and exit
118
119
  --no-confirm Do not ask any questions.
@@ -198,6 +199,8 @@ Compression options:
198
199
  Set minimum output duration in miliseconds.
199
200
  --duration-max DURATION_MAX
200
201
  Set maximum output duration in miliseconds.
202
+ --padding-percent PADDING_PERCENT
203
+ Set percentage of space used as padding.
201
204
  --bg-color BG_COLOR Set custom background color.
202
205
  Example: 00ff00 for green.
203
206
  If this is not set, background color would be auto set to black if image is bright, or white if image is dark.
@@ -119,6 +119,7 @@ class CLI:
119
119
  "duration_max",
120
120
  "vid_size_max",
121
121
  "img_size_max",
122
+ "padding_percent",
122
123
  )
123
124
  flags_comp_float = ("fps_power", "res_power", "quality_power", "color_power")
124
125
  flags_comp_str = (
@@ -372,6 +373,9 @@ class CLI:
372
373
  bg_color=self.compression_presets[preset]["bg_color"]
373
374
  if args.bg_color is None
374
375
  else args.bg_color,
376
+ padding_percent=self.compression_presets[preset]["padding_percent"]
377
+ if args.padding_percent is None
378
+ else args.padding_percent,
375
379
  steps=self.compression_presets[preset]["steps"]
376
380
  if args.steps is None
377
381
  else args.steps,
@@ -597,12 +597,13 @@ class StickerConvert:
597
597
  if self.res_h is None:
598
598
  self.res_h = height
599
599
 
600
+ scaling = 1 - (self.opt_comp.padding_percent / 100)
600
601
  if width > height:
601
- width_new = self.res_w
602
- height_new = height * self.res_w // width
602
+ width_new = int(self.res_w * scaling)
603
+ height_new = int(height * self.res_w // width * scaling)
603
604
  else:
604
- height_new = self.res_h
605
- width_new = width * self.res_h // height
605
+ height_new = int(self.res_h * scaling)
606
+ width_new = int(width * self.res_h // height * scaling)
606
607
 
607
608
  with im.resize((width_new, height_new), resample=resample) as im_resized:
608
609
  with Image.new(
@@ -42,7 +42,7 @@ class DownloadTelegram(DownloadBase):
42
42
  application = ( # type: ignore
43
43
  ApplicationBuilder()
44
44
  .token(self.token)
45
- .rate_limiter(AIORateLimiter())
45
+ .rate_limiter(AIORateLimiter(max_retries=3))
46
46
  .connect_timeout(timeout)
47
47
  .pool_timeout(timeout)
48
48
  .read_timeout(timeout)
@@ -125,6 +125,7 @@ class GUI(Window):
125
125
  self.duration_min_var = IntVar(self)
126
126
  self.duration_max_var = IntVar(self)
127
127
  self.duration_disable_var = BooleanVar()
128
+ self.padding_percent_var = IntVar(self)
128
129
  self.img_size_max_var = IntVar(self)
129
130
  self.vid_size_max_var = IntVar(self)
130
131
  self.size_disable_var = BooleanVar()
@@ -519,6 +520,7 @@ class GUI(Window):
519
520
  if not self.duration_disable_var.get()
520
521
  else None,
521
522
  bg_color=self.bg_color_var.get(),
523
+ padding_percent=self.padding_percent_var.get(),
522
524
  steps=self.steps_var.get(),
523
525
  fake_vid=self.fake_vid_var.get(),
524
526
  scale_filter=self.scale_filter_var.get(),
@@ -642,10 +644,10 @@ class GUI(Window):
642
644
 
643
645
  def cb_bar(
644
646
  self,
645
- *args: Any,
646
647
  set_progress_mode: Optional[str] = None,
647
648
  steps: int = 0,
648
649
  update_bar: int = 0,
650
+ *args: Any,
649
651
  **kwargs: Any,
650
652
  ) -> None:
651
653
  self.progress_frame.update_progress_bar(
@@ -227,6 +227,16 @@ class AdvancedCompressionWindow(BaseWindow):
227
227
  )
228
228
  self.color_power_entry.bind("<Button-3><ButtonRelease-3>", RightClicker)
229
229
 
230
+ self.padding_percent_help_btn = self.add_help_btn(
231
+ self.gui.help["comp"]["padding_percent"]
232
+ )
233
+ self.padding_percent_lbl1 = Label(self.frame_advcomp, text="Padding")
234
+ self.padding_percent_lbl2 = Label(self.frame_advcomp, text="0-100%")
235
+ self.padding_percent_entry = Entry(
236
+ self.frame_advcomp, textvariable=self.gui.padding_percent_var, width=8
237
+ )
238
+ self.padding_percent_entry.bind("<Button-3><ButtonRelease-3>", RightClicker)
239
+
230
240
  self.fake_vid_help_btn = self.add_help_btn(self.gui.help["comp"]["fake_vid"])
231
241
  self.fake_vid_lbl = Label(
232
242
  self.frame_advcomp, text="Convert (faking) image to video"
@@ -297,113 +307,119 @@ class AdvancedCompressionWindow(BaseWindow):
297
307
  self.ph_im = ImageTk.PhotoImage(self.im)
298
308
  self.default_emoji_dsp = Label(self.frame_advcomp, image=self.ph_im)
299
309
 
300
- self.fps_help_btn.grid(column=0, row=2, sticky="w", padx=3, pady=3)
301
- self.fps_lbl.grid(column=1, row=2, sticky="w", padx=3, pady=3)
302
- self.fps_min_lbl.grid(column=2, row=2, sticky="w", padx=3, pady=3)
303
- self.fps_min_entry.grid(column=3, row=2, sticky="nes", padx=3, pady=3)
304
- self.fps_max_lbl.grid(column=4, row=2, sticky="w", padx=3, pady=3)
305
- self.fps_max_entry.grid(column=5, row=2, sticky="nes", padx=3, pady=3)
306
- self.fps_disable_cbox.grid(column=6, row=2, sticky="nes", padx=3, pady=3)
307
-
308
- self.res_w_help_btn.grid(column=0, row=3, sticky="w", padx=3, pady=3)
309
- self.res_w_lbl.grid(column=1, row=3, sticky="w", padx=3, pady=3)
310
- self.res_w_min_lbl.grid(column=2, row=3, sticky="w", padx=3, pady=3)
311
- self.res_w_min_entry.grid(column=3, row=3, sticky="nes", padx=3, pady=3)
312
- self.res_w_max_lbl.grid(column=4, row=3, sticky="w", padx=3, pady=3)
313
- self.res_w_max_entry.grid(column=5, row=3, sticky="nes", padx=3, pady=3)
314
- self.res_w_disable_cbox.grid(column=6, row=3, sticky="nes", padx=3, pady=3)
315
-
316
- self.res_h_help_btn.grid(column=0, row=4, sticky="w", padx=3, pady=3)
317
- self.res_h_lbl.grid(column=1, row=4, sticky="w", padx=3, pady=3)
318
- self.res_h_min_lbl.grid(column=2, row=4, sticky="w", padx=3, pady=3)
319
- self.res_h_min_entry.grid(column=3, row=4, sticky="nes", padx=3, pady=3)
320
- self.res_h_max_lbl.grid(column=4, row=4, sticky="w", padx=3, pady=3)
321
- self.res_h_max_entry.grid(column=5, row=4, sticky="nes", padx=3, pady=3)
322
- self.res_h_disable_cbox.grid(column=6, row=4, sticky="nes", padx=3, pady=3)
323
-
324
- self.quality_help_btn.grid(column=0, row=5, sticky="w", padx=3, pady=3)
325
- self.quality_lbl.grid(column=1, row=5, sticky="w", padx=3, pady=3)
326
- self.quality_min_lbl.grid(column=2, row=5, sticky="w", padx=3, pady=3)
327
- self.quality_min_entry.grid(column=3, row=5, sticky="nes", padx=3, pady=3)
328
- self.quality_max_lbl.grid(column=4, row=5, sticky="w", padx=3, pady=3)
329
- self.quality_max_entry.grid(column=5, row=5, sticky="nes", padx=3, pady=3)
330
- self.quality_disable_cbox.grid(column=6, row=5, sticky="nes", padx=3, pady=3)
331
-
332
- self.color_help_btn.grid(column=0, row=6, sticky="w", padx=3, pady=3)
333
- self.color_lbl.grid(column=1, row=6, sticky="w", padx=3, pady=3)
334
- self.color_min_lbl.grid(column=2, row=6, sticky="w", padx=3, pady=3)
335
- self.color_min_entry.grid(column=3, row=6, sticky="nes", padx=3, pady=3)
336
- self.color_max_lbl.grid(column=4, row=6, sticky="w", padx=3, pady=3)
337
- self.color_max_entry.grid(column=5, row=6, sticky="nes", padx=3, pady=3)
338
- self.color_disable_cbox.grid(column=6, row=6, sticky="nes", padx=3, pady=3)
339
-
340
- self.duration_help_btn.grid(column=0, row=7, sticky="w", padx=3, pady=3)
341
- self.duration_lbl.grid(column=1, row=7, sticky="w", padx=3, pady=3)
342
- self.duration_min_lbl.grid(column=2, row=7, sticky="w", padx=3, pady=3)
343
- self.duration_min_entry.grid(column=3, row=7, sticky="nes", padx=3, pady=3)
344
- self.duration_max_lbl.grid(column=4, row=7, sticky="w", padx=3, pady=3)
345
- self.duration_max_entry.grid(column=5, row=7, sticky="nes", padx=3, pady=3)
346
- self.duration_disable_cbox.grid(column=6, row=7, sticky="nes", padx=3, pady=3)
347
-
348
- self.size_help_btn.grid(column=0, row=8, sticky="w", padx=3, pady=3)
349
- self.size_lbl.grid(column=1, row=8, sticky="w", padx=3, pady=3)
350
- self.img_size_max_lbl.grid(column=2, row=8, sticky="w", padx=3, pady=3)
351
- self.img_size_max_entry.grid(column=3, row=8, sticky="nes", padx=3, pady=3)
352
- self.vid_size_max_lbl.grid(column=4, row=8, sticky="w", padx=3, pady=3)
353
- self.vid_size_max_entry.grid(column=5, row=8, sticky="nes", padx=3, pady=3)
354
- self.size_disable_cbox.grid(column=6, row=8, sticky="nes", padx=3, pady=3)
355
-
356
- self.format_help_btn.grid(column=0, row=9, sticky="w", padx=3, pady=3)
357
- self.format_lbl.grid(column=1, row=9, sticky="w", padx=3, pady=3)
358
- self.img_format_lbl.grid(column=2, row=9, sticky="w", padx=3, pady=3)
359
- self.img_format_entry.grid(column=3, row=9, sticky="nes", padx=3, pady=3)
360
- self.vid_format_lbl.grid(column=4, row=9, sticky="w", padx=3, pady=3)
361
- self.vid_format_entry.grid(column=5, row=9, sticky="nes", padx=3, pady=3)
362
-
363
- self.power_help_btn1.grid(column=0, row=10, sticky="w", padx=3, pady=3)
364
- self.power_lbl1.grid(column=1, row=10, sticky="w", padx=3, pady=3)
365
- self.fps_power_lbl.grid(column=2, row=10, sticky="w", padx=3, pady=3)
366
- self.fps_power_entry.grid(column=3, row=10, sticky="w", padx=3, pady=3)
367
- self.res_power_lbl.grid(column=4, row=10, sticky="w", padx=3, pady=3)
368
- self.res_power_entry.grid(column=5, row=10, sticky="w", padx=3, pady=3)
369
-
370
- self.power_help_btn2.grid(column=0, row=11, sticky="w", padx=3, pady=3)
371
- self.power_lbl2.grid(column=1, row=11, sticky="w", padx=3, pady=3)
372
- self.quality_power_lbl.grid(column=2, row=11, sticky="w", padx=3, pady=3)
373
- self.quality_power_entry.grid(column=3, row=11, sticky="w", padx=3, pady=3)
374
- self.color_power_lbl.grid(column=4, row=11, sticky="w", padx=3, pady=3)
375
- self.color_power_entry.grid(column=5, row=11, sticky="w", padx=3, pady=3)
376
-
377
- self.fake_vid_help_btn.grid(column=0, row=12, sticky="w", padx=3, pady=3)
378
- self.fake_vid_lbl.grid(column=1, row=12, sticky="w", padx=3, pady=3)
379
- self.fake_vid_cbox.grid(column=6, row=12, sticky="nes", padx=3, pady=3)
380
-
381
- self.bg_color_help_btn.grid(column=0, row=13, sticky="w", padx=3, pady=3)
382
- self.bg_color_lbl.grid(column=1, row=13, sticky="w", padx=3, pady=3)
383
- self.bg_color_entry.grid(column=5, row=13, sticky="w", padx=3, pady=3)
384
- self.bg_color_btn.grid(column=6, row=13, sticky="nes", padx=3, pady=3)
385
-
386
- self.scale_filter_help_btn.grid(column=0, row=14, sticky="w", padx=3, pady=3)
387
- self.scale_filter_lbl.grid(column=1, row=14, sticky="w", padx=3, pady=3)
310
+ r = 0
311
+ self.fps_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
312
+ self.fps_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
313
+ self.fps_min_lbl.grid(column=2, row=r, sticky="w", padx=3, pady=3)
314
+ self.fps_min_entry.grid(column=3, row=r, sticky="nes", padx=3, pady=3)
315
+ self.fps_max_lbl.grid(column=4, row=r, sticky="w", padx=3, pady=3)
316
+ self.fps_max_entry.grid(column=5, row=r, sticky="nes", padx=3, pady=3)
317
+ self.fps_disable_cbox.grid(column=6, row=r, sticky="nes", padx=3, pady=3)
318
+ r += 1
319
+ self.res_w_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
320
+ self.res_w_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
321
+ self.res_w_min_lbl.grid(column=2, row=r, sticky="w", padx=3, pady=3)
322
+ self.res_w_min_entry.grid(column=3, row=r, sticky="nes", padx=3, pady=3)
323
+ self.res_w_max_lbl.grid(column=4, row=r, sticky="w", padx=3, pady=3)
324
+ self.res_w_max_entry.grid(column=5, row=r, sticky="nes", padx=3, pady=3)
325
+ self.res_w_disable_cbox.grid(column=6, row=r, sticky="nes", padx=3, pady=3)
326
+ r += 1
327
+ self.res_h_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
328
+ self.res_h_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
329
+ self.res_h_min_lbl.grid(column=2, row=r, sticky="w", padx=3, pady=3)
330
+ self.res_h_min_entry.grid(column=3, row=r, sticky="nes", padx=3, pady=3)
331
+ self.res_h_max_lbl.grid(column=4, row=r, sticky="w", padx=3, pady=3)
332
+ self.res_h_max_entry.grid(column=5, row=r, sticky="nes", padx=3, pady=3)
333
+ self.res_h_disable_cbox.grid(column=6, row=r, sticky="nes", padx=3, pady=3)
334
+ r += 1
335
+ self.quality_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
336
+ self.quality_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
337
+ self.quality_min_lbl.grid(column=2, row=r, sticky="w", padx=3, pady=3)
338
+ self.quality_min_entry.grid(column=3, row=r, sticky="nes", padx=3, pady=3)
339
+ self.quality_max_lbl.grid(column=4, row=r, sticky="w", padx=3, pady=3)
340
+ self.quality_max_entry.grid(column=5, row=r, sticky="nes", padx=3, pady=3)
341
+ self.quality_disable_cbox.grid(column=6, row=r, sticky="nes", padx=3, pady=3)
342
+ r += 1
343
+ self.color_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
344
+ self.color_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
345
+ self.color_min_lbl.grid(column=2, row=r, sticky="w", padx=3, pady=3)
346
+ self.color_min_entry.grid(column=3, row=r, sticky="nes", padx=3, pady=3)
347
+ self.color_max_lbl.grid(column=4, row=r, sticky="w", padx=3, pady=3)
348
+ self.color_max_entry.grid(column=5, row=r, sticky="nes", padx=3, pady=3)
349
+ self.color_disable_cbox.grid(column=6, row=r, sticky="nes", padx=3, pady=3)
350
+ r += 1
351
+ self.duration_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
352
+ self.duration_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
353
+ self.duration_min_lbl.grid(column=2, row=r, sticky="w", padx=3, pady=3)
354
+ self.duration_min_entry.grid(column=3, row=r, sticky="nes", padx=3, pady=3)
355
+ self.duration_max_lbl.grid(column=4, row=r, sticky="w", padx=3, pady=3)
356
+ self.duration_max_entry.grid(column=5, row=r, sticky="nes", padx=3, pady=3)
357
+ self.duration_disable_cbox.grid(column=6, row=r, sticky="nes", padx=3, pady=3)
358
+ r += 1
359
+ self.size_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
360
+ self.size_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
361
+ self.img_size_max_lbl.grid(column=2, row=r, sticky="w", padx=3, pady=3)
362
+ self.img_size_max_entry.grid(column=3, row=r, sticky="nes", padx=3, pady=3)
363
+ self.vid_size_max_lbl.grid(column=4, row=r, sticky="w", padx=3, pady=3)
364
+ self.vid_size_max_entry.grid(column=5, row=r, sticky="nes", padx=3, pady=3)
365
+ self.size_disable_cbox.grid(column=6, row=r, sticky="nes", padx=3, pady=3)
366
+ r += 1
367
+ self.format_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
368
+ self.format_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
369
+ self.img_format_lbl.grid(column=2, row=r, sticky="w", padx=3, pady=3)
370
+ self.img_format_entry.grid(column=3, row=r, sticky="nes", padx=3, pady=3)
371
+ self.vid_format_lbl.grid(column=4, row=r, sticky="w", padx=3, pady=3)
372
+ self.vid_format_entry.grid(column=5, row=r, sticky="nes", padx=3, pady=3)
373
+ r += 1
374
+ self.power_help_btn1.grid(column=0, row=r, sticky="w", padx=3, pady=3)
375
+ self.power_lbl1.grid(column=1, row=r, sticky="w", padx=3, pady=3)
376
+ self.fps_power_lbl.grid(column=2, row=r, sticky="w", padx=3, pady=3)
377
+ self.fps_power_entry.grid(column=3, row=r, sticky="w", padx=3, pady=3)
378
+ self.res_power_lbl.grid(column=4, row=r, sticky="w", padx=3, pady=3)
379
+ self.res_power_entry.grid(column=5, row=r, sticky="w", padx=3, pady=3)
380
+ r += 1
381
+ self.power_help_btn2.grid(column=0, row=r, sticky="w", padx=3, pady=3)
382
+ self.power_lbl2.grid(column=1, row=r, sticky="w", padx=3, pady=3)
383
+ self.quality_power_lbl.grid(column=2, row=r, sticky="w", padx=3, pady=3)
384
+ self.quality_power_entry.grid(column=3, row=r, sticky="w", padx=3, pady=3)
385
+ self.color_power_lbl.grid(column=4, row=r, sticky="w", padx=3, pady=3)
386
+ self.color_power_entry.grid(column=5, row=r, sticky="w", padx=3, pady=3)
387
+ r += 1
388
+ self.padding_percent_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
389
+ self.padding_percent_lbl1.grid(column=1, row=r, sticky="w", padx=3, pady=3)
390
+ self.padding_percent_lbl2.grid(column=2, row=r, sticky="w", padx=3, pady=3)
391
+ self.padding_percent_entry.grid(column=3, row=r, sticky="w", padx=3, pady=3)
392
+ r += 1
393
+ self.fake_vid_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
394
+ self.fake_vid_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
395
+ self.fake_vid_cbox.grid(column=6, row=r, sticky="nes", padx=3, pady=3)
396
+ r += 1
397
+ self.bg_color_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
398
+ self.bg_color_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
399
+ self.bg_color_entry.grid(column=5, row=r, sticky="w", padx=3, pady=3)
400
+ self.bg_color_btn.grid(column=6, row=r, sticky="nes", padx=3, pady=3)
401
+ r += 1
402
+ self.scale_filter_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
403
+ self.scale_filter_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
388
404
  self.scale_filter_opt.grid(
389
- column=2, row=14, columnspan=4, sticky="nes", padx=3, pady=3
405
+ column=2, row=r, columnspan=4, sticky="nes", padx=3, pady=3
390
406
  )
391
-
392
- self.quantize_method_help_btn.grid(column=0, row=15, sticky="w", padx=3, pady=3)
393
- self.quantize_method_lbl.grid(column=1, row=15, sticky="w", padx=3, pady=3)
407
+ r += 1
408
+ self.quantize_method_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
409
+ self.quantize_method_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
394
410
  self.quantize_method_opt.grid(
395
- column=2, row=15, columnspan=4, sticky="nes", padx=3, pady=3
411
+ column=2, row=r, columnspan=4, sticky="nes", padx=3, pady=3
396
412
  )
397
-
398
- self.cache_dir_help_btn.grid(column=0, row=16, sticky="w", padx=3, pady=3)
399
- self.cache_dir_lbl.grid(column=1, row=16, sticky="w", padx=3, pady=3)
413
+ r += 1
414
+ self.cache_dir_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
415
+ self.cache_dir_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
400
416
  self.cache_dir_entry.grid(
401
- column=2, row=16, columnspan=4, sticky="nes", padx=3, pady=3
417
+ column=2, row=r, columnspan=4, sticky="nes", padx=3, pady=3
402
418
  )
403
-
404
- self.default_emoji_help_btn.grid(column=0, row=17, sticky="w", padx=3, pady=3)
405
- self.default_emoji_lbl.grid(column=1, row=17, sticky="w", padx=3, pady=3)
406
- self.default_emoji_dsp.grid(column=6, row=17, sticky="nes", padx=3, pady=3)
419
+ r += 1
420
+ self.default_emoji_help_btn.grid(column=0, row=r, sticky="w", padx=3, pady=3)
421
+ self.default_emoji_lbl.grid(column=1, row=r, sticky="w", padx=3, pady=3)
422
+ self.default_emoji_dsp.grid(column=6, row=r, sticky="nes", padx=3, pady=3)
407
423
 
408
424
  # https://stackoverflow.com/questions/43731784/tkinter-canvas-scrollbar-with-grid
409
425
  # Create a frame for the canvas with non-zero row&column weights
@@ -172,8 +172,6 @@ class Executor:
172
172
  except KeyboardInterrupt:
173
173
  pass
174
174
 
175
- if self.cb_thread_instance:
176
- self.cb_thread_instance.join()
177
175
  self.processes.clear()
178
176
 
179
177
  def kill_workers(self, *_: Any, **__: Any) -> None:
@@ -182,14 +180,14 @@ class Executor:
182
180
  for process in self.processes:
183
181
  process.terminate()
184
182
 
185
- self.cleanup(killed=True)
183
+ self.cb_msg("Job cancelled.")
184
+ self.cleanup()
186
185
 
187
- def cleanup(self, killed: bool = False) -> None:
188
- if killed:
189
- self.cb_msg("Job cancelled.")
186
+ def cleanup(self) -> None:
190
187
  self.cb_bar("clear")
191
- # self.cb_queue.put(None)
192
- self.manager.shutdown()
188
+ self.cb_queue.put(None)
189
+ if self.cb_thread_instance:
190
+ self.cb_thread_instance.join()
193
191
 
194
192
 
195
193
  class Job:
@@ -602,6 +600,9 @@ class Job:
602
600
  in_fs.append(i)
603
601
 
604
602
  in_fs_count = len(in_fs)
603
+ if in_fs_count == 0:
604
+ self.executor.cb("No files to compress")
605
+ return True
605
606
 
606
607
  self.executor.cb(msg)
607
608
  self.executor.cb(
@@ -69,6 +69,8 @@ class CompOption(BaseOption):
69
69
 
70
70
  bg_color: Optional[str] = None
71
71
 
72
+ padding_percent: int = 0
73
+
72
74
  steps: int = 1
73
75
  fake_vid: Optional[bool] = None
74
76
  quantize_method: Optional[str] = None
@@ -104,6 +106,7 @@ class CompOption(BaseOption):
104
106
  "duration": {"min": self.duration_min, "max": self.duration_max},
105
107
  "steps": self.steps,
106
108
  "bg_color": self.bg_color,
109
+ "padding_percent": self.padding_percent,
107
110
  "fake_vid": self.fake_vid,
108
111
  "quantize_method": self.quantize_method,
109
112
  "scale_filter": self.scale_filter,
@@ -38,6 +38,7 @@
38
38
  "min": 0,
39
39
  "max": 10000
40
40
  },
41
+ "padding_percent": 0,
41
42
  "bg_color": "",
42
43
  "steps": 16,
43
44
  "fake_vid": false,
@@ -84,6 +85,7 @@
84
85
  "min": 0,
85
86
  "max": 3000
86
87
  },
88
+ "padding_percent": 0,
87
89
  "bg_color": "",
88
90
  "steps": 16,
89
91
  "fake_vid": false,
@@ -130,6 +132,7 @@
130
132
  "min": 0,
131
133
  "max": 3000
132
134
  },
135
+ "padding_percent": 0,
133
136
  "bg_color": "",
134
137
  "steps": 16,
135
138
  "fake_vid": false,
@@ -176,6 +179,7 @@
176
179
  "min": 0,
177
180
  "max": 3000
178
181
  },
182
+ "padding_percent": 0,
179
183
  "bg_color": "",
180
184
  "steps": 16,
181
185
  "fake_vid": false,
@@ -222,6 +226,7 @@
222
226
  "min": 8,
223
227
  "max": 10000
224
228
  },
229
+ "padding_percent": 0,
225
230
  "bg_color": "",
226
231
  "steps": 16,
227
232
  "fake_vid": true,
@@ -268,6 +273,7 @@
268
273
  "min": 83,
269
274
  "max": 4000
270
275
  },
276
+ "padding_percent": 0,
271
277
  "bg_color": "",
272
278
  "steps": 16,
273
279
  "fake_vid": false,
@@ -314,6 +320,7 @@
314
320
  "min": 0,
315
321
  "max": 5000
316
322
  },
323
+ "padding_percent": 0,
317
324
  "bg_color": "",
318
325
  "steps": 16,
319
326
  "fake_vid": false,
@@ -360,6 +367,7 @@
360
367
  "min": 0,
361
368
  "max": 2000
362
369
  },
370
+ "padding_percent": 0,
363
371
  "bg_color": "",
364
372
  "steps": 16,
365
373
  "fake_vid": false,
@@ -406,6 +414,7 @@
406
414
  "min": 0,
407
415
  "max": 2000
408
416
  },
417
+ "padding_percent": 0,
409
418
  "bg_color": "",
410
419
  "steps": 16,
411
420
  "fake_vid": false,
@@ -452,6 +461,7 @@
452
461
  "min": 0,
453
462
  "max": 2000
454
463
  },
464
+ "padding_percent": 0,
455
465
  "bg_color": "",
456
466
  "steps": 16,
457
467
  "fake_vid": false,
@@ -498,6 +508,7 @@
498
508
  "min": 0,
499
509
  "max": 10000
500
510
  },
511
+ "padding_percent": 0,
501
512
  "bg_color": "",
502
513
  "steps": 16,
503
514
  "fake_vid": false,
@@ -39,6 +39,7 @@
39
39
  "duration": "Change playback speed if outside of duration limit.\nDuration set in miliseconds.\n0 will disable limit.",
40
40
  "duration_min": "Set minimum output duration in miliseconds.",
41
41
  "duration_max": "Set maximum output duration in miliseconds.",
42
+ "padding_percent": "Set percentage of space used as padding.",
42
43
  "bg_color": "Set custom background color.\nExample: 00ff00 for green.\nIf this is not set, background color would be auto set to black if image is bright, or white if image is dark.\nNote: The color should not be visible if output format supports transparency.",
43
44
  "size": "Set maximum file size in bytes for video and image.",
44
45
  "vid_size_max": "Set maximum file size limit for animated stickers.",
@@ -78,7 +78,7 @@ class UploadTelegram(UploadBase):
78
78
  application = ( # type: ignore
79
79
  ApplicationBuilder()
80
80
  .token(self.opt_cred.telegram_token.strip())
81
- .rate_limiter(AIORateLimiter())
81
+ .rate_limiter(AIORateLimiter(max_retries=3))
82
82
  .connect_timeout(timeout)
83
83
  .pool_timeout(timeout)
84
84
  .read_timeout(timeout)
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
- __version__ = "2.8.1"
3
+ __version__ = "2.8.2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sticker-convert
3
- Version: 2.8.1
3
+ Version: 2.8.2
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>
@@ -483,23 +483,24 @@ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--custom-presets CUST
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]
487
- [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
488
- [--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
489
- [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--bg-color BG_COLOR]
490
- [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT]
491
- [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
492
- [--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI]
493
- [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
494
- [--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN]
495
- [--telegram-userid TELEGRAM_USERID] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth]
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]
498
- [--line-cookies LINE_COOKIES] [--save-cred SAVE_CRED]
486
+ [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX]
487
+ [--res-power RES_POWER] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX]
488
+ [--quality-power QUALITY_POWER] [--color-min COLOR_MIN] [--color-max COLOR_MAX]
489
+ [--color-power COLOR_POWER] [--duration-min DURATION_MIN] [--duration-max DURATION_MAX]
490
+ [--padding-percent PADDING_PERCENT] [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX]
491
+ [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT] [--img-format IMG_FORMAT]
492
+ [--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD]
493
+ [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID]
494
+ [--signal-password SIGNAL_PASSWORD] [--signal-get-auth] [--signal-data-dir SIGNAL_DATA_DIR]
495
+ [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID]
496
+ [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-username KAKAO_USERNAME]
497
+ [--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
498
+ [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
499
+ [--save-cred SAVE_CRED]
499
500
 
500
501
  CLI for stickers-convert
501
502
 
502
- optional arguments:
503
+ options:
503
504
  -h, --help show this help message and exit
504
505
  --version show program's version number and exit
505
506
  --no-confirm Do not ask any questions.
@@ -585,6 +586,8 @@ Compression options:
585
586
  Set minimum output duration in miliseconds.
586
587
  --duration-max DURATION_MAX
587
588
  Set maximum output duration in miliseconds.
589
+ --padding-percent PADDING_PERCENT
590
+ Set percentage of space used as padding.
588
591
  --bg-color BG_COLOR Set custom background color.
589
592
  Example: 00ff00 for green.
590
593
  If this is not set, background color would be auto set to black if image is bright, or white if image is dark.
File without changes