sticker-convert 2.12.4__tar.gz → 2.13.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. {sticker_convert-2.12.4/src/sticker_convert.egg-info → sticker_convert-2.13.1.0}/PKG-INFO +37 -29
  2. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/README.md +31 -22
  3. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/requirements.txt +5 -6
  4. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/cli.py +3 -0
  5. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/converter.py +61 -58
  6. sticker_convert-2.13.1.0/src/sticker_convert/downloaders/download_band.py +110 -0
  7. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/downloaders/download_kakao.py +84 -22
  8. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/downloaders/download_line.py +8 -4
  9. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui.py +6 -3
  10. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/windows/advanced_compression_window.py +1 -1
  11. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/windows/discord_get_auth_window.py +3 -3
  12. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/windows/kakao_get_auth_window.py +25 -4
  13. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/windows/signal_get_auth_window.py +3 -3
  14. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/windows/viber_get_auth_window.py +16 -1
  15. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/job.py +6 -0
  16. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/resources/compression.json +47 -0
  17. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/resources/help.json +1 -1
  18. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/resources/input.json +10 -0
  19. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/resources/memdump_linux.sh +0 -1
  20. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/auth/get_discord_auth.py +2 -2
  21. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/auth/get_kakao_desktop_auth.py +38 -43
  22. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/auth/get_signal_auth.py +2 -2
  23. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/auth/get_viber_auth.py +3 -5
  24. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/auth/telegram_api.py +3 -1
  25. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/auth/telethon_setup.py +21 -8
  26. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/chrome_remotedebug.py +27 -29
  27. sticker_convert-2.13.1.0/src/sticker_convert/utils/chromiums/linux.py +52 -0
  28. sticker_convert-2.13.1.0/src/sticker_convert/utils/chromiums/osx.py +68 -0
  29. sticker_convert-2.13.1.0/src/sticker_convert/utils/chromiums/windows.py +45 -0
  30. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/media/codec_info.py +1 -1
  31. sticker_convert-2.13.1.0/src/sticker_convert/utils/process.py +231 -0
  32. sticker_convert-2.13.1.0/src/sticker_convert/utils/singletons.py +18 -0
  33. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/url_detect.py +3 -0
  34. sticker_convert-2.13.1.0/src/sticker_convert/version.py +3 -0
  35. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0/src/sticker_convert.egg-info}/PKG-INFO +37 -29
  36. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert.egg-info/SOURCES.txt +5 -0
  37. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert.egg-info/requires.txt +5 -6
  38. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/tests/test_download.py +46 -2
  39. sticker_convert-2.12.4/src/sticker_convert/utils/process.py +0 -187
  40. sticker_convert-2.12.4/src/sticker_convert/version.py +0 -3
  41. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/LICENSE +0 -0
  42. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/MANIFEST.in +0 -0
  43. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/pyproject.toml +0 -0
  44. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/setup.cfg +0 -0
  45. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/__init__.py +0 -0
  46. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/__main__.py +0 -0
  47. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/definitions.py +0 -0
  48. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/downloaders/__init__.py +0 -0
  49. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/downloaders/download_base.py +0 -0
  50. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/downloaders/download_discord.py +0 -0
  51. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/downloaders/download_signal.py +0 -0
  52. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/downloaders/download_telegram.py +0 -0
  53. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/downloaders/download_viber.py +0 -0
  54. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/__init__.py +0 -0
  55. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/frames/__init__.py +0 -0
  56. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/frames/comp_frame.py +0 -0
  57. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/frames/config_frame.py +0 -0
  58. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/frames/control_frame.py +0 -0
  59. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/frames/cred_frame.py +0 -0
  60. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/frames/input_frame.py +0 -0
  61. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/frames/output_frame.py +0 -0
  62. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/frames/progress_frame.py +0 -0
  63. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/frames/right_clicker.py +0 -0
  64. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/gui_utils.py +0 -0
  65. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/windows/__init__.py +0 -0
  66. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/windows/base_window.py +0 -0
  67. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/gui_components/windows/line_get_auth_window.py +0 -0
  68. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/.github/FUNDING.yml +0 -0
  69. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/.gitignore +0 -0
  70. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/README.md +0 -0
  71. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers/Info.plist +0 -0
  72. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Info.plist +0 -0
  73. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Contents.json +0 -0
  74. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Contents.json +0 -0
  75. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Contents.json +0 -0
  76. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Sticker 1.png +0 -0
  77. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Contents.json +0 -0
  78. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Sticker 2.png +0 -0
  79. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Contents.json +0 -0
  80. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Sticker 3.png +0 -0
  81. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/App-Store-1024x1024pt.png +0 -0
  82. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Contents.json +0 -0
  83. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-App-Store-1024x768pt.png +0 -0
  84. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-67x50pt@2x.png +0 -0
  85. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-Pro-74x55pt@2x.png +0 -0
  86. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@2x.png +0 -0
  87. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@3x.png +0 -0
  88. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@2x.png +0 -0
  89. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@3x.png +0 -0
  90. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@2x.png +0 -0
  91. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@3x.png +0 -0
  92. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPad-Settings-29pt@2x.png +0 -0
  93. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-Settings-29pt@3x.png +0 -0
  94. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-settings-29pt@2x.png +0 -0
  95. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.pbxproj +0 -0
  96. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
  97. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
  98. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcuserdata/niklaspeterson.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  99. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/xcuserdata/niklaspeterson.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
  100. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/job_option.py +0 -0
  101. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/resources/NotoColorEmoji.ttf +0 -0
  102. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/resources/appicon.icns +0 -0
  103. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/resources/appicon.ico +0 -0
  104. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/resources/appicon.png +0 -0
  105. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/resources/emoji.json +0 -0
  106. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/resources/memdump_windows.ps1 +0 -0
  107. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/resources/output.json +0 -0
  108. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/uploaders/__init__.py +0 -0
  109. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/uploaders/compress_wastickers.py +0 -0
  110. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/uploaders/upload_base.py +0 -0
  111. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/uploaders/upload_signal.py +0 -0
  112. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/uploaders/upload_telegram.py +0 -0
  113. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/uploaders/upload_viber.py +0 -0
  114. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/uploaders/xcode_imessage.py +0 -0
  115. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/auth/get_kakao_auth.py +0 -0
  116. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/auth/get_line_auth.py +0 -0
  117. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/callback.py +0 -0
  118. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/emoji.py +0 -0
  119. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/files/cache_store.py +0 -0
  120. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/files/json_manager.py +0 -0
  121. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/files/json_resources_loader.py +0 -0
  122. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/files/metadata_handler.py +0 -0
  123. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/files/run_bin.py +0 -0
  124. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/files/sanitize_filename.py +0 -0
  125. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/media/apple_png_normalize.py +0 -0
  126. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/media/decrypt_kakao.py +0 -0
  127. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert/utils/media/format_verify.py +0 -0
  128. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert.egg-info/dependency_links.txt +0 -0
  129. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert.egg-info/entry_points.txt +0 -0
  130. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/src/sticker_convert.egg-info/top_level.txt +0 -0
  131. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/tests/test_compression.py +0 -0
  132. {sticker_convert-2.12.4 → sticker_convert-2.13.1.0}/tests/test_export.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sticker-convert
3
- Version: 2.12.4
3
+ Version: 2.13.1.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>
@@ -366,8 +366,8 @@ License-File: LICENSE
366
366
  Requires-Dist: aiolimiter~=1.2.1
367
367
  Requires-Dist: anyio~=4.9.0
368
368
  Requires-Dist: apngasm_python~=1.3.2
369
- Requires-Dist: av~=13.1.0
370
- Requires-Dist: beautifulsoup4~=4.13.3
369
+ Requires-Dist: av>=13.1.0
370
+ Requires-Dist: beautifulsoup4~=4.13.4
371
371
  Requires-Dist: cryptg~=0.5.0.post0
372
372
  Requires-Dist: rookiepy~=0.5.6
373
373
  Requires-Dist: httpx~=0.28.1
@@ -375,17 +375,16 @@ Requires-Dist: imagequant~=1.1.4
375
375
  Requires-Dist: memory-tempfile~=2.2.3
376
376
  Requires-Dist: mergedeep~=1.3.4
377
377
  Requires-Dist: numpy>=1.22.4
378
- Requires-Dist: Pillow~=11.1.0
379
- Requires-Dist: pybrowsers~=0.7.0
378
+ Requires-Dist: Pillow~=11.2.1
380
379
  Requires-Dist: pyoxipng~=9.1.0
381
- Requires-Dist: python-telegram-bot~=22.0
380
+ Requires-Dist: python-telegram-bot~=22.1
382
381
  Requires-Dist: psutil~=7.0.0
383
382
  Requires-Dist: PyMemoryEditor~=1.5.22
384
383
  Requires-Dist: requests~=2.32.3
385
384
  Requires-Dist: rlottie_python~=1.3.7
386
385
  Requires-Dist: signalstickers-client-fork-laggykiller~=3.3.0.post2
387
386
  Requires-Dist: socksio~=1.0.0
388
- Requires-Dist: telethon~=1.39.0
387
+ Requires-Dist: telethon~=1.40.0
389
388
  Requires-Dist: tqdm~=4.67.1
390
389
  Requires-Dist: ttkbootstrap-fork-laggykiller~=1.5.1
391
390
  Requires-Dist: websocket_client~=1.8.0
@@ -397,12 +396,12 @@ Dynamic: license-file
397
396
 
398
397
  - A python script for creating, downloading, converting+compressing and uploading stickers from multiple instant messaging applications.
399
398
  - With GUI and CLI that runs on Windows, MacOS and Linux
400
- - Currently supports Signal, Telegram, WhatsApp (Create .wastickers), Line (Download only), Kakao (Download only), Viber, Discord (Download only), iMessage (Create Xcode sticker pack project)
399
+ - Currently supports Signal, Telegram, WhatsApp (Create .wastickers), Line (Download only), Kakao (Download only), Naver Band (Download only), Viber, Discord (Download only), iMessage (Create Xcode sticker pack project)
401
400
  - Supports static and animated stickers, with transparency support
402
401
 
403
402
  ## Downloads
404
403
  - [Pre-compiled releases](https://github.com/laggykiller/sticker-convert/releases) for Windows, MacOS and Linux (As AppImage).
405
- - Windows: Unzip the downloaded file and run `sticker-convert.exe`
404
+ - Windows: Unzip the downloaded file and run `sticker-convert.exe`, or download msi file for installation
406
405
  - MacOS: Unzip the downloaded file, hold control and open `hold_control_and_click_open_me.command` for the first time, then `sticker-convert.app` in the future
407
406
  - Linux:
408
407
  - AppImage: `chmod +x` the downloaded AppImage and run it
@@ -438,6 +437,7 @@ Dynamic: license-file
438
437
  | [WhatsApp](docs/guide_whatsapp.md) | ⭕ (By Android or WhatsApp Web) | ⭕ (Create `.wastickers`, import by Sticker Maker) |
439
438
  | [Line](docs/guide_line.md) | ✅ | 🚫 (Need to submit for manual approval) |
440
439
  | [Kakao](docs/guide_kakao.md) | ✅ (Need 'auth_token' for animated) | 🚫 (Need to submit for manual approval) |
440
+ | [Band](docs/guide_band.md) | ✅ | 🚫 (Need to submit for manual approval) |
441
441
  | [Viber](docs/guide_viber.md) | ✅ | ✅ (Require `viber_auth`) |
442
442
  | [Discord](docs/guide_discord.md) | ✅ (Require `token`) | 🚫 |
443
443
  | [iMessage](docs/guide_imessage.md) | 🚫 | ⭕ (Create Xcode stickerpack project for sideload) |
@@ -464,6 +464,9 @@ Dynamic: license-file
464
464
  - Kakao
465
465
  - Download: Supported (e.g. `https://e.kakao.com/t/xxxxx` OR `https://emoticon.kakao.com/items/xxxxx` OR `4404400`). It is rather complicated, learn more from [docs/guide_kakao.md](docs/guide_kakao.md)
466
466
  - Upload: Not supported. You need to manually submit sticker pack for approval before you can use in app.
467
+ - Band
468
+ - Download: Supported (e.g. `https://www.band.us/sticker/xxxx` OR 2535). Learn how to get share link from [docs/guide_band.md](docs/guide_band.md)
469
+ - Upload: Not supported. You need to manually submit sticker pack for approval before you can use in app.
467
470
  - Viber
468
471
  - Download: Supported (e.g. `https://stickers.viber.com/pages/example` OR `https://stickers.viber.com/pages/custom-sticker-packs/example`)
469
472
  - Upload: Supported. Viber authentication data required for uploading Viber stickers, which could be fetched from Viber Desktop application automatically.
@@ -490,30 +493,27 @@ Dynamic: license-file
490
493
  To run in CLI mode, pass on any arguments
491
494
 
492
495
  ```
493
- usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS]
494
- [--input-dir INPUT_DIR]
495
- [--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]
496
+ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS] [--input-dir INPUT_DIR]
497
+ [--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-band DOWNLOAD_BAND | --download-viber DOWNLOAD_VIBER | --download-discord DOWNLOAD_DISCORD | --download-discord-emoji DOWNLOAD_DISCORD_EMOJI]
496
498
  [--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE]
497
499
  [--export-signal | --export-telegram | --export-telegram-emoji | --export-telegram-telethon | --export-telegram-emoji-telethon | --export-viber | --export-whatsapp | --export-imessage]
498
500
  [--no-compress]
499
501
  [--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,discord,discord_emoji,imessage_small,imessage_medium,imessage_large,custom}]
500
- [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX]
501
- [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN]
502
- [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER]
503
- [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
504
- [--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
502
+ [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--fps-power FPS_POWER]
503
+ [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN]
504
+ [--res-h-max RES_H_MAX] [--res-power RES_POWER] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX]
505
+ [--quality-power QUALITY_POWER] [--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
505
506
  [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT]
506
- [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX]
507
- [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
508
- [--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI]
509
- [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
510
- [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID] [--telethon-setup]
511
- [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-get-auth-desktop]
512
- [--kakao-bin-path KAKAO_BIN_PATH] [--kakao-username KAKAO_USERNAME]
507
+ [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT]
508
+ [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD]
509
+ [--cache-dir CACHE_DIR] [--chromium-path CHROMIUM_PATH] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID]
510
+ [--signal-password SIGNAL_PASSWORD] [--signal-get-auth] [--telegram-token TELEGRAM_TOKEN]
511
+ [--telegram-userid TELEGRAM_USERID] [--telethon-setup] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth]
512
+ [--kakao-get-auth-desktop] [--kakao-bin-path KAKAO_BIN_PATH] [--kakao-username KAKAO_USERNAME]
513
513
  [--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
514
- [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
515
- [--viber-auth VIBER_AUTH] [--viber-get-auth VIBER_GET_AUTH] [--viber-bin-path VIBER_BIN_PATH]
516
- [--discord-get-auth] [--discord-token DISCORD_TOKEN] [--save-cred]
514
+ [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES] [--viber-auth VIBER_AUTH]
515
+ [--viber-get-auth VIBER_GET_AUTH] [--viber-bin-path VIBER_BIN_PATH] [--discord-get-auth]
516
+ [--discord-token DISCORD_TOKEN] [--save-cred]
517
517
 
518
518
  CLI for stickers-convert
519
519
 
@@ -552,6 +552,9 @@ Input options:
552
552
  Download kakao stickers from a URL / ID as input
553
553
  (Example: https://e.kakao.com/t/xxxxx
554
554
  OR https://emoticon.kakao.com/items/xxxxx OR 4404400)
555
+ --download-band DOWNLOAD_BAND
556
+ Download Naver Band stickers from a URL / ID as input
557
+ (Example: https://www.band.us/sticker/xxxx OR 2535)
555
558
  --download-viber DOWNLOAD_VIBER
556
559
  Download viber stickers from a URL as input
557
560
  (Example: https://stickers.viber.com/pages/example
@@ -659,6 +662,10 @@ Compression options:
659
662
  --cache-dir CACHE_DIR
660
663
  Set custom cache directory.
661
664
  Useful for debugging, or speed up conversion if cache_dir is on RAM disk.
665
+ --chromium-path CHROMIUM_PATH
666
+ Set Chromium(-based)/Chrome browser path.
667
+ Required for converting from SVG files.
668
+ Leave blank to auto detect
662
669
  --default-emoji DEFAULT_EMOJI
663
670
  Set the default emoji for uploading Signal and Telegram sticker packs.
664
671
 
@@ -678,7 +685,6 @@ Credentials options:
678
685
  --kakao-get-auth Generate Kakao auth_token by simulating login. Kakao username, password, country code and phone number are also required.
679
686
  --kakao-get-auth-desktop
680
687
  Get Kakao auth_token from Kakao Desktop application.
681
- (Only working on Windows.)
682
688
  --kakao-bin-path KAKAO_BIN_PATH
683
689
  Set Kakao Desktop application path for launching and getting auth_token.
684
690
  Useful for portable installation.
@@ -881,9 +887,11 @@ See [docs/TODO.md](docs/TODO.md)
881
887
  - Information about Line stickers: https://github.com/doubleplusc/Line-sticker-downloader
882
888
  - Information about Kakao animated stickers: https://gist.github.com/chitacan/9802668
883
889
  - Downloading and decrypting Kakao animated stickers: https://github.com/blluv/KakaoTalkEmoticonDownloader
890
+ - Finding browser executable paths: https://github.com/roniemartinez/browsers
884
891
  - Application icon taken from [Icons8](https://icons8.com/)
885
892
  - Banner generated from [GitHub Socialify](https://socialify.git.ci/)
893
+ - Free code signing on Windows provided by [SignPath.io](https://about.signpath.io/), certificate by [SignPath Foundation](https://signpath.org/)
886
894
 
887
895
  ## DISCLAIMER
888
- - The author of this repo is NOT affiliated with Signal, Telegram, WhatsApp, Line, Kakao, Viber, Discord, iMessage or Sticker Maker.
896
+ - The author of this repo is NOT affiliated with Signal, Telegram, WhatsApp, Line, Kakao, Naver Band, Viber, Discord, iMessage or Sticker Maker.
889
897
  - The author of this repo is NOT repsonsible for any legal consequences and loss incurred from using this repo.
@@ -4,12 +4,12 @@
4
4
 
5
5
  - A python script for creating, downloading, converting+compressing and uploading stickers from multiple instant messaging applications.
6
6
  - With GUI and CLI that runs on Windows, MacOS and Linux
7
- - Currently supports Signal, Telegram, WhatsApp (Create .wastickers), Line (Download only), Kakao (Download only), Viber, Discord (Download only), iMessage (Create Xcode sticker pack project)
7
+ - Currently supports Signal, Telegram, WhatsApp (Create .wastickers), Line (Download only), Kakao (Download only), Naver Band (Download only), Viber, Discord (Download only), iMessage (Create Xcode sticker pack project)
8
8
  - Supports static and animated stickers, with transparency support
9
9
 
10
10
  ## Downloads
11
11
  - [Pre-compiled releases](https://github.com/laggykiller/sticker-convert/releases) for Windows, MacOS and Linux (As AppImage).
12
- - Windows: Unzip the downloaded file and run `sticker-convert.exe`
12
+ - Windows: Unzip the downloaded file and run `sticker-convert.exe`, or download msi file for installation
13
13
  - MacOS: Unzip the downloaded file, hold control and open `hold_control_and_click_open_me.command` for the first time, then `sticker-convert.app` in the future
14
14
  - Linux:
15
15
  - AppImage: `chmod +x` the downloaded AppImage and run it
@@ -45,6 +45,7 @@
45
45
  | [WhatsApp](docs/guide_whatsapp.md) | ⭕ (By Android or WhatsApp Web) | ⭕ (Create `.wastickers`, import by Sticker Maker) |
46
46
  | [Line](docs/guide_line.md) | ✅ | 🚫 (Need to submit for manual approval) |
47
47
  | [Kakao](docs/guide_kakao.md) | ✅ (Need 'auth_token' for animated) | 🚫 (Need to submit for manual approval) |
48
+ | [Band](docs/guide_band.md) | ✅ | 🚫 (Need to submit for manual approval) |
48
49
  | [Viber](docs/guide_viber.md) | ✅ | ✅ (Require `viber_auth`) |
49
50
  | [Discord](docs/guide_discord.md) | ✅ (Require `token`) | 🚫 |
50
51
  | [iMessage](docs/guide_imessage.md) | 🚫 | ⭕ (Create Xcode stickerpack project for sideload) |
@@ -71,6 +72,9 @@
71
72
  - Kakao
72
73
  - Download: Supported (e.g. `https://e.kakao.com/t/xxxxx` OR `https://emoticon.kakao.com/items/xxxxx` OR `4404400`). It is rather complicated, learn more from [docs/guide_kakao.md](docs/guide_kakao.md)
73
74
  - Upload: Not supported. You need to manually submit sticker pack for approval before you can use in app.
75
+ - Band
76
+ - Download: Supported (e.g. `https://www.band.us/sticker/xxxx` OR 2535). Learn how to get share link from [docs/guide_band.md](docs/guide_band.md)
77
+ - Upload: Not supported. You need to manually submit sticker pack for approval before you can use in app.
74
78
  - Viber
75
79
  - Download: Supported (e.g. `https://stickers.viber.com/pages/example` OR `https://stickers.viber.com/pages/custom-sticker-packs/example`)
76
80
  - Upload: Supported. Viber authentication data required for uploading Viber stickers, which could be fetched from Viber Desktop application automatically.
@@ -97,30 +101,27 @@
97
101
  To run in CLI mode, pass on any arguments
98
102
 
99
103
  ```
100
- usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS]
101
- [--input-dir INPUT_DIR]
102
- [--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]
104
+ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--custom-presets CUSTOM_PRESETS] [--input-dir INPUT_DIR]
105
+ [--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-band DOWNLOAD_BAND | --download-viber DOWNLOAD_VIBER | --download-discord DOWNLOAD_DISCORD | --download-discord-emoji DOWNLOAD_DISCORD_EMOJI]
103
106
  [--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE]
104
107
  [--export-signal | --export-telegram | --export-telegram-emoji | --export-telegram-telethon | --export-telegram-emoji-telethon | --export-viber | --export-whatsapp | --export-imessage]
105
108
  [--no-compress]
106
109
  [--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,discord,discord_emoji,imessage_small,imessage_medium,imessage_large,custom}]
107
- [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX]
108
- [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN]
109
- [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER]
110
- [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
111
- [--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
110
+ [--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--fps-power FPS_POWER]
111
+ [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX] [--res-h-min RES_H_MIN]
112
+ [--res-h-max RES_H_MAX] [--res-power RES_POWER] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX]
113
+ [--quality-power QUALITY_POWER] [--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER]
112
114
  [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT]
113
- [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX]
114
- [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
115
- [--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI]
116
- [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
117
- [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID] [--telethon-setup]
118
- [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-get-auth-desktop]
119
- [--kakao-bin-path KAKAO_BIN_PATH] [--kakao-username KAKAO_USERNAME]
115
+ [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT]
116
+ [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD]
117
+ [--cache-dir CACHE_DIR] [--chromium-path CHROMIUM_PATH] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID]
118
+ [--signal-password SIGNAL_PASSWORD] [--signal-get-auth] [--telegram-token TELEGRAM_TOKEN]
119
+ [--telegram-userid TELEGRAM_USERID] [--telethon-setup] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth]
120
+ [--kakao-get-auth-desktop] [--kakao-bin-path KAKAO_BIN_PATH] [--kakao-username KAKAO_USERNAME]
120
121
  [--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
121
- [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
122
- [--viber-auth VIBER_AUTH] [--viber-get-auth VIBER_GET_AUTH] [--viber-bin-path VIBER_BIN_PATH]
123
- [--discord-get-auth] [--discord-token DISCORD_TOKEN] [--save-cred]
122
+ [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES] [--viber-auth VIBER_AUTH]
123
+ [--viber-get-auth VIBER_GET_AUTH] [--viber-bin-path VIBER_BIN_PATH] [--discord-get-auth]
124
+ [--discord-token DISCORD_TOKEN] [--save-cred]
124
125
 
125
126
  CLI for stickers-convert
126
127
 
@@ -159,6 +160,9 @@ Input options:
159
160
  Download kakao stickers from a URL / ID as input
160
161
  (Example: https://e.kakao.com/t/xxxxx
161
162
  OR https://emoticon.kakao.com/items/xxxxx OR 4404400)
163
+ --download-band DOWNLOAD_BAND
164
+ Download Naver Band stickers from a URL / ID as input
165
+ (Example: https://www.band.us/sticker/xxxx OR 2535)
162
166
  --download-viber DOWNLOAD_VIBER
163
167
  Download viber stickers from a URL as input
164
168
  (Example: https://stickers.viber.com/pages/example
@@ -266,6 +270,10 @@ Compression options:
266
270
  --cache-dir CACHE_DIR
267
271
  Set custom cache directory.
268
272
  Useful for debugging, or speed up conversion if cache_dir is on RAM disk.
273
+ --chromium-path CHROMIUM_PATH
274
+ Set Chromium(-based)/Chrome browser path.
275
+ Required for converting from SVG files.
276
+ Leave blank to auto detect
269
277
  --default-emoji DEFAULT_EMOJI
270
278
  Set the default emoji for uploading Signal and Telegram sticker packs.
271
279
 
@@ -285,7 +293,6 @@ Credentials options:
285
293
  --kakao-get-auth Generate Kakao auth_token by simulating login. Kakao username, password, country code and phone number are also required.
286
294
  --kakao-get-auth-desktop
287
295
  Get Kakao auth_token from Kakao Desktop application.
288
- (Only working on Windows.)
289
296
  --kakao-bin-path KAKAO_BIN_PATH
290
297
  Set Kakao Desktop application path for launching and getting auth_token.
291
298
  Useful for portable installation.
@@ -488,9 +495,11 @@ See [docs/TODO.md](docs/TODO.md)
488
495
  - Information about Line stickers: https://github.com/doubleplusc/Line-sticker-downloader
489
496
  - Information about Kakao animated stickers: https://gist.github.com/chitacan/9802668
490
497
  - Downloading and decrypting Kakao animated stickers: https://github.com/blluv/KakaoTalkEmoticonDownloader
498
+ - Finding browser executable paths: https://github.com/roniemartinez/browsers
491
499
  - Application icon taken from [Icons8](https://icons8.com/)
492
500
  - Banner generated from [GitHub Socialify](https://socialify.git.ci/)
501
+ - Free code signing on Windows provided by [SignPath.io](https://about.signpath.io/), certificate by [SignPath Foundation](https://signpath.org/)
493
502
 
494
503
  ## DISCLAIMER
495
- - The author of this repo is NOT affiliated with Signal, Telegram, WhatsApp, Line, Kakao, Viber, Discord, iMessage or Sticker Maker.
504
+ - The author of this repo is NOT affiliated with Signal, Telegram, WhatsApp, Line, Kakao, Naver Band, Viber, Discord, iMessage or Sticker Maker.
496
505
  - The author of this repo is NOT repsonsible for any legal consequences and loss incurred from using this repo.
@@ -1,8 +1,8 @@
1
1
  aiolimiter~=1.2.1
2
2
  anyio~=4.9.0
3
3
  apngasm_python~=1.3.2
4
- av~=13.1.0
5
- beautifulsoup4~=4.13.3
4
+ av>=13.1.0
5
+ beautifulsoup4~=4.13.4
6
6
  cryptg~=0.5.0.post0
7
7
  rookiepy~=0.5.6
8
8
  httpx~=0.28.1
@@ -10,17 +10,16 @@ imagequant~=1.1.4
10
10
  memory-tempfile~=2.2.3
11
11
  mergedeep~=1.3.4
12
12
  numpy>=1.22.4
13
- Pillow~=11.1.0
14
- pybrowsers~=0.7.0
13
+ Pillow~=11.2.1
15
14
  pyoxipng~=9.1.0
16
- python-telegram-bot~=22.0
15
+ python-telegram-bot~=22.1
17
16
  psutil~=7.0.0
18
17
  PyMemoryEditor~=1.5.22
19
18
  requests~=2.32.3
20
19
  rlottie_python~=1.3.7
21
20
  signalstickers-client-fork-laggykiller~=3.3.0.post2
22
21
  socksio~=1.0.0
23
- telethon~=1.39.0
22
+ telethon~=1.40.0
24
23
  tqdm~=4.67.1
25
24
  ttkbootstrap-fork-laggykiller~=1.5.1
26
25
  websocket_client~=1.8.0
@@ -232,6 +232,7 @@ class CLI:
232
232
  "telegram": args.download_telegram,
233
233
  "telegram_telethon": args.download_telegram_telethon,
234
234
  "kakao": args.download_kakao,
235
+ "band": args.download_band,
235
236
  "viber": args.download_viber,
236
237
  "discord": args.download_discord,
237
238
  "discord_emoji": args.download_discord_emoji,
@@ -550,6 +551,8 @@ class CLI:
550
551
  opt_cred.telethon_api_hash = telethon_api_hash
551
552
 
552
553
  self.cb.msg("Telethon setup successful")
554
+ else:
555
+ self.cb.msg("Telethon setup failed")
553
556
 
554
557
  if args.line_get_auth:
555
558
  get_line_auth = GetLineAuth()
@@ -19,6 +19,7 @@ from sticker_convert.utils.chrome_remotedebug import CRD
19
19
  from sticker_convert.utils.files.cache_store import CacheStore
20
20
  from sticker_convert.utils.media.codec_info import CodecInfo, rounding
21
21
  from sticker_convert.utils.media.format_verify import FormatVerify
22
+ from sticker_convert.utils.singletons import singletons
22
23
 
23
24
  if TYPE_CHECKING:
24
25
  from av.video.frame import VideoFrame
@@ -435,26 +436,30 @@ class StickerConvert:
435
436
  width = self.codec_info_orig.res[0]
436
437
  height = self.codec_info_orig.res[1]
437
438
 
438
- chrome_path: Optional[str]
439
- if self.opt_comp.chromium_path:
440
- chrome_path = self.opt_comp.chromium_path
441
- else:
442
- chrome_path = CRD.get_chrome_path()
443
- args = [
444
- "--headless",
445
- "--kiosk",
446
- "--disable-extensions",
447
- "--disable-infobars",
448
- "--disable-gpu",
449
- "--disable-gpu-rasterization",
450
- "--hide-scrollbars",
451
- f"--window-size={width + 200},{height + 200}",
452
- "about:blank",
453
- ]
454
- if chrome_path is None:
455
- raise RuntimeError("[F] Chrome/Chromium required for importing svg")
456
- self.cb.put("[W] Importing SVG takes long time")
457
-
439
+ if singletons.objs.get("crd") is None:
440
+ chrome_path: Optional[str]
441
+ if self.opt_comp.chromium_path:
442
+ chrome_path = self.opt_comp.chromium_path
443
+ else:
444
+ chrome_path = CRD.get_chromium_path()
445
+ args = [
446
+ "--headless",
447
+ "--kiosk",
448
+ "--disable-extensions",
449
+ "--disable-infobars",
450
+ "--disable-gpu",
451
+ "--disable-gpu-rasterization",
452
+ "--hide-scrollbars",
453
+ "--force-device-scale-factor=1",
454
+ "about:blank",
455
+ ]
456
+ if chrome_path is None:
457
+ raise RuntimeError("[F] Chrome/Chromium required for importing svg")
458
+ self.cb.put("[W] Importing SVG takes long time")
459
+ singletons.objs["crd"] = CRD(chrome_path, args=args)
460
+ singletons.objs["crd"].connect(-1) # type: ignore
461
+
462
+ crd = cast(CRD, singletons.objs["crd"])
458
463
  if isinstance(self.in_f, bytes):
459
464
  svg = self.in_f.decode()
460
465
  else:
@@ -469,39 +474,35 @@ class StickerConvert:
469
474
  svg_tag["height"] = height
470
475
  svg = str(soup)
471
476
 
472
- crd = None
473
- try:
474
- crd = CRD(chrome_path, args=args)
475
- crd.connect(-1)
476
- crd.open_html_str(svg)
477
- crd.set_transparent_bg()
478
- crd.exec_js('svg = document.getElementsByTagName("svg")[0]')
479
- x = json.loads(crd.exec_js("svg.getBoundingClientRect().x"))["result"][
480
- "result"
481
- ]["value"]
482
- y = json.loads(crd.exec_js("svg.getBoundingClientRect().y"))["result"][
483
- "result"
484
- ]["value"]
485
- clip = {"x": x, "y": y, "width": width, "height": height, "scale": 1}
486
-
487
- if self.codec_info_orig.fps > 0:
488
- crd.exec_js("svg.pauseAnimations()")
489
- for i in range(self.codec_info_orig.frames):
490
- curr_time = (
491
- i
492
- / self.codec_info_orig.frames
493
- * self.codec_info_orig.duration
494
- / 1000
495
- )
496
- crd.exec_js(f"svg.setCurrentTime({curr_time})")
497
- self.frames_raw.append(
498
- np.asarray(crd.screenshot(clip).convert("RGBA"))
499
- )
500
- else:
501
- self.frames_raw.append(np.asarray(crd.screenshot(clip).convert("RGBA")))
502
- finally:
503
- if crd is not None:
504
- crd.close()
477
+ crd.open_html_str(svg)
478
+ crd.set_transparent_bg()
479
+ init_js = 'svg = document.getElementsByTagName("svg")[0];'
480
+ if self.codec_info_orig.fps > 0:
481
+ init_js += "svg.pauseAnimations();"
482
+ init_js += "JSON.stringify(svg.getBoundingClientRect());"
483
+ bound = json.loads(
484
+ json.loads(crd.exec_js(init_js))["result"]["result"]["value"]
485
+ )
486
+ clip = {
487
+ "x": bound["x"],
488
+ "y": bound["y"],
489
+ "width": width,
490
+ "height": height,
491
+ "scale": 1,
492
+ }
493
+
494
+ if self.codec_info_orig.fps > 0:
495
+ for i in range(self.codec_info_orig.frames):
496
+ curr_time = (
497
+ i
498
+ / self.codec_info_orig.frames
499
+ * self.codec_info_orig.duration
500
+ / 1000
501
+ )
502
+ crd.exec_js(f"svg.setCurrentTime({curr_time})")
503
+ self.frames_raw.append(np.asarray(crd.screenshot(clip)))
504
+ else:
505
+ self.frames_raw.append(np.asarray(crd.screenshot(clip)))
505
506
 
506
507
  def _frames_import_pillow(self) -> None:
507
508
  with Image.open(self.in_f) as im:
@@ -563,7 +564,7 @@ class StickerConvert:
563
564
  container = cast(InputContainer, container)
564
565
  context = container.streams.video[0].codec_context
565
566
  if context.name == "vp8":
566
- context = cast(VideoCodecContext, CodecContext.create("libvpx", "r"))
567
+ context = CodecContext.create("libvpx", "r")
567
568
  elif context.name == "vp9":
568
569
  context = cast(
569
570
  VideoCodecContext, CodecContext.create("libvpx-vp9", "r")
@@ -596,7 +597,12 @@ class StickerConvert:
596
597
  else:
597
598
  frame_resized = frame
598
599
 
599
- if frame_resized.format.name == "yuv420p":
600
+ # yuva420p may cause crash for pyav < 14
601
+ # Not safe to directly call frame.to_ndarray(format="rgba")
602
+ # https://github.com/PyAV-Org/PyAV/discussions/1510
603
+ if int(av.__version__.split(".")[0]) >= 14:
604
+ rgba_array = frame_resized.to_ndarray(format="rgba")
605
+ elif frame_resized.format.name == "yuv420p":
600
606
  rgb_array = frame_resized.to_ndarray(format="rgb24")
601
607
  rgba_array = np.dstack(
602
608
  (
@@ -608,9 +614,6 @@ class StickerConvert:
608
614
  )
609
615
  )
610
616
  else:
611
- # yuva420p may cause crash
612
- # Not safe to directly call frame.to_ndarray(format="rgba")
613
- # https://github.com/laggykiller/sticker-convert/issues/114
614
617
  frame_resized = frame_resized.reformat(
615
618
  format="yuva420p",
616
619
  dst_colorspace=1,
@@ -0,0 +1,110 @@
1
+ #!/usr/bin/env python3
2
+ from __future__ import annotations
3
+
4
+ import json
5
+ import zipfile
6
+ from io import BytesIO
7
+ from pathlib import Path
8
+ from typing import Any, Dict, Optional, Tuple
9
+ from urllib.parse import urlparse
10
+
11
+ import requests
12
+
13
+ from sticker_convert.downloaders.download_base import DownloadBase
14
+ from sticker_convert.job_option import CredOption, InputOption
15
+ from sticker_convert.utils.callback import CallbackProtocol, CallbackReturn
16
+ from sticker_convert.utils.files.metadata_handler import MetadataHandler
17
+
18
+
19
+ class DownloadBand(DownloadBase):
20
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
21
+ super().__init__(*args, **kwargs)
22
+
23
+ def decompress(self, zip_file: bytes) -> int:
24
+ with zipfile.ZipFile(BytesIO(zip_file)) as zf:
25
+ self.cb.put("Unzipping...")
26
+
27
+ zf_files = zf.namelist()
28
+ animated = [i for i in zf_files if "animation/" in i]
29
+ if len(animated) > 0:
30
+ pack_files = animated
31
+ else:
32
+ pack_files = [
33
+ i
34
+ for i in zf_files
35
+ if i.endswith(".meta") is False and "_key" not in i
36
+ ]
37
+
38
+ self.cb.put(
39
+ (
40
+ "bar",
41
+ None,
42
+ {"set_progress_mode": "determinate", "steps": len(pack_files)},
43
+ )
44
+ )
45
+
46
+ for num, sticker in enumerate(pack_files):
47
+ data = zf.read(sticker)
48
+ self.cb.put(f"Read {sticker}")
49
+ ext = sticker.split(".")[-1]
50
+
51
+ out_path = Path(self.out_dir, str(num).zfill(3) + f".{ext}")
52
+ with open(out_path, "wb") as f:
53
+ f.write(data)
54
+
55
+ self.cb.put("update_bar")
56
+
57
+ return len(pack_files)
58
+
59
+ def get_metadata(self, pack_no: str) -> Optional[Dict[Any, Any]]:
60
+ r = requests.get(
61
+ f"https://sapi.band.us/v1.0.0/get_sticker_info?pack_no={pack_no}"
62
+ )
63
+ if r.text:
64
+ return json.loads(r.text)
65
+ else:
66
+ return None
67
+
68
+ def download_stickers_band(self) -> Tuple[int, int]:
69
+ if urlparse(self.url).netloc != "www.band.us" and self.url.isnumeric() is False:
70
+ self.cb.put("Download failed: Unsupported URL format")
71
+ return 0, 0
72
+
73
+ if self.url.isnumeric():
74
+ pack_no = self.url
75
+ else:
76
+ pack_no = urlparse(self.url).path.split("/")[-1]
77
+ metadata = self.get_metadata(pack_no)
78
+ if metadata:
79
+ self.title = metadata["result_data"]["sticker"]["name"]
80
+ else:
81
+ self.cb.put("Download failed: Failed to get metadata")
82
+ return 0, 0
83
+
84
+ MetadataHandler.set_metadata(self.out_dir, title=self.title)
85
+
86
+ pack_url = f"http://s.cmstatic.net/band/sticker/v2/{pack_no}/shop/pack"
87
+ zip_file = self.download_file(pack_url)
88
+
89
+ if zip_file:
90
+ self.cb.put(f"Downloaded {pack_url}")
91
+ else:
92
+ self.cb.put(f"Cannot download {pack_url}")
93
+ return 0, 0
94
+
95
+ pack_files_no = self.decompress(zip_file)
96
+
97
+ cover_url = f"http://s.cmstatic.net/band/sticker/v2/{pack_no}/shop/main"
98
+ self.download_file(cover_url, self.out_dir / "cover.png")
99
+
100
+ return pack_files_no, pack_files_no
101
+
102
+ @staticmethod
103
+ def start(
104
+ opt_input: InputOption,
105
+ opt_cred: Optional[CredOption],
106
+ cb: CallbackProtocol,
107
+ cb_return: CallbackReturn,
108
+ ) -> Tuple[int, int]:
109
+ downloader = DownloadBand(opt_input, opt_cred, cb, cb_return)
110
+ return downloader.download_stickers_band()