sticker-convert 2.10.9__tar.gz → 2.11.0__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.0}/PKG-INFO +49 -31
  2. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/README.md +45 -29
  3. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/requirements.txt +3 -1
  4. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/cli.py +39 -1
  5. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/converter.py +8 -5
  6. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/downloaders/download_base.py +3 -3
  7. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/downloaders/download_signal.py +4 -2
  8. sticker_convert-2.11.0/src/sticker_convert/downloaders/download_telegram.py +55 -0
  9. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui.py +12 -0
  10. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/frames/cred_frame.py +38 -13
  11. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/job.py +6 -6
  12. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/job_option.py +6 -0
  13. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/resources/compression.json +2 -2
  14. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/resources/help.json +3 -2
  15. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/resources/input.json +10 -0
  16. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/resources/output.json +16 -0
  17. sticker_convert-2.11.0/src/sticker_convert/uploaders/upload_telegram.py +329 -0
  18. sticker_convert-2.11.0/src/sticker_convert/utils/auth/telegram_api.py +668 -0
  19. sticker_convert-2.11.0/src/sticker_convert/utils/auth/telethon_setup.py +79 -0
  20. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/url_detect.py +1 -1
  21. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/version.py +1 -1
  22. {sticker_convert-2.10.9 → sticker_convert-2.11.0/src/sticker_convert.egg-info}/PKG-INFO +49 -31
  23. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert.egg-info/SOURCES.txt +2 -0
  24. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert.egg-info/requires.txt +3 -1
  25. sticker_convert-2.10.9/src/sticker_convert/downloaders/download_telegram.py +0 -139
  26. sticker_convert-2.10.9/src/sticker_convert/uploaders/upload_telegram.py +0 -393
  27. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/LICENSE +0 -0
  28. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/MANIFEST.in +0 -0
  29. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/pyproject.toml +0 -0
  30. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/setup.cfg +0 -0
  31. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/__init__.py +0 -0
  32. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/__main__.py +0 -0
  33. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/definitions.py +0 -0
  34. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/downloaders/__init__.py +0 -0
  35. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/downloaders/download_discord.py +0 -0
  36. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/downloaders/download_kakao.py +0 -0
  37. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/downloaders/download_line.py +0 -0
  38. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/downloaders/download_viber.py +0 -0
  39. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/__init__.py +0 -0
  40. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/frames/__init__.py +0 -0
  41. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/frames/comp_frame.py +0 -0
  42. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/frames/config_frame.py +0 -0
  43. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/frames/control_frame.py +0 -0
  44. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/frames/input_frame.py +0 -0
  45. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/frames/output_frame.py +0 -0
  46. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/frames/progress_frame.py +0 -0
  47. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/frames/right_clicker.py +0 -0
  48. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/gui_utils.py +0 -0
  49. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/windows/__init__.py +0 -0
  50. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/windows/advanced_compression_window.py +0 -0
  51. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/windows/base_window.py +0 -0
  52. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/windows/discord_get_auth_window.py +0 -0
  53. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/windows/kakao_get_auth_window.py +0 -0
  54. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/windows/line_get_auth_window.py +0 -0
  55. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/windows/signal_get_auth_window.py +0 -0
  56. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/gui_components/windows/viber_get_auth_window.py +0 -0
  57. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/.github/FUNDING.yml +0 -0
  58. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/.gitignore +0 -0
  59. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/README.md +0 -0
  60. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers/Info.plist +0 -0
  61. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Info.plist +0 -0
  62. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Contents.json +0 -0
  63. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Contents.json +0 -0
  64. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Contents.json +0 -0
  65. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Sticker 1.png +0 -0
  66. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Contents.json +0 -0
  67. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Sticker 2.png +0 -0
  68. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Contents.json +0 -0
  69. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Sticker 3.png +0 -0
  70. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/App-Store-1024x1024pt.png +0 -0
  71. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Contents.json +0 -0
  72. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-App-Store-1024x768pt.png +0 -0
  73. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-67x50pt@2x.png +0 -0
  74. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-Pro-74x55pt@2x.png +0 -0
  75. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@2x.png +0 -0
  76. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@3x.png +0 -0
  77. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@2x.png +0 -0
  78. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@3x.png +0 -0
  79. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@2x.png +0 -0
  80. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@3x.png +0 -0
  81. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPad-Settings-29pt@2x.png +0 -0
  82. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-Settings-29pt@3x.png +0 -0
  83. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-settings-29pt@2x.png +0 -0
  84. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.pbxproj +0 -0
  85. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
  86. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
  87. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcuserdata/niklaspeterson.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  88. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/xcuserdata/niklaspeterson.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
  89. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/resources/NotoColorEmoji.ttf +0 -0
  90. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/resources/appicon.icns +0 -0
  91. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/resources/appicon.ico +0 -0
  92. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/resources/appicon.png +0 -0
  93. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/resources/emoji.json +0 -0
  94. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/resources/memdump_linux.sh +0 -0
  95. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/resources/memdump_windows.ps1 +0 -0
  96. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/uploaders/__init__.py +0 -0
  97. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/uploaders/compress_wastickers.py +0 -0
  98. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/uploaders/upload_base.py +0 -0
  99. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/uploaders/upload_signal.py +0 -0
  100. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/uploaders/upload_viber.py +0 -0
  101. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/uploaders/xcode_imessage.py +0 -0
  102. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/auth/get_discord_auth.py +0 -0
  103. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/auth/get_kakao_auth.py +0 -0
  104. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/auth/get_kakao_desktop_auth.py +0 -0
  105. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/auth/get_line_auth.py +0 -0
  106. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/auth/get_signal_auth.py +0 -0
  107. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/auth/get_viber_auth.py +0 -0
  108. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/callback.py +0 -0
  109. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/chrome_remotedebug.py +0 -0
  110. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/emoji.py +0 -0
  111. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/files/cache_store.py +0 -0
  112. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/files/json_manager.py +0 -0
  113. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/files/json_resources_loader.py +0 -0
  114. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/files/metadata_handler.py +0 -0
  115. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/files/run_bin.py +0 -0
  116. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/files/sanitize_filename.py +0 -0
  117. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/media/apple_png_normalize.py +0 -0
  118. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/media/codec_info.py +0 -0
  119. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/media/decrypt_kakao.py +0 -0
  120. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/media/format_verify.py +0 -0
  121. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert/utils/process.py +0 -0
  122. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert.egg-info/dependency_links.txt +0 -0
  123. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert.egg-info/entry_points.txt +0 -0
  124. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/src/sticker_convert.egg-info/top_level.txt +0 -0
  125. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/tests/test_compression.py +0 -0
  126. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/tests/test_download.py +0 -0
  127. {sticker_convert-2.10.9 → sticker_convert-2.11.0}/tests/test_export.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sticker-convert
3
- Version: 2.10.9
3
+ Version: 2.11.0
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>
@@ -368,6 +368,7 @@ Requires-Dist: anyio~=4.7.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
@@ -378,11 +379,12 @@ Requires-Dist: numpy>=1.22.4
378
379
  Requires-Dist: Pillow~=10.4.0
379
380
  Requires-Dist: pyoxipng~=9.0.0
380
381
  Requires-Dist: python-telegram-bot~=21.9
381
- Requires-Dist: psutil~=6.1.0
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`
@@ -3,6 +3,7 @@ anyio~=4.7.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
@@ -13,11 +14,12 @@ numpy>=1.22.4
13
14
  Pillow~=10.4.0
14
15
  pyoxipng~=9.0.0
15
16
  python-telegram-bot~=21.9
16
- psutil~=6.1.0
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
@@ -168,10 +169,12 @@ 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 = {}
@@ -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
 
@@ -434,7 +434,7 @@ class StickerConvert:
434
434
  # Pillow is not reliable for getting webp frame durations
435
435
  durations: Optional[List[int]]
436
436
  if im.format == "WEBP":
437
- _, _, _, durations = CodecInfo._get_file_fps_frames_duration_webp(
437
+ _, _, _, durations = CodecInfo._get_file_fps_frames_duration_webp( # type: ignore
438
438
  self.in_f
439
439
  )
440
440
  else:
@@ -764,7 +764,7 @@ class StickerConvert:
764
764
  format=self.out_f.suffix.replace(".", ""),
765
765
  options=options_container,
766
766
  ) as output:
767
- out_stream = output.add_stream(codec, rate=self.fps, options=options_stream)
767
+ out_stream = output.add_stream(codec, rate=self.fps, options=options_stream) # type: ignore
768
768
  out_stream = cast(VideoStream, out_stream)
769
769
  assert isinstance(self.res_w, int) and isinstance(self.res_h, int)
770
770
  out_stream.width = self.res_w
@@ -811,9 +811,12 @@ class StickerConvert:
811
811
  elif self.out_f.suffix == ".webp":
812
812
  im_out = [Image.fromarray(i) for i in self.frames_processed] # type: ignore
813
813
  extra_kwargs["format"] = "WebP"
814
- # Enabling below is too slow
815
- # extra_kwargs["minimize_size"] = True
816
- # extra_kwargs["method"] = 6
814
+ extra_kwargs["allow_mixed"] = True
815
+ if self.quality:
816
+ if self.quality < 20:
817
+ extra_kwargs["minimize_size"] = True
818
+ extra_kwargs["method"] = 4 + int(2 * (100 - self.quality) / 100)
819
+ extra_kwargs["alpha_quality"] = self.quality
817
820
  else:
818
821
  raise RuntimeError(f"Invalid format {self.out_f.suffix}")
819
822
 
@@ -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,
@@ -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:
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env python3
2
+ from pathlib import Path
3
+ from typing import Optional, Tuple
4
+ from urllib.parse import urlparse
5
+
6
+ import anyio
7
+
8
+ from sticker_convert.downloaders.download_base import DownloadBase
9
+ from sticker_convert.job_option import CredOption, InputOption
10
+ from sticker_convert.utils.auth.telegram_api import BotAPI, TelegramAPI, TelethonAPI
11
+ from sticker_convert.utils.callback import CallbackProtocol, CallbackReturn
12
+ from sticker_convert.utils.files.metadata_handler import MetadataHandler
13
+
14
+
15
+ class DownloadTelegram(DownloadBase):
16
+ # def __init__(self, *args: Any, **kwargs: Any) -> None:
17
+ # super().__init__(*args, **kwargs)
18
+
19
+ def download_stickers_telegram(self) -> Tuple[int, int]:
20
+ if not ("telegram.me" in self.url or "t.me" in self.url):
21
+ self.cb.put("Download failed: Unrecognized URL format")
22
+ return 0, 0
23
+
24
+ return anyio.run(self.save_stickers)
25
+
26
+ async def save_stickers(self) -> Tuple[int, int]:
27
+ tg_api: TelegramAPI
28
+ if self.input_option.endswith("telethon"):
29
+ tg_api = TelethonAPI()
30
+ else:
31
+ tg_api = BotAPI()
32
+
33
+ if self.opt_cred is None:
34
+ self.cb.put("Download failed: No credentials")
35
+ return 0, 0
36
+
37
+ success = await tg_api.setup(self.opt_cred, False, self.cb, self.cb_return)
38
+ if success is False:
39
+ self.cb.put("Download failed: Invalid credentials")
40
+ return 0, 0
41
+
42
+ title = Path(urlparse(self.url).path).name
43
+ results, emoji_dict = await tg_api.pack_dl(title, self.out_dir)
44
+ MetadataHandler.set_metadata(self.out_dir, title=title, emoji_dict=emoji_dict)
45
+ return sum(results.values()), len(results)
46
+
47
+ @staticmethod
48
+ def start(
49
+ opt_input: InputOption,
50
+ opt_cred: Optional[CredOption],
51
+ cb: CallbackProtocol,
52
+ cb_return: CallbackReturn,
53
+ ) -> Tuple[int, int]:
54
+ downloader = DownloadTelegram(opt_input, opt_cred, cb, cb_return)
55
+ return downloader.download_stickers_telegram()
@@ -154,6 +154,8 @@ class GUI(Window):
154
154
  self.signal_password_var = StringVar(self)
155
155
  self.telegram_token_var = StringVar(self)
156
156
  self.telegram_userid_var = StringVar(self)
157
+ self.telethon_api_id_var = IntVar(self)
158
+ self.telethon_api_hash_var = StringVar(self)
157
159
  self.kakao_auth_token_var = StringVar(self)
158
160
  self.kakao_username_var = StringVar(self)
159
161
  self.kakao_password_var = StringVar(self)
@@ -406,6 +408,10 @@ class GUI(Window):
406
408
  self.signal_password_var.set(self.creds.get("signal", {}).get("password", ""))
407
409
  self.telegram_token_var.set(self.creds.get("telegram", {}).get("token", ""))
408
410
  self.telegram_userid_var.set(self.creds.get("telegram", {}).get("userid", ""))
411
+ self.telethon_api_id_var.set(self.creds.get("telethon", {}).get("api_id", 0))
412
+ self.telethon_api_hash_var.set(
413
+ self.creds.get("telethon", {}).get("api_hash", "")
414
+ )
409
415
  self.kakao_auth_token_var.set(self.creds.get("kakao", {}).get("auth_token", ""))
410
416
  self.kakao_username_var.set(self.creds.get("kakao", {}).get("username", ""))
411
417
  self.kakao_password_var.set(self.creds.get("kakao", {}).get("password", ""))
@@ -451,6 +457,10 @@ class GUI(Window):
451
457
  selection = self.comp_preset_var.get()
452
458
  if selection == "auto":
453
459
  output_option = self.get_output_name()
460
+ if "telegram_emoji" in output_option:
461
+ return "telegram_emoji"
462
+ if "telegram" in output_option:
463
+ return "telegram"
454
464
  if output_option == "imessage":
455
465
  return "imessage_small"
456
466
  if output_option == "local":
@@ -572,6 +582,8 @@ class GUI(Window):
572
582
  signal_password=self.signal_password_var.get(),
573
583
  telegram_token=self.telegram_token_var.get(),
574
584
  telegram_userid=self.telegram_userid_var.get(),
585
+ telethon_api_id=self.telethon_api_id_var.get(),
586
+ telethon_api_hash=self.telethon_api_hash_var.get(),
575
587
  kakao_auth_token=self.kakao_auth_token_var.get(),
576
588
  kakao_username=self.kakao_username_var.get(),
577
589
  kakao_password=self.kakao_password_var.get(),