sticker-convert 2.10.9__tar.gz → 2.11.1__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. {sticker_convert-2.10.9/src/sticker_convert.egg-info → sticker_convert-2.11.1}/PKG-INFO +53 -35
  2. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/README.md +45 -29
  3. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/requirements.txt +6 -4
  4. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/cli.py +46 -8
  5. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/converter.py +13 -11
  6. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/downloaders/download_base.py +5 -5
  7. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/downloaders/download_signal.py +4 -2
  8. sticker_convert-2.11.1/src/sticker_convert/downloaders/download_telegram.py +55 -0
  9. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui.py +12 -0
  10. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/frames/cred_frame.py +38 -13
  11. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/job.py +8 -8
  12. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/job_option.py +6 -0
  13. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/resources/compression.json +2 -2
  14. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/resources/help.json +3 -2
  15. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/resources/input.json +10 -0
  16. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/resources/output.json +16 -0
  17. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/uploaders/compress_wastickers.py +76 -56
  18. sticker_convert-2.11.1/src/sticker_convert/uploaders/upload_telegram.py +329 -0
  19. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/uploaders/upload_viber.py +18 -19
  20. sticker_convert-2.11.1/src/sticker_convert/utils/auth/telegram_api.py +670 -0
  21. sticker_convert-2.11.1/src/sticker_convert/utils/auth/telethon_setup.py +79 -0
  22. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/files/metadata_handler.py +3 -3
  23. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/url_detect.py +1 -1
  24. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/version.py +1 -1
  25. {sticker_convert-2.10.9 → sticker_convert-2.11.1/src/sticker_convert.egg-info}/PKG-INFO +53 -35
  26. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert.egg-info/SOURCES.txt +2 -0
  27. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert.egg-info/requires.txt +6 -4
  28. sticker_convert-2.10.9/src/sticker_convert/downloaders/download_telegram.py +0 -139
  29. sticker_convert-2.10.9/src/sticker_convert/uploaders/upload_telegram.py +0 -393
  30. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/LICENSE +0 -0
  31. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/MANIFEST.in +0 -0
  32. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/pyproject.toml +0 -0
  33. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/setup.cfg +0 -0
  34. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/__init__.py +0 -0
  35. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/__main__.py +0 -0
  36. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/definitions.py +0 -0
  37. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/downloaders/__init__.py +0 -0
  38. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/downloaders/download_discord.py +0 -0
  39. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/downloaders/download_kakao.py +0 -0
  40. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/downloaders/download_line.py +0 -0
  41. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/downloaders/download_viber.py +0 -0
  42. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/__init__.py +0 -0
  43. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/frames/__init__.py +0 -0
  44. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/frames/comp_frame.py +0 -0
  45. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/frames/config_frame.py +0 -0
  46. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/frames/control_frame.py +0 -0
  47. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/frames/input_frame.py +0 -0
  48. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/frames/output_frame.py +0 -0
  49. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/frames/progress_frame.py +0 -0
  50. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/frames/right_clicker.py +0 -0
  51. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/gui_utils.py +0 -0
  52. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/windows/__init__.py +0 -0
  53. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/windows/advanced_compression_window.py +0 -0
  54. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/windows/base_window.py +0 -0
  55. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/windows/discord_get_auth_window.py +0 -0
  56. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/windows/kakao_get_auth_window.py +0 -0
  57. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/windows/line_get_auth_window.py +0 -0
  58. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/windows/signal_get_auth_window.py +0 -0
  59. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/gui_components/windows/viber_get_auth_window.py +0 -0
  60. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/.github/FUNDING.yml +0 -0
  61. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/.gitignore +0 -0
  62. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/README.md +0 -0
  63. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers/Info.plist +0 -0
  64. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Info.plist +0 -0
  65. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Contents.json +0 -0
  66. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Contents.json +0 -0
  67. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Contents.json +0 -0
  68. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Sticker 1.png +0 -0
  69. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Contents.json +0 -0
  70. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Sticker 2.png +0 -0
  71. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Contents.json +0 -0
  72. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Sticker 3.png +0 -0
  73. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/App-Store-1024x1024pt.png +0 -0
  74. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Contents.json +0 -0
  75. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-App-Store-1024x768pt.png +0 -0
  76. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-67x50pt@2x.png +0 -0
  77. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-Pro-74x55pt@2x.png +0 -0
  78. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@2x.png +0 -0
  79. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@3x.png +0 -0
  80. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@2x.png +0 -0
  81. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@3x.png +0 -0
  82. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@2x.png +0 -0
  83. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@3x.png +0 -0
  84. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPad-Settings-29pt@2x.png +0 -0
  85. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-Settings-29pt@3x.png +0 -0
  86. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-settings-29pt@2x.png +0 -0
  87. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.pbxproj +0 -0
  88. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
  89. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
  90. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcuserdata/niklaspeterson.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  91. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/xcuserdata/niklaspeterson.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
  92. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/resources/NotoColorEmoji.ttf +0 -0
  93. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/resources/appicon.icns +0 -0
  94. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/resources/appicon.ico +0 -0
  95. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/resources/appicon.png +0 -0
  96. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/resources/emoji.json +0 -0
  97. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/resources/memdump_linux.sh +0 -0
  98. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/resources/memdump_windows.ps1 +0 -0
  99. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/uploaders/__init__.py +0 -0
  100. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/uploaders/upload_base.py +0 -0
  101. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/uploaders/upload_signal.py +0 -0
  102. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/uploaders/xcode_imessage.py +0 -0
  103. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/auth/get_discord_auth.py +0 -0
  104. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/auth/get_kakao_auth.py +0 -0
  105. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/auth/get_kakao_desktop_auth.py +0 -0
  106. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/auth/get_line_auth.py +0 -0
  107. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/auth/get_signal_auth.py +0 -0
  108. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/auth/get_viber_auth.py +0 -0
  109. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/callback.py +0 -0
  110. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/chrome_remotedebug.py +0 -0
  111. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/emoji.py +0 -0
  112. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/files/cache_store.py +0 -0
  113. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/files/json_manager.py +0 -0
  114. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/files/json_resources_loader.py +0 -0
  115. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/files/run_bin.py +0 -0
  116. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/files/sanitize_filename.py +0 -0
  117. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/media/apple_png_normalize.py +0 -0
  118. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/media/codec_info.py +0 -0
  119. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/media/decrypt_kakao.py +0 -0
  120. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/media/format_verify.py +0 -0
  121. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert/utils/process.py +0 -0
  122. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert.egg-info/dependency_links.txt +0 -0
  123. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert.egg-info/entry_points.txt +0 -0
  124. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/src/sticker_convert.egg-info/top_level.txt +0 -0
  125. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/tests/test_compression.py +0 -0
  126. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/tests/test_download.py +0 -0
  127. {sticker_convert-2.10.9 → sticker_convert-2.11.1}/tests/test_export.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: sticker-convert
3
- Version: 2.10.9
3
+ Version: 2.11.1
4
4
  Summary: Convert (animated) stickers to/from WhatsApp, Telegram, Signal, Line, Kakao, Viber, Discord, iMessage. Written in Python.
5
5
  Author-email: laggykiller <chaudominic2@gmail.com>
6
6
  Maintainer-email: laggykiller <chaudominic2@gmail.com>
@@ -364,10 +364,11 @@ Requires-Python: >=3.9
364
364
  Description-Content-Type: text/markdown
365
365
  License-File: LICENSE
366
366
  Requires-Dist: aiolimiter~=1.2.1
367
- Requires-Dist: anyio~=4.7.0
367
+ Requires-Dist: anyio~=4.8.0
368
368
  Requires-Dist: apngasm_python~=1.3.1
369
369
  Requires-Dist: av~=13.1.0
370
370
  Requires-Dist: beautifulsoup4~=4.12.3
371
+ Requires-Dist: cryptg~=0.5.0.post0
371
372
  Requires-Dist: rookiepy~=0.5.6
372
373
  Requires-Dist: httpx~=0.28.1
373
374
  Requires-Dist: imagequant~=1.1.3
@@ -375,14 +376,15 @@ Requires-Dist: memory-tempfile~=2.2.3
375
376
  Requires-Dist: mergedeep~=1.3.4
376
377
  Requires-Dist: mini-racer~=0.12.4
377
378
  Requires-Dist: numpy>=1.22.4
378
- Requires-Dist: Pillow~=10.4.0
379
+ Requires-Dist: Pillow~=11.1.0
379
380
  Requires-Dist: pyoxipng~=9.0.0
380
- Requires-Dist: python-telegram-bot~=21.9
381
- Requires-Dist: psutil~=6.1.0
381
+ Requires-Dist: python-telegram-bot~=21.10
382
+ Requires-Dist: psutil~=6.1.1
382
383
  Requires-Dist: PyMemoryEditor~=1.5.22
383
384
  Requires-Dist: requests~=2.32.3
384
385
  Requires-Dist: rlottie_python~=1.3.6
385
386
  Requires-Dist: signalstickers-client-fork-laggykiller~=3.3.0.post2
387
+ Requires-Dist: telethon~=1.38.1
386
388
  Requires-Dist: tqdm~=4.67.1
387
389
  Requires-Dist: ttkbootstrap-fork-laggykiller~=1.5.1
388
390
  Requires-Dist: websocket_client~=1.8.0
@@ -424,16 +426,16 @@ Requires-Dist: websocket_client~=1.8.0
424
426
  - [DISCLAIMER](#disclaimer)
425
427
 
426
428
  ## Compatibility
427
- | Application | ⬇️ Download | ⬆️ Upload |
428
- | ------------------------------------- | ------------------------------------| --------------------------------------------------- |
429
- | [Signal](docs/guide_signal.md) | ✅ | ✅ (Require `uuid` & `password` or manually) |
430
- | [Telegram](docs/guide_telegram.md) | ✅ (Require `token`) | ✅ (Require `token` & `user_id` or manually) |
431
- | [WhatsApp](docs/guide_whatsapp.md) | ⭕ (By Android or WhatsApp Web) | ⭕ (Create `.wastickers`, import by Sticker Maker) |
432
- | [Line](docs/guide_line.md) | ✅ | 🚫 (Need to submit for manual approval) |
433
- | [Kakao](docs/guide_kakao.md) | ✅ (Need 'share link' for animated) | 🚫 (Need to submit for manual approval) |
434
- | [Viber](docs/guide_viber.md) | ✅ | ✅ (Require `viber_auth`) |
435
- | [Discord](docs/guide_discord.md) | ✅ (Require `token`) | 🚫 |
436
- | [iMessage](docs/guide_imessage.md) | 🚫 | ⭕ (Create Xcode stickerpack project for sideload) |
429
+ | Application | ⬇️ Download | ⬆️ Upload |
430
+ | ------------------------------------- | ------------------------------------| --------------------------------------------------------- |
431
+ | [Signal](docs/guide_signal.md) | ✅ | ✅ (Require `uuid` & `password` or manually) |
432
+ | [Telegram](docs/guide_telegram.md) | ✅ (Require `token` or telethon) | ✅ (Require `token` & `user_id` or telethon or manually) |
433
+ | [WhatsApp](docs/guide_whatsapp.md) | ⭕ (By Android or WhatsApp Web) | ⭕ (Create `.wastickers`, import by Sticker Maker) |
434
+ | [Line](docs/guide_line.md) | ✅ | 🚫 (Need to submit for manual approval) |
435
+ | [Kakao](docs/guide_kakao.md) | ✅ (Need 'share link' for animated) | 🚫 (Need to submit for manual approval) |
436
+ | [Viber](docs/guide_viber.md) | ✅ | ✅ (Require `viber_auth`) |
437
+ | [Discord](docs/guide_discord.md) | ✅ (Require `token`) | 🚫 |
438
+ | [iMessage](docs/guide_imessage.md) | 🚫 | ⭕ (Create Xcode stickerpack project for sideload) |
437
439
 
438
440
  ✅ = Supported ⭕ = Partially supported 🚫 = Not supported
439
441
 
@@ -443,8 +445,8 @@ Requires-Dist: websocket_client~=1.8.0
443
445
  - `uuid` and `password` are needed if you want to automatically upload the pack with the program. View FAQ for more information.
444
446
  - Alternatively, you may use Signal Desktop to manually upload and create sticker pack with the output of this prorgam.
445
447
  - Telegram
446
- - Download: Supported (e.g. `https://telegram.me/addstickers/xxxxx`) for both stickers and custom emoji, but require bot token.
447
- - Upload: Supported for both stickers and custom emoji, but require bot token and user_id. Alternatively, you may manually upload and create sticker pack with the output of this program.
448
+ - Download: Supported (e.g. `https://telegram.me/addstickers/xxxxx`) for both stickers and custom emoji, but require bot token or setup Telethon
449
+ - Upload: Supported for both stickers and custom emoji, but require bot token and user_id or setup Telethon. Alternatively, you may manually upload and create sticker pack with the output of this program.
448
450
  - WhatsApp
449
451
  - Download: You have to manually find sticker packs / extract from your phone or from WhatsApp Web.
450
452
  - Android Phone: Inside `/storage/emulated/0/Whatsapp/media/Whatsapp Stickers` OR `/storage/emulated/0/Android/media/com.whatsapp/WhatsApp/Media/WhatsApp Stickers`
@@ -485,22 +487,30 @@ Requires-Dist: websocket_client~=1.8.0
485
487
  To run in CLI mode, pass on any arguments
486
488
 
487
489
  ```
488
- usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS] [--input-dir INPUT_DIR]
489
- [--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO | --download-viber DOWNLOAD_VIBER | --download-discord DOWNLOAD_DISCORD | --download-discord-emoji DOWNLOAD_DISCORD_EMOJI]
490
+ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS]
491
+ [--input-dir INPUT_DIR]
492
+ [--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-telegram-telethon DOWNLOAD_TELEGRAM_TELETHON | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO | --download-viber DOWNLOAD_VIBER | --download-discord DOWNLOAD_DISCORD | --download-discord-emoji DOWNLOAD_DISCORD_EMOJI]
490
493
  [--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE]
491
- [--export-signal | --export-telegram | --export-telegram-emoji | --export-viber | --export-whatsapp | --export-imessage] [--no-compress]
494
+ [--export-signal | --export-telegram | --export-telegram-emoji | --export-telegram-telethon | --export-telegram-emoji-telethon | --export-viber | --export-whatsapp | --export-imessage]
495
+ [--no-compress]
492
496
  [--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,discord,discord_emoji,imessage_small,imessage_medium,imessage_large,custom}]
493
- [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX]
494
- [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER]
495
- [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER] [--color-min COLOR_MIN] [--color-max COLOR_MAX]
496
- [--color-power COLOR_POWER] [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT]
497
- [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT] [--img-format IMG_FORMAT]
498
- [--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI]
499
- [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth] [--telegram-token TELEGRAM_TOKEN]
500
- [--telegram-userid TELEGRAM_USERID] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-get-auth-desktop]
501
- [--kakao-bin-path KAKAO_BIN_PATH] [--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
502
- [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES] [--viber-auth VIBER_AUTH]
503
- [--viber-get-auth VIBER_GET_AUTH] [--viber-bin-path VIBER_BIN_PATH] [--discord-get-auth] [--discord-token DISCORD_TOKEN] [--save-cred SAVE_CRED]
497
+ [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX]
498
+ [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN]
499
+ [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER]
500
+ [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
501
+ [--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
502
+ [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT]
503
+ [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX]
504
+ [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
505
+ [--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI]
506
+ [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
507
+ [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID] [--telethon-setup]
508
+ [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-get-auth-desktop]
509
+ [--kakao-bin-path KAKAO_BIN_PATH] [--kakao-username KAKAO_USERNAME]
510
+ [--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
511
+ [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
512
+ [--viber-auth VIBER_AUTH] [--viber-get-auth VIBER_GET_AUTH] [--viber-bin-path VIBER_BIN_PATH]
513
+ [--discord-get-auth] [--discord-token DISCORD_TOKEN] [--save-cred]
504
514
 
505
515
  CLI for stickers-convert
506
516
 
@@ -527,6 +537,10 @@ Input options:
527
537
  Download telegram stickers from a URL as input
528
538
  (Example: https://telegram.me/addstickers/xxxxx
529
539
  OR https://telegram.me/addemoji/xxxxx)
540
+ --download-telegram-telethon DOWNLOAD_TELEGRAM_TELETHON
541
+ Download telegram stickers from a URL as input with Telethon
542
+ (Example: https://telegram.me/addstickers/xxxxx
543
+ OR https://telegram.me/addemoji/xxxxx)
530
544
  --download-line DOWNLOAD_LINE
531
545
  Download line stickers from a URL / ID as input
532
546
  (Example: https://store.line.me/stickershop/product/1234/en
@@ -557,6 +571,10 @@ Output options:
557
571
  --export-telegram Upload to Telegram
558
572
  --export-telegram-emoji
559
573
  Upload to Telegram (Custom emoji)
574
+ --export-telegram-telethon
575
+ Upload to Telegram with Telethon *Not recommended, but allow link not end with _by_xxxbot*
576
+ --export-telegram-emoji-telethon
577
+ Upload to Telegram with Telethon (Custom emoji) *Not recommended, but allow link not end with _by_xxxbot*
560
578
  --export-viber Upload to Viber
561
579
  --export-whatsapp Create a .wastickers file for uploading to WhatsApp
562
580
  --export-imessage Create Xcode project for importing to iMessage
@@ -650,7 +668,8 @@ Credentials options:
650
668
  --telegram-token TELEGRAM_TOKEN
651
669
  Set Telegram token. Required for uploading and downloading Telegram stickers.
652
670
  --telegram-userid TELEGRAM_USERID
653
- Set telegram user_id (From real account, not bot account). Required for uploading Telegram stickers.
671
+ Set Telegram user_id (From real account, not bot account). Required for uploading Telegram stickers.
672
+ --telethon-setup Setup Telethon
654
673
  --kakao-auth-token KAKAO_AUTH_TOKEN
655
674
  Set Kakao auth_token. Required for downloading animated stickers from https://e.kakao.com/t/xxxxx
656
675
  --kakao-get-auth Generate Kakao auth_token by simulating login. Kakao username, password, country code and phone number are also required.
@@ -691,8 +710,7 @@ Credentials options:
691
710
  --discord-get-auth Get Discord token.
692
711
  --discord-token DISCORD_TOKEN
693
712
  Set Discord token. Required for downloading Discord stickers and emojis.
694
- --save-cred SAVE_CRED
695
- Save Signal and Telegram credentials.
713
+ --save-cred Save credentials.
696
714
  ```
697
715
 
698
716
  If you are running python script directly, run with `src/sticker-convert.py`
@@ -35,16 +35,16 @@
35
35
  - [DISCLAIMER](#disclaimer)
36
36
 
37
37
  ## Compatibility
38
- | Application | ⬇️ Download | ⬆️ Upload |
39
- | ------------------------------------- | ------------------------------------| --------------------------------------------------- |
40
- | [Signal](docs/guide_signal.md) | ✅ | ✅ (Require `uuid` & `password` or manually) |
41
- | [Telegram](docs/guide_telegram.md) | ✅ (Require `token`) | ✅ (Require `token` & `user_id` or manually) |
42
- | [WhatsApp](docs/guide_whatsapp.md) | ⭕ (By Android or WhatsApp Web) | ⭕ (Create `.wastickers`, import by Sticker Maker) |
43
- | [Line](docs/guide_line.md) | ✅ | 🚫 (Need to submit for manual approval) |
44
- | [Kakao](docs/guide_kakao.md) | ✅ (Need 'share link' for animated) | 🚫 (Need to submit for manual approval) |
45
- | [Viber](docs/guide_viber.md) | ✅ | ✅ (Require `viber_auth`) |
46
- | [Discord](docs/guide_discord.md) | ✅ (Require `token`) | 🚫 |
47
- | [iMessage](docs/guide_imessage.md) | 🚫 | ⭕ (Create Xcode stickerpack project for sideload) |
38
+ | Application | ⬇️ Download | ⬆️ Upload |
39
+ | ------------------------------------- | ------------------------------------| --------------------------------------------------------- |
40
+ | [Signal](docs/guide_signal.md) | ✅ | ✅ (Require `uuid` & `password` or manually) |
41
+ | [Telegram](docs/guide_telegram.md) | ✅ (Require `token` or telethon) | ✅ (Require `token` & `user_id` or telethon or manually) |
42
+ | [WhatsApp](docs/guide_whatsapp.md) | ⭕ (By Android or WhatsApp Web) | ⭕ (Create `.wastickers`, import by Sticker Maker) |
43
+ | [Line](docs/guide_line.md) | ✅ | 🚫 (Need to submit for manual approval) |
44
+ | [Kakao](docs/guide_kakao.md) | ✅ (Need 'share link' for animated) | 🚫 (Need to submit for manual approval) |
45
+ | [Viber](docs/guide_viber.md) | ✅ | ✅ (Require `viber_auth`) |
46
+ | [Discord](docs/guide_discord.md) | ✅ (Require `token`) | 🚫 |
47
+ | [iMessage](docs/guide_imessage.md) | 🚫 | ⭕ (Create Xcode stickerpack project for sideload) |
48
48
 
49
49
  ✅ = Supported ⭕ = Partially supported 🚫 = Not supported
50
50
 
@@ -54,8 +54,8 @@
54
54
  - `uuid` and `password` are needed if you want to automatically upload the pack with the program. View FAQ for more information.
55
55
  - Alternatively, you may use Signal Desktop to manually upload and create sticker pack with the output of this prorgam.
56
56
  - Telegram
57
- - Download: Supported (e.g. `https://telegram.me/addstickers/xxxxx`) for both stickers and custom emoji, but require bot token.
58
- - Upload: Supported for both stickers and custom emoji, but require bot token and user_id. Alternatively, you may manually upload and create sticker pack with the output of this program.
57
+ - Download: Supported (e.g. `https://telegram.me/addstickers/xxxxx`) for both stickers and custom emoji, but require bot token or setup Telethon
58
+ - Upload: Supported for both stickers and custom emoji, but require bot token and user_id or setup Telethon. Alternatively, you may manually upload and create sticker pack with the output of this program.
59
59
  - WhatsApp
60
60
  - Download: You have to manually find sticker packs / extract from your phone or from WhatsApp Web.
61
61
  - Android Phone: Inside `/storage/emulated/0/Whatsapp/media/Whatsapp Stickers` OR `/storage/emulated/0/Android/media/com.whatsapp/WhatsApp/Media/WhatsApp Stickers`
@@ -96,22 +96,30 @@
96
96
  To run in CLI mode, pass on any arguments
97
97
 
98
98
  ```
99
- usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS] [--input-dir INPUT_DIR]
100
- [--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO | --download-viber DOWNLOAD_VIBER | --download-discord DOWNLOAD_DISCORD | --download-discord-emoji DOWNLOAD_DISCORD_EMOJI]
99
+ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS]
100
+ [--input-dir INPUT_DIR]
101
+ [--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-telegram-telethon DOWNLOAD_TELEGRAM_TELETHON | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO | --download-viber DOWNLOAD_VIBER | --download-discord DOWNLOAD_DISCORD | --download-discord-emoji DOWNLOAD_DISCORD_EMOJI]
101
102
  [--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE]
102
- [--export-signal | --export-telegram | --export-telegram-emoji | --export-viber | --export-whatsapp | --export-imessage] [--no-compress]
103
+ [--export-signal | --export-telegram | --export-telegram-emoji | --export-telegram-telethon | --export-telegram-emoji-telethon | --export-viber | --export-whatsapp | --export-imessage]
104
+ [--no-compress]
103
105
  [--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,discord,discord_emoji,imessage_small,imessage_medium,imessage_large,custom}]
104
- [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX]
105
- [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER]
106
- [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER] [--color-min COLOR_MIN] [--color-max COLOR_MAX]
107
- [--color-power COLOR_POWER] [--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] [--vid-format VID_FORMAT] [--img-format IMG_FORMAT]
109
- [--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI]
110
- [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth] [--telegram-token TELEGRAM_TOKEN]
111
- [--telegram-userid TELEGRAM_USERID] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-get-auth-desktop]
112
- [--kakao-bin-path KAKAO_BIN_PATH] [--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
113
- [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES] [--viber-auth VIBER_AUTH]
114
- [--viber-get-auth VIBER_GET_AUTH] [--viber-bin-path VIBER_BIN_PATH] [--discord-get-auth] [--discord-token DISCORD_TOKEN] [--save-cred SAVE_CRED]
106
+ [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX]
107
+ [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN]
108
+ [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER]
109
+ [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
110
+ [--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
111
+ [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT]
112
+ [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX]
113
+ [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
114
+ [--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI]
115
+ [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
116
+ [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID] [--telethon-setup]
117
+ [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-get-auth-desktop]
118
+ [--kakao-bin-path KAKAO_BIN_PATH] [--kakao-username KAKAO_USERNAME]
119
+ [--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
120
+ [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
121
+ [--viber-auth VIBER_AUTH] [--viber-get-auth VIBER_GET_AUTH] [--viber-bin-path VIBER_BIN_PATH]
122
+ [--discord-get-auth] [--discord-token DISCORD_TOKEN] [--save-cred]
115
123
 
116
124
  CLI for stickers-convert
117
125
 
@@ -138,6 +146,10 @@ Input options:
138
146
  Download telegram stickers from a URL as input
139
147
  (Example: https://telegram.me/addstickers/xxxxx
140
148
  OR https://telegram.me/addemoji/xxxxx)
149
+ --download-telegram-telethon DOWNLOAD_TELEGRAM_TELETHON
150
+ Download telegram stickers from a URL as input with Telethon
151
+ (Example: https://telegram.me/addstickers/xxxxx
152
+ OR https://telegram.me/addemoji/xxxxx)
141
153
  --download-line DOWNLOAD_LINE
142
154
  Download line stickers from a URL / ID as input
143
155
  (Example: https://store.line.me/stickershop/product/1234/en
@@ -168,6 +180,10 @@ Output options:
168
180
  --export-telegram Upload to Telegram
169
181
  --export-telegram-emoji
170
182
  Upload to Telegram (Custom emoji)
183
+ --export-telegram-telethon
184
+ Upload to Telegram with Telethon *Not recommended, but allow link not end with _by_xxxbot*
185
+ --export-telegram-emoji-telethon
186
+ Upload to Telegram with Telethon (Custom emoji) *Not recommended, but allow link not end with _by_xxxbot*
171
187
  --export-viber Upload to Viber
172
188
  --export-whatsapp Create a .wastickers file for uploading to WhatsApp
173
189
  --export-imessage Create Xcode project for importing to iMessage
@@ -261,7 +277,8 @@ Credentials options:
261
277
  --telegram-token TELEGRAM_TOKEN
262
278
  Set Telegram token. Required for uploading and downloading Telegram stickers.
263
279
  --telegram-userid TELEGRAM_USERID
264
- Set telegram user_id (From real account, not bot account). Required for uploading Telegram stickers.
280
+ Set Telegram user_id (From real account, not bot account). Required for uploading Telegram stickers.
281
+ --telethon-setup Setup Telethon
265
282
  --kakao-auth-token KAKAO_AUTH_TOKEN
266
283
  Set Kakao auth_token. Required for downloading animated stickers from https://e.kakao.com/t/xxxxx
267
284
  --kakao-get-auth Generate Kakao auth_token by simulating login. Kakao username, password, country code and phone number are also required.
@@ -302,8 +319,7 @@ Credentials options:
302
319
  --discord-get-auth Get Discord token.
303
320
  --discord-token DISCORD_TOKEN
304
321
  Set Discord token. Required for downloading Discord stickers and emojis.
305
- --save-cred SAVE_CRED
306
- Save Signal and Telegram credentials.
322
+ --save-cred Save credentials.
307
323
  ```
308
324
 
309
325
  If you are running python script directly, run with `src/sticker-convert.py`
@@ -1,8 +1,9 @@
1
1
  aiolimiter~=1.2.1
2
- anyio~=4.7.0
2
+ anyio~=4.8.0
3
3
  apngasm_python~=1.3.1
4
4
  av~=13.1.0
5
5
  beautifulsoup4~=4.12.3
6
+ cryptg~=0.5.0.post0
6
7
  rookiepy~=0.5.6
7
8
  httpx~=0.28.1
8
9
  imagequant~=1.1.3
@@ -10,14 +11,15 @@ memory-tempfile~=2.2.3
10
11
  mergedeep~=1.3.4
11
12
  mini-racer~=0.12.4
12
13
  numpy>=1.22.4
13
- Pillow~=10.4.0
14
+ Pillow~=11.1.0
14
15
  pyoxipng~=9.0.0
15
- python-telegram-bot~=21.9
16
- psutil~=6.1.0
16
+ python-telegram-bot~=21.10
17
+ psutil~=6.1.1
17
18
  PyMemoryEditor~=1.5.22
18
19
  requests~=2.32.3
19
20
  rlottie_python~=1.3.6
20
21
  signalstickers-client-fork-laggykiller~=3.3.0.post2
22
+ telethon~=1.38.1
21
23
  tqdm~=4.67.1
22
24
  ttkbootstrap-fork-laggykiller~=1.5.1
23
25
  websocket_client~=1.8.0
@@ -20,6 +20,7 @@ from sticker_convert.utils.auth.get_kakao_desktop_auth import GetKakaoDesktopAut
20
20
  from sticker_convert.utils.auth.get_line_auth import GetLineAuth
21
21
  from sticker_convert.utils.auth.get_signal_auth import GetSignalAuth
22
22
  from sticker_convert.utils.auth.get_viber_auth import GetViberAuth
23
+ from sticker_convert.utils.auth.telethon_setup import TelethonSetup
23
24
  from sticker_convert.utils.callback import Callback
24
25
  from sticker_convert.utils.files.json_manager import JsonManager
25
26
  from sticker_convert.utils.url_detect import UrlDetect
@@ -70,26 +71,26 @@ class CLI:
70
71
 
71
72
  parser_input = parser.add_argument_group("Input options")
72
73
  for k, v_str in self.help["input"].items():
73
- parser_input.add_argument(f'--{k.replace("_", "-")}', dest=k, help=v_str)
74
+ parser_input.add_argument(f"--{k.replace('_', '-')}", dest=k, help=v_str)
74
75
  parser_input_src = parser_input.add_mutually_exclusive_group()
75
76
  for k, v_dict in self.input_presets.items():
76
77
  if k == "local":
77
78
  continue
78
79
  parser_input_src.add_argument(
79
- f'--download-{k.replace("_", "-")}',
80
+ f"--download-{k.replace('_', '-')}",
80
81
  dest=f"download_{k}",
81
- help=f'{v_dict["help"]}\n({v_dict["example"]})',
82
+ help=f"{v_dict['help']}\n({v_dict['example']})",
82
83
  )
83
84
 
84
85
  parser_output = parser.add_argument_group("Output options")
85
86
  for k, v_str in self.help["output"].items():
86
- parser_output.add_argument(f'--{k.replace("_", "-")}', dest=k, help=v_str)
87
+ parser_output.add_argument(f"--{k.replace('_', '-')}", dest=k, help=v_str)
87
88
  parser_output_dst = parser_output.add_mutually_exclusive_group()
88
89
  for k, v_dict in self.output_presets.items():
89
90
  if k == "local":
90
91
  continue
91
92
  parser_output_dst.add_argument(
92
- f'--export-{k.replace("_", "-")}',
93
+ f"--export-{k.replace('_', '-')}",
93
94
  dest=f"export_{k}",
94
95
  action="store_true",
95
96
  help=v_dict["help"],
@@ -153,7 +154,7 @@ class CLI:
153
154
  else:
154
155
  continue
155
156
  parser_comp.add_argument(
156
- f'--{k.replace("_", "-")}',
157
+ f"--{k.replace('_', '-')}",
157
158
  **keyword_args,
158
159
  dest=k,
159
160
  help=v,
@@ -168,17 +169,19 @@ class CLI:
168
169
  parser_cred = parser.add_argument_group("Credentials options")
169
170
  flags_cred_bool = (
170
171
  "signal_get_auth",
172
+ "telethon_setup",
171
173
  "kakao_get_auth",
172
174
  "kakao_get_auth_desktop",
173
175
  "line_get_auth",
174
176
  "discord_get_auth",
177
+ "save_cred",
175
178
  )
176
179
  for k, v in self.help["cred"].items():
177
180
  keyword_args = {}
178
181
  if k in flags_cred_bool:
179
182
  keyword_args = {"action": "store_true"}
180
183
  parser_cred.add_argument(
181
- f'--{k.replace("_", "-")}',
184
+ f"--{k.replace('_', '-')}",
182
185
  **keyword_args,
183
186
  dest=k,
184
187
  help=v,
@@ -226,6 +229,7 @@ class CLI:
226
229
  "signal": args.download_signal,
227
230
  "line": args.download_line,
228
231
  "telegram": args.download_telegram,
232
+ "telegram_telethon": args.download_telegram_telethon,
229
233
  "kakao": args.download_kakao,
230
234
  "viber": args.download_viber,
231
235
  "discord": args.download_discord,
@@ -266,6 +270,14 @@ class CLI:
266
270
  export_option = "signal"
267
271
  elif args.export_telegram:
268
272
  export_option = "telegram"
273
+ elif args.export_telegram_emoji:
274
+ export_option = "telegram_emoji"
275
+ elif args.export_telegram_telethon:
276
+ export_option = "telegram_telethon"
277
+ elif args.export_telegram_emoji_telethon:
278
+ export_option = "telegram_emoji_telethon"
279
+ elif args.export_viber:
280
+ export_option = "viber"
269
281
  elif args.export_imessage:
270
282
  export_option = "imessage"
271
283
  else:
@@ -291,6 +303,10 @@ class CLI:
291
303
  args.export_whatsapp,
292
304
  args.export_signal,
293
305
  args.export_telegram,
306
+ args.export_telegram_emoji,
307
+ args.export_telegram_telethon,
308
+ args.export_telegram_emoji_telethon,
309
+ args.export_viber,
294
310
  args.export_imessage,
295
311
  )
296
312
  )
@@ -302,8 +318,12 @@ class CLI:
302
318
  preset = "whatsapp"
303
319
  elif args.export_signal:
304
320
  preset = "signal"
305
- elif args.export_telegram:
321
+ elif args.export_telegram or args.export_telegram_telethon:
306
322
  preset = "telegram"
323
+ elif args.export_telegram_emoji or args.export_telegram_emoji_telethon:
324
+ preset = "telegram_emoji"
325
+ elif args.export_viber:
326
+ preset = "viber"
307
327
  elif args.export_imessage:
308
328
  preset = "imessage_small"
309
329
  elif args.preset == "auto":
@@ -316,6 +336,12 @@ class CLI:
316
336
  self.cb.msg(
317
337
  "Auto compression option set to no_compress (Reason: Export to local directory only)"
318
338
  )
339
+ elif "telegram_emoji" in output_option:
340
+ preset = "telegram_emoji"
341
+ self.cb.msg(f"Auto compression option set to {preset}")
342
+ elif "telegram" in output_option:
343
+ preset = "telegram"
344
+ self.cb.msg(f"Auto compression option set to {preset}")
319
345
  elif output_option == "imessage":
320
346
  preset = "imessage_small"
321
347
  self.cb.msg(f"Auto compression option set to {preset}")
@@ -445,6 +471,8 @@ class CLI:
445
471
  telegram_userid=args.telegram_userid
446
472
  if args.telegram_userid
447
473
  else creds.get("telegram", {}).get("userid"),
474
+ telethon_api_id=creds.get("telethon", {}).get("api_id"),
475
+ telethon_api_hash=creds.get("telethon", {}).get("api_hash"),
448
476
  kakao_auth_token=args.kakao_auth_token
449
477
  if args.kakao_auth_token
450
478
  else creds.get("kakao", {}).get("auth_token"),
@@ -511,6 +539,16 @@ class CLI:
511
539
 
512
540
  self.cb.msg("Failed to get uuid and password")
513
541
 
542
+ if args.telethon_setup:
543
+ telethon_setup = TelethonSetup(opt_cred, self.cb.ask_str)
544
+ success, _, telethon_api_id, telethon_api_hash = telethon_setup.start()
545
+
546
+ if success:
547
+ opt_cred.telethon_api_id = telethon_api_id
548
+ opt_cred.telethon_api_hash = telethon_api_hash
549
+
550
+ self.cb.msg("Telethon setup successful")
551
+
514
552
  if args.line_get_auth:
515
553
  get_line_auth = GetLineAuth()
516
554
 
@@ -24,8 +24,7 @@ if TYPE_CHECKING:
24
24
  MSG_START_COMP = "[I] Start compressing {} -> {}"
25
25
  MSG_SKIP_COMP = "[S] Compatible file found, skip compress and just copy {} -> {}"
26
26
  MSG_COMP = (
27
- "[C] Compressing {} -> {} res={}x{}, "
28
- "quality={}, fps={}, color={} (step {}-{}-{})"
27
+ "[C] Compressing {} -> {} res={}x{}, quality={}, fps={}, color={} (step {}-{}-{})"
29
28
  )
30
29
  MSG_REDO_COMP = "[{}] Compressed {} -> {} but size {} {} limit {}, recompressing"
31
30
  MSG_DONE_COMP = "[S] Successful compression {} -> {} size {} (step {})"
@@ -434,7 +433,7 @@ class StickerConvert:
434
433
  # Pillow is not reliable for getting webp frame durations
435
434
  durations: Optional[List[int]]
436
435
  if im.format == "WEBP":
437
- _, _, _, durations = CodecInfo._get_file_fps_frames_duration_webp(
436
+ _, _, _, durations = CodecInfo._get_file_fps_frames_duration_webp( # type: ignore
438
437
  self.in_f
439
438
  )
440
439
  else:
@@ -764,7 +763,7 @@ class StickerConvert:
764
763
  format=self.out_f.suffix.replace(".", ""),
765
764
  options=options_container,
766
765
  ) as output:
767
- out_stream = output.add_stream(codec, rate=self.fps, options=options_stream)
766
+ out_stream = output.add_stream(codec, rate=self.fps, options=options_stream) # type: ignore
768
767
  out_stream = cast(VideoStream, out_stream)
769
768
  assert isinstance(self.res_w, int) and isinstance(self.res_h, int)
770
769
  out_stream.width = self.res_w
@@ -811,9 +810,12 @@ class StickerConvert:
811
810
  elif self.out_f.suffix == ".webp":
812
811
  im_out = [Image.fromarray(i) for i in self.frames_processed] # type: ignore
813
812
  extra_kwargs["format"] = "WebP"
814
- # Enabling below is too slow
815
- # extra_kwargs["minimize_size"] = True
816
- # extra_kwargs["method"] = 6
813
+ extra_kwargs["allow_mixed"] = True
814
+ if self.quality:
815
+ if self.quality < 20:
816
+ extra_kwargs["minimize_size"] = True
817
+ extra_kwargs["method"] = 4 + int(2 * (100 - self.quality) / 100)
818
+ extra_kwargs["alpha_quality"] = self.quality
817
819
  else:
818
820
  raise RuntimeError(f"Invalid format {self.out_f.suffix}")
819
821
 
@@ -906,10 +908,10 @@ class StickerConvert:
906
908
  def _quantize_by_imagequant(self, image: Image.Image) -> Image.Image:
907
909
  import imagequant # type: ignore
908
910
 
909
- assert self.quality
910
- assert self.opt_comp.quality_min
911
- assert self.opt_comp.quality_max
912
- assert self.color
911
+ assert isinstance(self.quality, int)
912
+ assert isinstance(self.opt_comp.quality_min, int)
913
+ assert isinstance(self.opt_comp.quality_max, int)
914
+ assert isinstance(self.color, int)
913
915
 
914
916
  dither = 1 - (self.quality - self.opt_comp.quality_min) / (
915
917
  self.opt_comp.quality_max - self.opt_comp.quality_min
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
 
4
4
  from functools import partial
5
5
  from pathlib import Path
6
- from typing import Any, List, Optional, Tuple
6
+ from typing import Any, Dict, List, Optional, Tuple
7
7
 
8
8
  import anyio
9
9
  import httpx
@@ -34,8 +34,8 @@ class DownloadBase:
34
34
  retries: int = 3,
35
35
  headers: Optional[dict[Any, Any]] = None,
36
36
  **kwargs: Any,
37
- ) -> dict[str, bool]:
38
- results: dict[str, bool] = {}
37
+ ) -> Dict[str, bool]:
38
+ results: Dict[str, bool] = {}
39
39
  anyio.run(
40
40
  partial(
41
41
  self.download_multiple_files_async,
@@ -104,7 +104,7 @@ class DownloadBase:
104
104
  self.cb.put(f"Downloaded {url}")
105
105
  else:
106
106
  self.cb.put(
107
- f"Error {response.status_code}: {url} (tried {retry+1}/{retries} times)"
107
+ f"Error {response.status_code}: {url} (tried {retry + 1}/{retries} times)"
108
108
  )
109
109
 
110
110
  if results is not None:
@@ -153,7 +153,7 @@ class DownloadBase:
153
153
  break
154
154
  except requests.exceptions.RequestException as e:
155
155
  self.cb.put(
156
- f"Cannot download {url} (tried {retry+1}/{retries} times): {e}"
156
+ f"Cannot download {url} (tried {retry + 1}/{retries} times): {e}"
157
157
  )
158
158
 
159
159
  if not result:
@@ -63,11 +63,13 @@ class DownloadSignal(DownloadBase):
63
63
  )
64
64
 
65
65
  def download_stickers_signal(self) -> Tuple[int, int]:
66
- if "signal.art" not in self.url:
66
+ if "signal.art" not in self.url or not self.url.startswith(
67
+ "sgnl://addstickers/"
68
+ ):
67
69
  self.cb.put("Download failed: Unrecognized URL format")
68
70
  return 0, 0
69
71
 
70
- pack_id = self.url.split("#pack_id=")[1].split("&pack_key=")[0]
72
+ pack_id = self.url.split("pack_id=")[1].split("&pack_key=")[0]
71
73
  pack_key = self.url.split("&pack_key=")[1]
72
74
 
73
75
  try: