sticker-convert 2.13.2.2__tar.gz → 2.14.0.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.
- {sticker_convert-2.13.2.2/src/sticker_convert.egg-info → sticker_convert-2.14.0.0}/PKG-INFO +49 -33
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/README.md +37 -22
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/requirements.txt +11 -10
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/cli.py +36 -12
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/converter.py +49 -21
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui.py +7 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/frames/comp_frame.py +1 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/windows/advanced_compression_window.py +38 -13
- sticker_convert-2.14.0.0/src/sticker_convert/gui_components/windows/kakao_get_auth_window.py +468 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/job.py +10 -4
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/job_option.py +3 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/resources/NotoColorEmoji.ttf +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/resources/compression.json +32 -16
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/resources/help.json +12 -7
- sticker_convert-2.13.2.2/src/sticker_convert/utils/auth/get_kakao_auth.py → sticker_convert-2.14.0.0/src/sticker_convert/utils/auth/get_kakao_auth_android_login.py +1 -1
- sticker_convert-2.14.0.0/src/sticker_convert/utils/auth/get_kakao_auth_desktop_login.py +282 -0
- sticker_convert-2.13.2.2/src/sticker_convert/utils/auth/get_kakao_desktop_auth.py → sticker_convert-2.14.0.0/src/sticker_convert/utils/auth/get_kakao_auth_desktop_memdump.py +17 -11
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/auth/telegram_api.py +6 -5
- sticker_convert-2.14.0.0/src/sticker_convert/version.py +3 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0/src/sticker_convert.egg-info}/PKG-INFO +49 -33
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert.egg-info/SOURCES.txt +3 -2
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert.egg-info/requires.txt +11 -10
- sticker_convert-2.13.2.2/src/sticker_convert/gui_components/windows/kakao_get_auth_window.py +0 -321
- sticker_convert-2.13.2.2/src/sticker_convert/version.py +0 -3
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/LICENSE +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/MANIFEST.in +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/pyproject.toml +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/setup.cfg +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/__init__.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/__main__.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/definitions.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/downloaders/__init__.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/downloaders/download_band.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/downloaders/download_base.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/downloaders/download_discord.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/downloaders/download_kakao.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/downloaders/download_line.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/downloaders/download_ogq.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/downloaders/download_signal.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/downloaders/download_telegram.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/downloaders/download_viber.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/__init__.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/frames/__init__.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/frames/config_frame.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/frames/control_frame.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/frames/cred_frame.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/frames/input_frame.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/frames/output_frame.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/frames/progress_frame.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/frames/right_clicker.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/gui_utils.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/windows/__init__.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/windows/base_window.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/windows/discord_get_auth_window.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/windows/line_get_auth_window.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/windows/signal_get_auth_window.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/gui_components/windows/viber_get_auth_window.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/.github/FUNDING.yml +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/.gitignore +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/README.md +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers/Info.plist +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Info.plist +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Contents.json +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Contents.json +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Contents.json +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Sticker 1.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Contents.json +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Sticker 2.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Contents.json +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Sticker 3.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/App-Store-1024x1024pt.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Contents.json +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-App-Store-1024x768pt.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-67x50pt@2x.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-Pro-74x55pt@2x.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@2x.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@3x.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@2x.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@3x.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@2x.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@3x.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPad-Settings-29pt@2x.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-Settings-29pt@3x.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-settings-29pt@2x.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.pbxproj +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcuserdata/niklaspeterson.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/xcuserdata/niklaspeterson.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/resources/appicon.icns +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/resources/appicon.ico +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/resources/appicon.png +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/resources/emoji.json +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/resources/input.json +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/resources/memdump_linux.sh +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/resources/memdump_windows.ps1 +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/resources/output.json +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/uploaders/__init__.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/uploaders/compress_wastickers.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/uploaders/upload_base.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/uploaders/upload_signal.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/uploaders/upload_telegram.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/uploaders/upload_viber.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/uploaders/xcode_imessage.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/auth/get_discord_auth.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/auth/get_line_auth.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/auth/get_signal_auth.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/auth/get_viber_auth.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/auth/telethon_setup.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/callback.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/chrome_remotedebug.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/chromiums/linux.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/chromiums/osx.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/chromiums/windows.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/emoji.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/files/cache_store.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/files/json_manager.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/files/json_resources_loader.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/files/metadata_handler.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/files/run_bin.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/files/sanitize_filename.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/media/apple_png_normalize.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/media/codec_info.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/media/decrypt_kakao.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/media/format_verify.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/process.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/singletons.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert/utils/url_detect.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert.egg-info/dependency_links.txt +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert.egg-info/entry_points.txt +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/src/sticker_convert.egg-info/top_level.txt +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/tests/test_compression.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.0}/tests/test_download.py +0 -0
- {sticker_convert-2.13.2.2 → sticker_convert-2.14.0.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.
|
3
|
+
Version: 2.14.0.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>
|
@@ -364,27 +364,28 @@ Requires-Python: >=3.9
|
|
364
364
|
Description-Content-Type: text/markdown
|
365
365
|
License-File: LICENSE
|
366
366
|
Requires-Dist: aiolimiter~=1.2.1
|
367
|
-
Requires-Dist: anyio~=4.
|
367
|
+
Requires-Dist: anyio~=4.10.0
|
368
368
|
Requires-Dist: apngasm_python~=1.3.2
|
369
|
-
Requires-Dist: av
|
370
|
-
Requires-Dist: beautifulsoup4~=4.13.
|
371
|
-
Requires-Dist: cryptg~=0.5.
|
369
|
+
Requires-Dist: av<15,>=13.1.0
|
370
|
+
Requires-Dist: beautifulsoup4~=4.13.5
|
371
|
+
Requires-Dist: cryptg~=0.5.1
|
372
|
+
Requires-Dist: cryptography~=46.0.1
|
372
373
|
Requires-Dist: rookiepy~=0.5.6
|
373
374
|
Requires-Dist: httpx~=0.28.1
|
374
375
|
Requires-Dist: imagequant~=1.1.4
|
375
376
|
Requires-Dist: memory-tempfile~=2.2.3
|
376
377
|
Requires-Dist: mergedeep~=1.3.4
|
377
378
|
Requires-Dist: numpy>=1.22.4
|
378
|
-
Requires-Dist: Pillow~=11.
|
379
|
-
Requires-Dist: pyoxipng~=9.1.
|
380
|
-
Requires-Dist: python-telegram-bot~=22.
|
379
|
+
Requires-Dist: Pillow~=11.3.0
|
380
|
+
Requires-Dist: pyoxipng~=9.1.1
|
381
|
+
Requires-Dist: python-telegram-bot~=22.4
|
381
382
|
Requires-Dist: psutil~=7.0.0
|
382
|
-
Requires-Dist: PyMemoryEditor~=1.5.
|
383
|
+
Requires-Dist: PyMemoryEditor~=1.5.24
|
383
384
|
Requires-Dist: requests~=2.32.4
|
384
|
-
Requires-Dist: rlottie_python~=1.3.
|
385
|
+
Requires-Dist: rlottie_python~=1.3.8
|
385
386
|
Requires-Dist: signalstickers-client-fork-laggykiller~=3.3.0.post2
|
386
387
|
Requires-Dist: socksio~=1.0.0
|
387
|
-
Requires-Dist: telethon~=1.
|
388
|
+
Requires-Dist: telethon~=1.41.2
|
388
389
|
Requires-Dist: tqdm~=4.67.1
|
389
390
|
Requires-Dist: ttkbootstrap-fork-laggykiller~=1.5.1
|
390
391
|
Requires-Dist: websocket_client~=1.8.0
|
@@ -504,20 +505,22 @@ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--cus
|
|
504
505
|
[--no-compress]
|
505
506
|
[--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,band,ogq,viber,discord,discord_emoji,imessage_small,imessage_medium,imessage_large,custom}]
|
506
507
|
[--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--fps-power FPS_POWER]
|
507
|
-
[--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX]
|
508
|
-
[--res-h-
|
509
|
-
[--
|
510
|
-
[--
|
511
|
-
[--
|
512
|
-
[--
|
513
|
-
[--
|
514
|
-
[--
|
515
|
-
[--
|
516
|
-
[--
|
508
|
+
[--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX]
|
509
|
+
[--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER] [--res-snap-pow2]
|
510
|
+
[--no-res-snap-pow2] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
|
511
|
+
[--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER] [--duration-min DURATION_MIN]
|
512
|
+
[--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT] [--bg-color BG_COLOR]
|
513
|
+
[--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT]
|
514
|
+
[--img-format IMG_FORMAT] [--fake-vid] [--no-fake-vid] [--scale-filter SCALE_FILTER]
|
515
|
+
[--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--chromium-path CHROMIUM_PATH]
|
516
|
+
[--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD]
|
517
|
+
[--signal-get-auth] [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID] [--telethon-setup]
|
518
|
+
[--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth-android-login] [--kakao-get-auth-desktop-memdump]
|
519
|
+
[--kakao-get-auth-desktop-login] [--kakao-bin-path KAKAO_BIN_PATH] [--kakao-username KAKAO_USERNAME]
|
517
520
|
[--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
|
518
|
-
[--kakao-phone-number KAKAO_PHONE_NUMBER] [--
|
519
|
-
[--
|
520
|
-
[--discord-token DISCORD_TOKEN] [--save-cred]
|
521
|
+
[--kakao-phone-number KAKAO_PHONE_NUMBER] [--kakao-device-uuid KAKAO_DEVICE_UUID] [--line-get-auth]
|
522
|
+
[--line-cookies LINE_COOKIES] [--viber-auth VIBER_AUTH] [--viber-get-auth VIBER_GET_AUTH]
|
523
|
+
[--viber-bin-path VIBER_BIN_PATH] [--discord-get-auth] [--discord-token DISCORD_TOKEN] [--save-cred]
|
521
524
|
|
522
525
|
CLI for stickers-convert
|
523
526
|
|
@@ -619,6 +622,9 @@ Compression options:
|
|
619
622
|
Between -1 and positive infinity.
|
620
623
|
Power lower = More importance of the parameter,
|
621
624
|
try harder to keep higher and not sacrifice.
|
625
|
+
--res-snap-pow2 Snap resolution to nearest power of 2 (1,2,4,8,16,...).
|
626
|
+
Ignored if no power of 2 present between minimum and maximum resolutions
|
627
|
+
--no-res-snap-pow2 Disable res_snap_pow2
|
622
628
|
--quality-min QUALITY_MIN
|
623
629
|
Set minimum quality.
|
624
630
|
--quality-max QUALITY_MAX
|
@@ -653,6 +659,7 @@ Compression options:
|
|
653
659
|
Useful if:
|
654
660
|
(1) Size limit for video is larger than image;
|
655
661
|
(2) Mix image and video into same pack.
|
662
|
+
--no-fake-vid Disable fake_vid
|
656
663
|
--scale-filter SCALE_FILTER
|
657
664
|
Set scale filter. Default as bicubic. Valid options are:
|
658
665
|
- nearest = Use nearest neighbour (Suitable for pixel art)
|
@@ -663,9 +670,12 @@ Compression options:
|
|
663
670
|
- lanczos = A high-quality downsampling filter
|
664
671
|
--quantize-method QUANTIZE_METHOD
|
665
672
|
Set method for quantizing image. Default as imagequant. Valid options are:
|
666
|
-
- imagequant =
|
667
|
-
- fastoctree =
|
673
|
+
- imagequant = Speed+ Compression+ Quality++++ RGBA Supported
|
674
|
+
- fastoctree = Speed++, Compression++++ Quality+ RGBA Supported
|
675
|
+
- maxcoverage = Speed+++, Compression+++ Quality++ RGBA unsupported
|
676
|
+
- mediancut = Speed++++ Compression++ Quality+++ RGBA unsupported
|
668
677
|
- none = No image quantizing, large image size as result
|
678
|
+
Lower quality would make image chunky
|
669
679
|
--cache-dir CACHE_DIR
|
670
680
|
Set custom cache directory.
|
671
681
|
Useful for debugging, or speed up conversion if cache_dir is on RAM disk.
|
@@ -689,29 +699,35 @@ Credentials options:
|
|
689
699
|
--telethon-setup Setup Telethon
|
690
700
|
--kakao-auth-token KAKAO_AUTH_TOKEN
|
691
701
|
Set Kakao auth_token. Required for downloading animated stickers from https://e.kakao.com/t/xxxxx
|
692
|
-
--kakao-get-auth
|
693
|
-
|
694
|
-
|
702
|
+
--kakao-get-auth-android-login
|
703
|
+
Get Kakao auth_token by simulating login from Android. Kakao username, password, country code and phone number required.
|
704
|
+
--kakao-get-auth-desktop-memdump
|
705
|
+
Get Kakao auth_token from installed Kakao Desktop application with memdump.
|
706
|
+
--kakao-get-auth-desktop-login
|
707
|
+
Get Kakao auth_token by simulating login from Desktop application. Kakao username and password required.
|
695
708
|
--kakao-bin-path KAKAO_BIN_PATH
|
696
709
|
Set Kakao Desktop application path for launching and getting auth_token.
|
697
710
|
Useful for portable installation.
|
698
711
|
--kakao-username KAKAO_USERNAME
|
699
712
|
Set Kakao username, which is email or phone number used for signing up Kakao account
|
700
713
|
Example: +447700900142
|
701
|
-
Required for
|
714
|
+
Required for getting Kakao auth_token by simulating android/desktop login.
|
702
715
|
--kakao-password KAKAO_PASSWORD
|
703
716
|
Set Kakao password (Password of Kakao account).
|
704
|
-
Required for
|
717
|
+
Required for getting Kakao auth_token by simulating android/desktop login.
|
705
718
|
--kakao-country-code KAKAO_COUNTRY_CODE
|
706
719
|
Set Kakao country code of phone.
|
707
720
|
Example: 82 (For korea), 44 (For UK), 1 (For USA).
|
708
|
-
Required for
|
721
|
+
Required for getting Kakao auth_token by simulating android login.
|
709
722
|
--kakao-phone-number KAKAO_PHONE_NUMBER
|
710
723
|
Set Kakao phone number (Phone number associated with your Kakao account)
|
711
724
|
Do NOT enter country code
|
712
725
|
Example: 7700900142
|
713
726
|
Used for send / receive verification code via SMS.
|
714
|
-
Required for
|
727
|
+
Required for getting Kakao auth_token by simulating android login.
|
728
|
+
--kakao-device-uuid KAKAO_DEVICE_UUID
|
729
|
+
Set Kakao device uuid for desktop login. Defaults to real device uuid.
|
730
|
+
Optional for getting Kakao auth_token by simulating desktop login
|
715
731
|
--line-get-auth Get Line cookies from browser, which is required to create custom message stickers.
|
716
732
|
--line-cookies LINE_COOKIES
|
717
733
|
Set Line cookies, which is required to create custom message stickers.
|
@@ -112,20 +112,22 @@ usage: sticker-convert.py [-h] [--version] [--no-confirm] [--no-progress] [--cus
|
|
112
112
|
[--no-compress]
|
113
113
|
[--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,band,ogq,viber,discord,discord_emoji,imessage_small,imessage_medium,imessage_large,custom}]
|
114
114
|
[--steps STEPS] [--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--fps-power FPS_POWER]
|
115
|
-
[--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX]
|
116
|
-
[--res-h-
|
117
|
-
[--
|
118
|
-
[--
|
119
|
-
[--
|
120
|
-
[--
|
121
|
-
[--
|
122
|
-
[--
|
123
|
-
[--
|
124
|
-
[--
|
115
|
+
[--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX]
|
116
|
+
[--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER] [--res-snap-pow2]
|
117
|
+
[--no-res-snap-pow2] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
|
118
|
+
[--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER] [--duration-min DURATION_MIN]
|
119
|
+
[--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT] [--bg-color BG_COLOR]
|
120
|
+
[--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT]
|
121
|
+
[--img-format IMG_FORMAT] [--fake-vid] [--no-fake-vid] [--scale-filter SCALE_FILTER]
|
122
|
+
[--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--chromium-path CHROMIUM_PATH]
|
123
|
+
[--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD]
|
124
|
+
[--signal-get-auth] [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID] [--telethon-setup]
|
125
|
+
[--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth-android-login] [--kakao-get-auth-desktop-memdump]
|
126
|
+
[--kakao-get-auth-desktop-login] [--kakao-bin-path KAKAO_BIN_PATH] [--kakao-username KAKAO_USERNAME]
|
125
127
|
[--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
|
126
|
-
[--kakao-phone-number KAKAO_PHONE_NUMBER] [--
|
127
|
-
[--
|
128
|
-
[--discord-token DISCORD_TOKEN] [--save-cred]
|
128
|
+
[--kakao-phone-number KAKAO_PHONE_NUMBER] [--kakao-device-uuid KAKAO_DEVICE_UUID] [--line-get-auth]
|
129
|
+
[--line-cookies LINE_COOKIES] [--viber-auth VIBER_AUTH] [--viber-get-auth VIBER_GET_AUTH]
|
130
|
+
[--viber-bin-path VIBER_BIN_PATH] [--discord-get-auth] [--discord-token DISCORD_TOKEN] [--save-cred]
|
129
131
|
|
130
132
|
CLI for stickers-convert
|
131
133
|
|
@@ -227,6 +229,9 @@ Compression options:
|
|
227
229
|
Between -1 and positive infinity.
|
228
230
|
Power lower = More importance of the parameter,
|
229
231
|
try harder to keep higher and not sacrifice.
|
232
|
+
--res-snap-pow2 Snap resolution to nearest power of 2 (1,2,4,8,16,...).
|
233
|
+
Ignored if no power of 2 present between minimum and maximum resolutions
|
234
|
+
--no-res-snap-pow2 Disable res_snap_pow2
|
230
235
|
--quality-min QUALITY_MIN
|
231
236
|
Set minimum quality.
|
232
237
|
--quality-max QUALITY_MAX
|
@@ -261,6 +266,7 @@ Compression options:
|
|
261
266
|
Useful if:
|
262
267
|
(1) Size limit for video is larger than image;
|
263
268
|
(2) Mix image and video into same pack.
|
269
|
+
--no-fake-vid Disable fake_vid
|
264
270
|
--scale-filter SCALE_FILTER
|
265
271
|
Set scale filter. Default as bicubic. Valid options are:
|
266
272
|
- nearest = Use nearest neighbour (Suitable for pixel art)
|
@@ -271,9 +277,12 @@ Compression options:
|
|
271
277
|
- lanczos = A high-quality downsampling filter
|
272
278
|
--quantize-method QUANTIZE_METHOD
|
273
279
|
Set method for quantizing image. Default as imagequant. Valid options are:
|
274
|
-
- imagequant =
|
275
|
-
- fastoctree =
|
280
|
+
- imagequant = Speed+ Compression+ Quality++++ RGBA Supported
|
281
|
+
- fastoctree = Speed++, Compression++++ Quality+ RGBA Supported
|
282
|
+
- maxcoverage = Speed+++, Compression+++ Quality++ RGBA unsupported
|
283
|
+
- mediancut = Speed++++ Compression++ Quality+++ RGBA unsupported
|
276
284
|
- none = No image quantizing, large image size as result
|
285
|
+
Lower quality would make image chunky
|
277
286
|
--cache-dir CACHE_DIR
|
278
287
|
Set custom cache directory.
|
279
288
|
Useful for debugging, or speed up conversion if cache_dir is on RAM disk.
|
@@ -297,29 +306,35 @@ Credentials options:
|
|
297
306
|
--telethon-setup Setup Telethon
|
298
307
|
--kakao-auth-token KAKAO_AUTH_TOKEN
|
299
308
|
Set Kakao auth_token. Required for downloading animated stickers from https://e.kakao.com/t/xxxxx
|
300
|
-
--kakao-get-auth
|
301
|
-
|
302
|
-
|
309
|
+
--kakao-get-auth-android-login
|
310
|
+
Get Kakao auth_token by simulating login from Android. Kakao username, password, country code and phone number required.
|
311
|
+
--kakao-get-auth-desktop-memdump
|
312
|
+
Get Kakao auth_token from installed Kakao Desktop application with memdump.
|
313
|
+
--kakao-get-auth-desktop-login
|
314
|
+
Get Kakao auth_token by simulating login from Desktop application. Kakao username and password required.
|
303
315
|
--kakao-bin-path KAKAO_BIN_PATH
|
304
316
|
Set Kakao Desktop application path for launching and getting auth_token.
|
305
317
|
Useful for portable installation.
|
306
318
|
--kakao-username KAKAO_USERNAME
|
307
319
|
Set Kakao username, which is email or phone number used for signing up Kakao account
|
308
320
|
Example: +447700900142
|
309
|
-
Required for
|
321
|
+
Required for getting Kakao auth_token by simulating android/desktop login.
|
310
322
|
--kakao-password KAKAO_PASSWORD
|
311
323
|
Set Kakao password (Password of Kakao account).
|
312
|
-
Required for
|
324
|
+
Required for getting Kakao auth_token by simulating android/desktop login.
|
313
325
|
--kakao-country-code KAKAO_COUNTRY_CODE
|
314
326
|
Set Kakao country code of phone.
|
315
327
|
Example: 82 (For korea), 44 (For UK), 1 (For USA).
|
316
|
-
Required for
|
328
|
+
Required for getting Kakao auth_token by simulating android login.
|
317
329
|
--kakao-phone-number KAKAO_PHONE_NUMBER
|
318
330
|
Set Kakao phone number (Phone number associated with your Kakao account)
|
319
331
|
Do NOT enter country code
|
320
332
|
Example: 7700900142
|
321
333
|
Used for send / receive verification code via SMS.
|
322
|
-
Required for
|
334
|
+
Required for getting Kakao auth_token by simulating android login.
|
335
|
+
--kakao-device-uuid KAKAO_DEVICE_UUID
|
336
|
+
Set Kakao device uuid for desktop login. Defaults to real device uuid.
|
337
|
+
Optional for getting Kakao auth_token by simulating desktop login
|
323
338
|
--line-get-auth Get Line cookies from browser, which is required to create custom message stickers.
|
324
339
|
--line-cookies LINE_COOKIES
|
325
340
|
Set Line cookies, which is required to create custom message stickers.
|
@@ -1,25 +1,26 @@
|
|
1
1
|
aiolimiter~=1.2.1
|
2
|
-
anyio~=4.
|
2
|
+
anyio~=4.10.0
|
3
3
|
apngasm_python~=1.3.2
|
4
|
-
av>=13.1.0
|
5
|
-
beautifulsoup4~=4.13.
|
6
|
-
cryptg~=0.5.
|
4
|
+
av>=13.1.0,<15
|
5
|
+
beautifulsoup4~=4.13.5
|
6
|
+
cryptg~=0.5.1
|
7
|
+
cryptography~=46.0.1
|
7
8
|
rookiepy~=0.5.6
|
8
9
|
httpx~=0.28.1
|
9
10
|
imagequant~=1.1.4
|
10
11
|
memory-tempfile~=2.2.3
|
11
12
|
mergedeep~=1.3.4
|
12
13
|
numpy>=1.22.4
|
13
|
-
Pillow~=11.
|
14
|
-
pyoxipng~=9.1.
|
15
|
-
python-telegram-bot~=22.
|
14
|
+
Pillow~=11.3.0
|
15
|
+
pyoxipng~=9.1.1
|
16
|
+
python-telegram-bot~=22.4
|
16
17
|
psutil~=7.0.0
|
17
|
-
PyMemoryEditor~=1.5.
|
18
|
+
PyMemoryEditor~=1.5.24
|
18
19
|
requests~=2.32.4
|
19
|
-
rlottie_python~=1.3.
|
20
|
+
rlottie_python~=1.3.8
|
20
21
|
signalstickers-client-fork-laggykiller~=3.3.0.post2
|
21
22
|
socksio~=1.0.0
|
22
|
-
telethon~=1.
|
23
|
+
telethon~=1.41.2
|
23
24
|
tqdm~=4.67.1
|
24
25
|
ttkbootstrap-fork-laggykiller~=1.5.1
|
25
26
|
websocket_client~=1.8.0
|
@@ -15,8 +15,9 @@ from sticker_convert.definitions import CONFIG_DIR, DEFAULT_DIR
|
|
15
15
|
from sticker_convert.job import Job
|
16
16
|
from sticker_convert.job_option import CompOption, CredOption, InputOption, OutputOption
|
17
17
|
from sticker_convert.utils.auth.get_discord_auth import GetDiscordAuth
|
18
|
-
from sticker_convert.utils.auth.
|
19
|
-
from sticker_convert.utils.auth.
|
18
|
+
from sticker_convert.utils.auth.get_kakao_auth_android_login import GetKakaoAuthAndroidLogin
|
19
|
+
from sticker_convert.utils.auth.get_kakao_auth_desktop_login import GetKakaoAuthDesktopLogin
|
20
|
+
from sticker_convert.utils.auth.get_kakao_auth_desktop_memdump import GetKakaoAuthDesktopMemdump
|
20
21
|
from sticker_convert.utils.auth.get_line_auth import GetLineAuth
|
21
22
|
from sticker_convert.utils.auth.get_signal_auth import GetSignalAuth
|
22
23
|
from sticker_convert.utils.auth.get_viber_auth import GetViberAuth
|
@@ -141,7 +142,12 @@ class CLI:
|
|
141
142
|
"quantize_method",
|
142
143
|
"chromium_path",
|
143
144
|
)
|
144
|
-
flags_comp_bool = (
|
145
|
+
flags_comp_bool = (
|
146
|
+
"fake_vid",
|
147
|
+
"no_fake_vid",
|
148
|
+
"res_snap_pow2",
|
149
|
+
"no_res_snap_pow2",
|
150
|
+
)
|
145
151
|
keyword_args: Dict[str, Any]
|
146
152
|
for k, v in self.help["comp"].items():
|
147
153
|
if k in flags_comp_int:
|
@@ -171,8 +177,9 @@ class CLI:
|
|
171
177
|
flags_cred_bool = (
|
172
178
|
"signal_get_auth",
|
173
179
|
"telethon_setup",
|
174
|
-
"
|
175
|
-
"
|
180
|
+
"kakao_get_auth_desktop_memdump",
|
181
|
+
"kakao_get_auth_desktop_login",
|
182
|
+
"kakao_get_auth_android_login",
|
176
183
|
"line_get_auth",
|
177
184
|
"discord_get_auth",
|
178
185
|
"save_cred",
|
@@ -394,6 +401,9 @@ class CLI:
|
|
394
401
|
res_power=self.compression_presets[preset]["res"]["power"]
|
395
402
|
if args.res_power is None
|
396
403
|
else args.res_power,
|
404
|
+
res_snap_pow2=self.compression_presets[preset]["res"]["snap_pow2"]
|
405
|
+
if args.res_snap_pow2 is None and args.no_res_snap_pow2 is None
|
406
|
+
else args.res_snap_pow2,
|
397
407
|
quality_min=self.compression_presets[preset]["quality"]["min"]
|
398
408
|
if args.quality_min is None
|
399
409
|
else args.quality_min,
|
@@ -428,7 +438,7 @@ class CLI:
|
|
428
438
|
if args.steps is None
|
429
439
|
else args.steps,
|
430
440
|
fake_vid=self.compression_presets[preset]["fake_vid"]
|
431
|
-
if args.fake_vid is None
|
441
|
+
if args.fake_vid is None and args.no_fake_vid is None
|
432
442
|
else args.fake_vid,
|
433
443
|
chromium_path=args.chromium_path,
|
434
444
|
cache_dir=args.cache_dir,
|
@@ -503,28 +513,42 @@ class CLI:
|
|
503
513
|
else creds.get("discord", {}).get("token"),
|
504
514
|
)
|
505
515
|
|
506
|
-
if args.
|
507
|
-
|
516
|
+
if args.kakao_get_auth_android_login:
|
517
|
+
get_kakao_auth_android_login = GetKakaoAuthAndroidLogin(
|
508
518
|
opt_cred=opt_cred,
|
509
519
|
cb_msg=self.cb.msg,
|
510
520
|
cb_msg_block=self.cb.msg_block,
|
511
521
|
cb_ask_str=self.cb.ask_str,
|
512
522
|
)
|
513
|
-
auth_token =
|
523
|
+
auth_token = get_kakao_auth_android_login.get_cred()
|
514
524
|
|
515
525
|
if auth_token:
|
516
526
|
opt_cred.kakao_auth_token = auth_token
|
517
527
|
|
518
528
|
self.cb.msg(f"Got auth_token successfully: {auth_token}")
|
519
529
|
|
520
|
-
if args.
|
521
|
-
|
530
|
+
if args.kakao_get_auth_desktop_memdump:
|
531
|
+
get_kakao_auth_desktop_memdump = GetKakaoAuthDesktopMemdump(
|
522
532
|
cb_ask_str=self.cb.ask_str,
|
523
533
|
)
|
524
534
|
kakao_bin_path = None
|
525
535
|
if args.kakao_bin_path:
|
526
536
|
kakao_bin_path = args.kakao_bin_path
|
527
|
-
auth_token, msg =
|
537
|
+
auth_token, msg = get_kakao_auth_desktop_memdump.get_cred(kakao_bin_path)
|
538
|
+
|
539
|
+
if auth_token:
|
540
|
+
opt_cred.kakao_auth_token = auth_token
|
541
|
+
|
542
|
+
self.cb.msg(msg)
|
543
|
+
|
544
|
+
if args.kakao_get_auth_desktop_login:
|
545
|
+
get_kakao_auth_desktop_login = GetKakaoAuthDesktopLogin(
|
546
|
+
opt_cred=opt_cred,
|
547
|
+
cb_msg=self.cb.msg,
|
548
|
+
cb_msg_block=self.cb.msg_block,
|
549
|
+
cb_ask_str=self.cb.ask_str,
|
550
|
+
)
|
551
|
+
auth_token, msg = get_kakao_auth_desktop_login.get_cred()
|
528
552
|
|
529
553
|
if auth_token:
|
530
554
|
opt_cred.kakao_auth_token = auth_token
|
@@ -3,7 +3,7 @@ import json
|
|
3
3
|
import os
|
4
4
|
from fractions import Fraction
|
5
5
|
from io import BytesIO
|
6
|
-
from math import ceil, floor
|
6
|
+
from math import ceil, floor, log2
|
7
7
|
from pathlib import Path
|
8
8
|
from typing import TYPE_CHECKING, Any, Dict, List, Literal, Optional, Tuple, Union, cast
|
9
9
|
|
@@ -57,6 +57,7 @@ def get_step_value(
|
|
57
57
|
steps: int,
|
58
58
|
power: float = 1.0,
|
59
59
|
even: bool = False,
|
60
|
+
snap_pow2: bool = False,
|
60
61
|
) -> Optional[int]:
|
61
62
|
# Power should be between -1 and positive infinity
|
62
63
|
# Smaller power = More 'importance' of the parameter
|
@@ -70,6 +71,15 @@ def get_step_value(
|
|
70
71
|
|
71
72
|
if max_step is not None and min_step is not None:
|
72
73
|
v = round((max_step - min_step) * step / steps * factor + min_step)
|
74
|
+
if snap_pow2 is True and floor(log2(max_step)) >= ceil(log2(min_step)):
|
75
|
+
lower_exp = max(floor(log2(v)), ceil(log2(min_step)))
|
76
|
+
lower_pow2 = 2**lower_exp
|
77
|
+
upper_exp = min(ceil(log2(v)), floor(log2(max_step)))
|
78
|
+
upper_pow2 = 2**upper_exp
|
79
|
+
if abs(v - lower_pow2) <= abs(v - upper_pow2):
|
80
|
+
return lower_pow2
|
81
|
+
else:
|
82
|
+
return upper_pow2
|
73
83
|
if even is True and v % 2 == 1:
|
74
84
|
return v + 1
|
75
85
|
return v
|
@@ -101,10 +111,10 @@ def yuva_to_rgba(frame: "VideoFrame") -> "np.ndarray[Any, Any]":
|
|
101
111
|
u = u.repeat(2, axis=0).repeat(2, axis=1)
|
102
112
|
v = v.repeat(2, axis=0).repeat(2, axis=1)
|
103
113
|
|
104
|
-
y = y.reshape((y.shape[0], y.shape[1], 1))
|
105
|
-
u = u.reshape((u.shape[0], u.shape[1], 1))
|
106
|
-
v = v.reshape((v.shape[0], v.shape[1], 1))
|
107
|
-
a = a.reshape((a.shape[0], a.shape[1], 1))
|
114
|
+
y = y.reshape((y.shape[0], y.shape[1], 1)) # type: ignore
|
115
|
+
u = u.reshape((u.shape[0], u.shape[1], 1)) # type: ignore
|
116
|
+
v = v.reshape((v.shape[0], v.shape[1], 1)) # type: ignore
|
117
|
+
a = a.reshape((a.shape[0], a.shape[1], 1)) # type: ignore
|
108
118
|
|
109
119
|
yuv_array = np.concatenate((y, u, v), axis=2)
|
110
120
|
|
@@ -342,6 +352,7 @@ class StickerConvert:
|
|
342
352
|
self.opt_comp.steps,
|
343
353
|
self.opt_comp.res_power,
|
344
354
|
need_even,
|
355
|
+
self.opt_comp.res_snap_pow2,
|
345
356
|
),
|
346
357
|
get_step_value(
|
347
358
|
self.opt_comp.res_h_max,
|
@@ -350,6 +361,7 @@ class StickerConvert:
|
|
350
361
|
self.opt_comp.steps,
|
351
362
|
self.opt_comp.res_power,
|
352
363
|
need_even,
|
364
|
+
self.opt_comp.res_snap_pow2,
|
353
365
|
),
|
354
366
|
get_step_value(
|
355
367
|
self.opt_comp.quality_max,
|
@@ -932,13 +944,19 @@ class StickerConvert:
|
|
932
944
|
self.tmp_f.write(frame_optimized)
|
933
945
|
|
934
946
|
def _frames_export_apng(self) -> None:
|
935
|
-
from apngasm_python._apngasm_python import APNGAsm, create_frame_from_rgba # type: ignore
|
947
|
+
from apngasm_python._apngasm_python import APNGAsm, create_frame_from_rgb, create_frame_from_rgba # type: ignore
|
936
948
|
|
937
949
|
assert self.fps
|
938
950
|
assert self.res_h
|
939
951
|
|
940
952
|
frames_concat = np.concatenate(self.frames_processed)
|
941
953
|
with Image.fromarray(frames_concat, "RGBA") as image_concat: # type: ignore
|
954
|
+
if image_concat.getextrema()[3][0] < 255: # type: ignore
|
955
|
+
mode = "RGBA"
|
956
|
+
create_frame_method = create_frame_from_rgba
|
957
|
+
else:
|
958
|
+
mode = "RGB"
|
959
|
+
create_frame_method = create_frame_from_rgb
|
942
960
|
image_quant = self.quantize(image_concat)
|
943
961
|
|
944
962
|
if self.apngasm is None:
|
@@ -947,15 +965,10 @@ class StickerConvert:
|
|
947
965
|
|
948
966
|
delay_num = int(1000 / self.fps)
|
949
967
|
for i in range(0, image_quant.height, self.res_h):
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
f.seek(0)
|
955
|
-
frame_optimized = self.optimize_png(f.read())
|
956
|
-
with Image.open(BytesIO(frame_optimized)) as im:
|
957
|
-
image_final = im.convert("RGBA")
|
958
|
-
frame_final = create_frame_from_rgba(
|
968
|
+
crop_dimension = (0, i, image_quant.width, i + self.res_h)
|
969
|
+
image_cropped = image_quant.crop(crop_dimension)
|
970
|
+
image_final = image_cropped.convert(mode)
|
971
|
+
frame_final = create_frame_method(
|
959
972
|
np.array(image_final),
|
960
973
|
width=image_final.width,
|
961
974
|
height=image_final.height,
|
@@ -969,7 +982,8 @@ class StickerConvert:
|
|
969
982
|
self.apngasm.assemble(tmp_apng.as_posix())
|
970
983
|
|
971
984
|
with open(tmp_apng, "rb") as f:
|
972
|
-
self.
|
985
|
+
apng_optimized = self.optimize_png(f.read())
|
986
|
+
self.tmp_f.write(apng_optimized)
|
973
987
|
|
974
988
|
self.apngasm.reset()
|
975
989
|
|
@@ -978,7 +992,7 @@ class StickerConvert:
|
|
978
992
|
|
979
993
|
return oxipng.optimize_from_memory(
|
980
994
|
image_bytes,
|
981
|
-
level=
|
995
|
+
level=6,
|
982
996
|
fix_errors=True,
|
983
997
|
filter=[oxipng.RowFilter.Brute],
|
984
998
|
optimize_alpha=True,
|
@@ -990,8 +1004,8 @@ class StickerConvert:
|
|
990
1004
|
return image.copy()
|
991
1005
|
if self.opt_comp.quantize_method == "imagequant":
|
992
1006
|
return self._quantize_by_imagequant(image)
|
993
|
-
if self.opt_comp.quantize_method
|
994
|
-
return self.
|
1007
|
+
if self.opt_comp.quantize_method in ("mediancut", "maxcoverage", "fastoctree"):
|
1008
|
+
return self._quantize_by_pillow(image)
|
995
1009
|
|
996
1010
|
return image
|
997
1011
|
|
@@ -1022,10 +1036,24 @@ class StickerConvert:
|
|
1022
1036
|
|
1023
1037
|
return image
|
1024
1038
|
|
1025
|
-
def
|
1039
|
+
def _quantize_by_pillow(self, image: Image.Image) -> Image.Image:
|
1026
1040
|
assert self.color
|
1027
1041
|
|
1028
|
-
|
1042
|
+
if image.mode == "RGBA" and self.opt_comp.quantize_method in (
|
1043
|
+
"mediancut",
|
1044
|
+
"maxcoverage",
|
1045
|
+
):
|
1046
|
+
self.cb.put(
|
1047
|
+
f"[W] {self.opt_comp.quantize_method} does not support RGBA, defaulted to fastoctree quantization"
|
1048
|
+
)
|
1049
|
+
method = Image.Quantize.FASTOCTREE
|
1050
|
+
elif self.opt_comp.quantize_method == "mediancut":
|
1051
|
+
method = Image.Quantize.MEDIANCUT
|
1052
|
+
elif self.opt_comp.quantize_method == "maxcoverage":
|
1053
|
+
method = Image.Quantize.MAXCOVERAGE
|
1054
|
+
else:
|
1055
|
+
method = Image.Quantize.FASTOCTREE
|
1056
|
+
return image.quantize(colors=self.color, method=method)
|
1029
1057
|
|
1030
1058
|
def fix_fps(self, fps: float) -> Fraction:
|
1031
1059
|
# After rounding fps/duration during export,
|
@@ -116,6 +116,7 @@ class GUI(Window):
|
|
116
116
|
self.res_h_max_var = IntVar(self)
|
117
117
|
self.res_h_disable_var = BooleanVar()
|
118
118
|
self.res_power_var = DoubleVar()
|
119
|
+
self.res_snap_pow2_var = BooleanVar()
|
119
120
|
self.quality_min_var = IntVar(self)
|
120
121
|
self.quality_max_var = IntVar(self)
|
121
122
|
self.quality_disable_var = BooleanVar()
|
@@ -162,6 +163,7 @@ class GUI(Window):
|
|
162
163
|
self.kakao_password_var = StringVar(self)
|
163
164
|
self.kakao_country_code_var = StringVar(self)
|
164
165
|
self.kakao_phone_number_var = StringVar(self)
|
166
|
+
self.kakao_device_uuid_var = StringVar(self)
|
165
167
|
self.kakao_bin_path_var = StringVar(self)
|
166
168
|
self.line_cookies_var = StringVar(self)
|
167
169
|
self.viber_auth_var = StringVar(self)
|
@@ -426,6 +428,9 @@ class GUI(Window):
|
|
426
428
|
self.kakao_phone_number_var.set(
|
427
429
|
self.creds.get("kakao", {}).get("phone_number", "")
|
428
430
|
)
|
431
|
+
self.kakao_device_uuid_var.set(
|
432
|
+
self.creds.get("kakao", {}).get("device_uuid", "")
|
433
|
+
)
|
429
434
|
self.line_cookies_var.set(self.creds.get("line", {}).get("cookies", ""))
|
430
435
|
self.viber_auth_var.set(self.creds.get("viber", {}).get("auth", ""))
|
431
436
|
self.discord_token_var.set(self.creds.get("discord", {}).get("token", ""))
|
@@ -547,6 +552,7 @@ class GUI(Window):
|
|
547
552
|
if not self.res_h_disable_var.get()
|
548
553
|
else None,
|
549
554
|
res_power=self.res_power_var.get(),
|
555
|
+
res_snap_pow2=self.res_snap_pow2_var.get(),
|
550
556
|
quality_min=self.quality_min_var.get()
|
551
557
|
if not self.quality_disable_var.get()
|
552
558
|
else None,
|
@@ -597,6 +603,7 @@ class GUI(Window):
|
|
597
603
|
kakao_password=self.kakao_password_var.get(),
|
598
604
|
kakao_country_code=self.kakao_country_code_var.get(),
|
599
605
|
kakao_phone_number=self.kakao_phone_number_var.get(),
|
606
|
+
kakao_device_uuid=self.kakao_device_uuid_var.get(),
|
600
607
|
line_cookies=self.line_cookies_var.get(),
|
601
608
|
viber_auth=self.viber_auth_var.get(),
|
602
609
|
discord_token=self.discord_token_var.get(),
|
@@ -119,6 +119,7 @@ class CompFrame(LabelFrame):
|
|
119
119
|
self.gui.res_h_min_var.set(preset.get("res", {}).get("h", {}).get("min"))
|
120
120
|
self.gui.res_h_max_var.set(preset.get("res", {}).get("h", {}).get("max"))
|
121
121
|
self.gui.res_power_var.set(preset.get("res", {}).get("power"))
|
122
|
+
self.gui.res_snap_pow2_var.set(preset.get("res", {}).get("snap_pow2"))
|
122
123
|
self.gui.quality_min_var.set(preset.get("quality", {}).get("min"))
|
123
124
|
self.gui.quality_max_var.set(preset.get("quality", {}).get("max"))
|
124
125
|
self.gui.quality_power_var.set(preset.get("quality", {}).get("power"))
|