sticker-convert 2.8.4__tar.gz → 2.8.6__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {sticker_convert-2.8.4/src/sticker_convert.egg-info → sticker_convert-2.8.6}/PKG-INFO +24 -26
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/README.md +21 -23
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/pyproject.toml +1 -1
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/requirements.txt +1 -1
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/cli.py +1 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/downloaders/download_base.py +47 -10
- sticker_convert-2.8.6/src/sticker_convert/downloaders/download_viber.py +95 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/job.py +4 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/resources/compression.json +47 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/resources/input.json +10 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/url_detect.py +3 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/version.py +1 -1
- {sticker_convert-2.8.4 → sticker_convert-2.8.6/src/sticker_convert.egg-info}/PKG-INFO +24 -26
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert.egg-info/SOURCES.txt +1 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert.egg-info/requires.txt +1 -1
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/tests/test_download.py +42 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/LICENSE +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/MANIFEST.in +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/setup.cfg +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/__init__.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/__main__.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/converter.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/definitions.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/downloaders/__init__.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/downloaders/download_kakao.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/downloaders/download_line.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/downloaders/download_signal.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/downloaders/download_telegram.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/__init__.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/frames/__init__.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/frames/comp_frame.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/frames/config_frame.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/frames/control_frame.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/frames/cred_frame.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/frames/input_frame.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/frames/output_frame.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/frames/progress_frame.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/frames/right_clicker.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/gui_utils.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/windows/__init__.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/windows/advanced_compression_window.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/windows/base_window.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/windows/kakao_get_auth_window.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/windows/line_get_auth_window.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/windows/signal_get_auth_window.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/.github/FUNDING.yml +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/.gitignore +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/README.md +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers/Info.plist +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Info.plist +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Contents.json +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Contents.json +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Contents.json +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/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.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Contents.json +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/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.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Contents.json +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/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.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/App-Store-1024x1024pt.png +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Contents.json +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/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.8.4 → sticker_convert-2.8.6}/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.8.4 → sticker_convert-2.8.6}/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.8.4 → sticker_convert-2.8.6}/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.8.4 → sticker_convert-2.8.6}/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.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@2x.png +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@3x.png +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@2x.png +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@3x.png +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/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.8.4 → sticker_convert-2.8.6}/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.8.4 → sticker_convert-2.8.6}/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.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.pbxproj +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcuserdata/niklaspeterson.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/xcuserdata/niklaspeterson.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/job_option.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/resources/NotoColorEmoji.ttf +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/resources/appicon.icns +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/resources/appicon.ico +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/resources/appicon.png +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/resources/emoji.json +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/resources/help.json +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/resources/output.json +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/uploaders/__init__.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/uploaders/compress_wastickers.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/uploaders/upload_base.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/uploaders/upload_signal.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/uploaders/upload_telegram.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/uploaders/xcode_imessage.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/auth/get_kakao_auth.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/auth/get_line_auth.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/auth/get_signal_auth.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/callback.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/files/cache_store.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/files/json_manager.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/files/json_resources_loader.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/files/metadata_handler.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/files/run_bin.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/files/sanitize_filename.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/media/apple_png_normalize.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/media/codec_info.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/media/decrypt_kakao.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/media/format_verify.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert.egg-info/dependency_links.txt +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert.egg-info/entry_points.txt +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert.egg-info/top_level.txt +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/tests/test_compression.py +0 -0
- {sticker_convert-2.8.4 → sticker_convert-2.8.6}/tests/test_export.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: sticker-convert
|
3
|
-
Version: 2.8.
|
3
|
+
Version: 2.8.6
|
4
4
|
Summary: Convert (animated) stickers to/from WhatsApp, Telegram, Signal, Line, Kakao, iMessage. Written in Python.
|
5
5
|
Author-email: laggykiller <chaudominic2@gmail.com>
|
6
6
|
Maintainer-email: laggykiller <chaudominic2@gmail.com>
|
@@ -349,7 +349,7 @@ Project-URL: Source, https://github.com/laggykiller/sticker-convert
|
|
349
349
|
Project-URL: Documentation, https://github.com/laggykiller/sticker-convert
|
350
350
|
Project-URL: Tracker, https://github.com/laggykiller/sticker-convert/issues
|
351
351
|
Project-URL: Repository, https://github.com/laggykiller/sticker-convert
|
352
|
-
Keywords: telegram,line,tgs,whatsapp,kakao,signal,imessage,wastickers
|
352
|
+
Keywords: telegram,line,tgs,whatsapp,kakao,signal,imessage,wastickers,viber
|
353
353
|
Classifier: Development Status :: 5 - Production/Stable
|
354
354
|
Classifier: Intended Audience :: End Users/Desktop
|
355
355
|
Classifier: Topic :: Multimedia :: Graphics :: Graphics Conversion
|
@@ -369,7 +369,7 @@ Requires-Dist: anyio~=4.3.0
|
|
369
369
|
Requires-Dist: apngasm_python~=1.2.3
|
370
370
|
Requires-Dist: av~=12.0.0
|
371
371
|
Requires-Dist: beautifulsoup4~=4.12.3
|
372
|
-
Requires-Dist: rookiepy~=0.
|
372
|
+
Requires-Dist: rookiepy~=0.4.0
|
373
373
|
Requires-Dist: imagequant~=1.1.1
|
374
374
|
Requires-Dist: memory-tempfile~=2.2.3
|
375
375
|
Requires-Dist: mergedeep~=1.3.4
|
@@ -391,7 +391,7 @@ Requires-Dist: webp~=0.3.0
|
|
391
391
|
|
392
392
|
- A python script for creating, downloading, converting+compressing and uploading stickers from multiple instant messaging applications.
|
393
393
|
- With GUI and CLI that runs on Windows, MacOS and Linux
|
394
|
-
- Currently supports Signal, Telegram, WhatsApp (Create .wastickers), Line (Download only), Kakao (Download only), iMessage (Create Xcode sticker pack project)
|
394
|
+
- Currently supports Signal, Telegram, WhatsApp (Create .wastickers), Line (Download only), Kakao (Download only), Viber (Download only), iMessage (Create Xcode sticker pack project)
|
395
395
|
- Supports static and animated stickers, with transparency support
|
396
396
|
|
397
397
|
## Downloads
|
@@ -429,6 +429,7 @@ Requires-Dist: webp~=0.3.0
|
|
429
429
|
| [WhatsApp](docs/guide_whatsapp.md) | ⭕ (By Android or WhatsApp Web) | ⭕ (Create `.wastickers`, import by Sticker Maker) |
|
430
430
|
| [Line](docs/guide_line.md) | ✅ | 🚫 (Need to submit for manual approval) |
|
431
431
|
| [Kakao](docs/guide_kakao.md) | ✅ (Need 'share link' for animated) | 🚫 (Need to submit for manual approval) |
|
432
|
+
| [Viber](docs/guide_viber.md) | ✅ | 🚫 (Manually upload through Viber app) |
|
432
433
|
| [iMessage](docs/guide_imessage.md) | 🚫 | ⭕ (Create Xcode stickerpack project for sideload) |
|
433
434
|
|
434
435
|
✅ = Supported ⭕ = Partially supported 🚫 = Not supported
|
@@ -455,6 +456,9 @@ Requires-Dist: webp~=0.3.0
|
|
455
456
|
- Kakao
|
456
457
|
- Download: Supported (e.g. `https://e.kakao.com/t/xxxxx` OR `kakaotalk://store/emoticon/4404400` OR `https://emoticon.kakao.com/items/xxxxx` OR `4404400`). It is rather complicated, learn more from [docs/guide_kakao.md](docs/guide_kakao.md)
|
457
458
|
- Upload: Not supported. You need to manually submit sticker pack for approval before you can use in app.
|
459
|
+
- Viber
|
460
|
+
- Download: Supported (e.g. `https://stickers.viber.com/pages/example` OR `https://stickers.viber.com/pages/custom-sticker-packs/example`)
|
461
|
+
- Upload: The program can convert images to png with 490x490 for uploading to viber manually. It should be noted that Viber is able to resize images for you, so it may not be necessary to use sticker-convert for creating Viber sticker pack.
|
458
462
|
- iMessage
|
459
463
|
- Download: Not supported.
|
460
464
|
- Upload: The program can create Xcode project for iMessage sticker pack, which could then be compiled and sideloaded using Xcode.
|
@@ -476,27 +480,17 @@ To run in CLI mode, pass on any arguments
|
|
476
480
|
|
477
481
|
```
|
478
482
|
usage: sticker-convert.py [-h] [--version] [--no-confirm] [--custom-presets CUSTOM_PRESETS] [--input-dir INPUT_DIR]
|
479
|
-
[--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO]
|
480
|
-
[--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE]
|
481
|
-
[--
|
482
|
-
[--
|
483
|
-
[--
|
484
|
-
[--
|
485
|
-
[--
|
486
|
-
[--
|
487
|
-
[--
|
488
|
-
[--
|
489
|
-
[--
|
490
|
-
[--padding-percent PADDING_PERCENT] [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX]
|
491
|
-
[--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT] [--img-format IMG_FORMAT]
|
492
|
-
[--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD]
|
493
|
-
[--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID]
|
494
|
-
[--signal-password SIGNAL_PASSWORD] [--signal-get-auth] [--signal-data-dir SIGNAL_DATA_DIR]
|
495
|
-
[--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID]
|
496
|
-
[--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-username KAKAO_USERNAME]
|
497
|
-
[--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
|
498
|
-
[--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
|
499
|
-
[--save-cred SAVE_CRED]
|
483
|
+
[--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO | --download-viber DOWNLOAD_VIBER]
|
484
|
+
[--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE] [--export-signal | --export-telegram | --export-telegram-emoji | --export-whatsapp | --export-imessage]
|
485
|
+
[--no-compress] [--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,imessage_small,imessage_medium,imessage_large,custom}] [--steps STEPS]
|
486
|
+
[--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX]
|
487
|
+
[--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
|
488
|
+
[--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER] [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT]
|
489
|
+
[--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
|
490
|
+
[--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
|
491
|
+
[--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth]
|
492
|
+
[--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE] [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth]
|
493
|
+
[--line-cookies LINE_COOKIES] [--save-cred SAVE_CRED]
|
500
494
|
|
501
495
|
CLI for stickers-convert
|
502
496
|
|
@@ -530,6 +524,10 @@ Input options:
|
|
530
524
|
Download kakao stickers from a URL / ID as input
|
531
525
|
(Example: https://e.kakao.com/t/xxxxx OR kakaotalk://store/emoticon/4404400
|
532
526
|
OR https://emoticon.kakao.com/items/xxxxx OR 4404400)
|
527
|
+
--download-viber DOWNLOAD_VIBER
|
528
|
+
Download viber stickers from a URL as input
|
529
|
+
(Example: https://stickers.viber.com/pages/example
|
530
|
+
OR https://stickers.viber.com/pages/custom-sticker-packs/example)
|
533
531
|
|
534
532
|
Output options:
|
535
533
|
--output-dir OUTPUT_DIR
|
@@ -545,7 +543,7 @@ Output options:
|
|
545
543
|
|
546
544
|
Compression options:
|
547
545
|
--no-compress Do not compress files. Useful for only downloading stickers.
|
548
|
-
--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,imessage_small,imessage_medium,imessage_large,custom}
|
546
|
+
--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,imessage_small,imessage_medium,imessage_large,custom}
|
549
547
|
Apply preset for compression.
|
550
548
|
--steps STEPS Set number of divisions between min and max settings.
|
551
549
|
Steps higher = Slower but yields file more closer to the specified file size limit.
|
@@ -4,7 +4,7 @@
|
|
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), iMessage (Create Xcode sticker pack project)
|
7
|
+
- Currently supports Signal, Telegram, WhatsApp (Create .wastickers), Line (Download only), Kakao (Download only), Viber (Download only), iMessage (Create Xcode sticker pack project)
|
8
8
|
- Supports static and animated stickers, with transparency support
|
9
9
|
|
10
10
|
## Downloads
|
@@ -42,6 +42,7 @@
|
|
42
42
|
| [WhatsApp](docs/guide_whatsapp.md) | ⭕ (By Android or WhatsApp Web) | ⭕ (Create `.wastickers`, import by Sticker Maker) |
|
43
43
|
| [Line](docs/guide_line.md) | ✅ | 🚫 (Need to submit for manual approval) |
|
44
44
|
| [Kakao](docs/guide_kakao.md) | ✅ (Need 'share link' for animated) | 🚫 (Need to submit for manual approval) |
|
45
|
+
| [Viber](docs/guide_viber.md) | ✅ | 🚫 (Manually upload through Viber app) |
|
45
46
|
| [iMessage](docs/guide_imessage.md) | 🚫 | ⭕ (Create Xcode stickerpack project for sideload) |
|
46
47
|
|
47
48
|
✅ = Supported ⭕ = Partially supported 🚫 = Not supported
|
@@ -68,6 +69,9 @@
|
|
68
69
|
- Kakao
|
69
70
|
- Download: Supported (e.g. `https://e.kakao.com/t/xxxxx` OR `kakaotalk://store/emoticon/4404400` OR `https://emoticon.kakao.com/items/xxxxx` OR `4404400`). It is rather complicated, learn more from [docs/guide_kakao.md](docs/guide_kakao.md)
|
70
71
|
- Upload: Not supported. You need to manually submit sticker pack for approval before you can use in app.
|
72
|
+
- Viber
|
73
|
+
- Download: Supported (e.g. `https://stickers.viber.com/pages/example` OR `https://stickers.viber.com/pages/custom-sticker-packs/example`)
|
74
|
+
- Upload: The program can convert images to png with 490x490 for uploading to viber manually. It should be noted that Viber is able to resize images for you, so it may not be necessary to use sticker-convert for creating Viber sticker pack.
|
71
75
|
- iMessage
|
72
76
|
- Download: Not supported.
|
73
77
|
- Upload: The program can create Xcode project for iMessage sticker pack, which could then be compiled and sideloaded using Xcode.
|
@@ -89,27 +93,17 @@ To run in CLI mode, pass on any arguments
|
|
89
93
|
|
90
94
|
```
|
91
95
|
usage: sticker-convert.py [-h] [--version] [--no-confirm] [--custom-presets CUSTOM_PRESETS] [--input-dir INPUT_DIR]
|
92
|
-
[--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO]
|
93
|
-
[--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE]
|
94
|
-
[--
|
95
|
-
[--
|
96
|
-
[--
|
97
|
-
[--
|
98
|
-
[--
|
99
|
-
[--
|
100
|
-
[--
|
101
|
-
[--
|
102
|
-
[--
|
103
|
-
[--padding-percent PADDING_PERCENT] [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX]
|
104
|
-
[--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT] [--img-format IMG_FORMAT]
|
105
|
-
[--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD]
|
106
|
-
[--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID]
|
107
|
-
[--signal-password SIGNAL_PASSWORD] [--signal-get-auth] [--signal-data-dir SIGNAL_DATA_DIR]
|
108
|
-
[--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID]
|
109
|
-
[--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-username KAKAO_USERNAME]
|
110
|
-
[--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
|
111
|
-
[--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
|
112
|
-
[--save-cred SAVE_CRED]
|
96
|
+
[--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO | --download-viber DOWNLOAD_VIBER]
|
97
|
+
[--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE] [--export-signal | --export-telegram | --export-telegram-emoji | --export-whatsapp | --export-imessage]
|
98
|
+
[--no-compress] [--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,imessage_small,imessage_medium,imessage_large,custom}] [--steps STEPS]
|
99
|
+
[--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX]
|
100
|
+
[--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
|
101
|
+
[--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER] [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT]
|
102
|
+
[--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
|
103
|
+
[--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
|
104
|
+
[--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth]
|
105
|
+
[--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE] [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth]
|
106
|
+
[--line-cookies LINE_COOKIES] [--save-cred SAVE_CRED]
|
113
107
|
|
114
108
|
CLI for stickers-convert
|
115
109
|
|
@@ -143,6 +137,10 @@ Input options:
|
|
143
137
|
Download kakao stickers from a URL / ID as input
|
144
138
|
(Example: https://e.kakao.com/t/xxxxx OR kakaotalk://store/emoticon/4404400
|
145
139
|
OR https://emoticon.kakao.com/items/xxxxx OR 4404400)
|
140
|
+
--download-viber DOWNLOAD_VIBER
|
141
|
+
Download viber stickers from a URL as input
|
142
|
+
(Example: https://stickers.viber.com/pages/example
|
143
|
+
OR https://stickers.viber.com/pages/custom-sticker-packs/example)
|
146
144
|
|
147
145
|
Output options:
|
148
146
|
--output-dir OUTPUT_DIR
|
@@ -158,7 +156,7 @@ Output options:
|
|
158
156
|
|
159
157
|
Compression options:
|
160
158
|
--no-compress Do not compress files. Useful for only downloading stickers.
|
161
|
-
--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,imessage_small,imessage_medium,imessage_large,custom}
|
159
|
+
--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,imessage_small,imessage_medium,imessage_large,custom}
|
162
160
|
Apply preset for compression.
|
163
161
|
--steps STEPS Set number of divisions between min and max settings.
|
164
162
|
Steps higher = Slower but yields file more closer to the specified file size limit.
|
@@ -4,7 +4,7 @@ description = "Convert (animated) stickers to/from WhatsApp, Telegram, Signal, L
|
|
4
4
|
readme = "README.md"
|
5
5
|
requires-python = ">=3.8"
|
6
6
|
license = {file = "LICENSE"}
|
7
|
-
keywords = ["telegram", "line", "tgs", "whatsapp", "kakao", "signal", "imessage", "wastickers"]
|
7
|
+
keywords = ["telegram", "line", "tgs", "whatsapp", "kakao", "signal", "imessage", "wastickers", "viber"]
|
8
8
|
authors = [
|
9
9
|
{name = "laggykiller", email = "chaudominic2@gmail.com" } # Optional
|
10
10
|
]
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/downloaders/download_base.py
RENAMED
@@ -4,6 +4,7 @@ from __future__ import annotations
|
|
4
4
|
from pathlib import Path
|
5
5
|
from typing import Any, List, Optional, Tuple
|
6
6
|
|
7
|
+
import anyio
|
7
8
|
import requests
|
8
9
|
|
9
10
|
from sticker_convert.job_option import CredOption
|
@@ -27,16 +28,50 @@ class DownloadBase:
|
|
27
28
|
|
28
29
|
def download_multiple_files(
|
29
30
|
self, targets: List[Tuple[str, Path]], retries: int = 3, **kwargs: Any
|
31
|
+
) -> None:
|
32
|
+
anyio.run(self.download_multiple_files_async, targets, retries, **kwargs)
|
33
|
+
|
34
|
+
async def download_multiple_files_async(
|
35
|
+
self, targets: List[Tuple[str, Path]], retries: int = 3, **kwargs: Any
|
30
36
|
) -> None:
|
31
37
|
# targets format: [(url1, dest2), (url2, dest2), ...]
|
32
38
|
self.cb.put(
|
33
39
|
("bar", None, {"set_progress_mode": "determinate", "steps": len(targets)})
|
34
40
|
)
|
35
41
|
|
36
|
-
|
37
|
-
|
42
|
+
async with anyio.create_task_group() as tg:
|
43
|
+
for url, dest in targets:
|
44
|
+
tg.start_soon(self.download_file_async, url, dest, retries, **kwargs)
|
45
|
+
|
46
|
+
async def download_file_async(
|
47
|
+
self,
|
48
|
+
url: str,
|
49
|
+
dest: Path,
|
50
|
+
retries: int = 3,
|
51
|
+
**kwargs: Any,
|
52
|
+
) -> None:
|
53
|
+
for retry in range(retries):
|
54
|
+
try:
|
55
|
+
response = requests.get(url, allow_redirects=True, **kwargs)
|
56
|
+
|
57
|
+
if not response.ok:
|
58
|
+
self.cb.put("update_bar")
|
59
|
+
raise requests.exceptions.RequestException(
|
60
|
+
f"Error {response.status_code}"
|
61
|
+
)
|
62
|
+
|
63
|
+
self.cb.put(f"Downloading {url}")
|
64
|
+
with open(dest, "wb+") as f:
|
65
|
+
f.write(response.content)
|
66
|
+
self.cb.put(f"Downloaded {url}")
|
67
|
+
break
|
68
|
+
|
69
|
+
except requests.exceptions.RequestException as e:
|
70
|
+
self.cb.put(
|
71
|
+
f"Cannot download {url} (tried {retry+1}/{retries} times): {e}"
|
72
|
+
)
|
38
73
|
|
39
|
-
|
74
|
+
self.cb.put("update_bar")
|
40
75
|
|
41
76
|
def download_file(
|
42
77
|
self,
|
@@ -51,10 +86,12 @@ class DownloadBase:
|
|
51
86
|
|
52
87
|
for retry in range(retries):
|
53
88
|
try:
|
54
|
-
response = requests.get(
|
89
|
+
response = requests.get(
|
90
|
+
url, stream=True, allow_redirects=True, **kwargs
|
91
|
+
)
|
55
92
|
total_length = int(response.headers.get("content-length")) # type: ignore
|
56
93
|
|
57
|
-
if response.
|
94
|
+
if not response.ok:
|
58
95
|
return b""
|
59
96
|
self.cb.put(f"Downloading {url}")
|
60
97
|
|
@@ -75,16 +112,16 @@ class DownloadBase:
|
|
75
112
|
self.cb.put("update_bar")
|
76
113
|
|
77
114
|
break
|
78
|
-
except requests.exceptions.RequestException:
|
79
|
-
|
80
|
-
|
115
|
+
except requests.exceptions.RequestException as e:
|
116
|
+
self.cb.put(
|
117
|
+
f"Cannot download {url} (tried {retry+1}/{retries} times): {e}"
|
118
|
+
)
|
81
119
|
|
82
120
|
if not result:
|
83
121
|
return b""
|
84
122
|
if dest:
|
85
123
|
with open(dest, "wb+") as f:
|
86
124
|
f.write(result)
|
87
|
-
|
88
|
-
self.cb.put(msg)
|
125
|
+
self.cb.put(f"Downloaded {url}")
|
89
126
|
return b""
|
90
127
|
return result
|
@@ -0,0 +1,95 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
import json
|
3
|
+
import zipfile
|
4
|
+
from io import BytesIO
|
5
|
+
from pathlib import Path
|
6
|
+
from typing import Optional, Tuple, cast
|
7
|
+
from urllib.parse import urlparse
|
8
|
+
|
9
|
+
import requests
|
10
|
+
from bs4 import BeautifulSoup
|
11
|
+
|
12
|
+
from sticker_convert.downloaders.download_base import DownloadBase
|
13
|
+
from sticker_convert.job_option import CredOption
|
14
|
+
from sticker_convert.utils.callback import CallbackProtocol, CallbackReturn
|
15
|
+
from sticker_convert.utils.files.metadata_handler import MetadataHandler
|
16
|
+
|
17
|
+
|
18
|
+
class DownloadViber(DownloadBase):
|
19
|
+
# def __init__(self, *args: Any, **kwargs: Any) -> None:
|
20
|
+
# super().__init__(*args, **kwargs)
|
21
|
+
|
22
|
+
def get_pack_info(self, url: str) -> Optional[Tuple[str, str]]:
|
23
|
+
r = requests.get(url, allow_redirects=True)
|
24
|
+
soup = BeautifulSoup(r.text, "html.parser")
|
25
|
+
|
26
|
+
is_custom = urlparse(url).path.startswith("/pages/custom-sticker-packs/")
|
27
|
+
if is_custom:
|
28
|
+
tag_text_search = "window.CUSTOM_STICKER_PACK"
|
29
|
+
else:
|
30
|
+
tag_text_search = "window.PRODUCT"
|
31
|
+
|
32
|
+
script_tag = soup.find(
|
33
|
+
lambda tag: tag.name == "script" and tag.text.startswith(tag_text_search)
|
34
|
+
)
|
35
|
+
if script_tag is None:
|
36
|
+
return None
|
37
|
+
|
38
|
+
pack_json = script_tag.text.replace(f"{tag_text_search} = ", "", 1)[:-1]
|
39
|
+
pack_dict = json.loads(pack_json)
|
40
|
+
|
41
|
+
title = pack_dict["title"]
|
42
|
+
first_sticker_url = cast(str, pack_dict["stickerFirstItemUrl"])
|
43
|
+
zip_url = "/".join(first_sticker_url.split("/")[:-1]) + ".zip"
|
44
|
+
|
45
|
+
return title, zip_url
|
46
|
+
|
47
|
+
def decompress(self, zip_file: bytes) -> None:
|
48
|
+
with zipfile.ZipFile(BytesIO(zip_file)) as zf:
|
49
|
+
self.cb.put("Unzipping...")
|
50
|
+
|
51
|
+
zf_files = zf.namelist()
|
52
|
+
self.cb.put(
|
53
|
+
(
|
54
|
+
"bar",
|
55
|
+
None,
|
56
|
+
{"set_progress_mode": "determinate", "steps": len(zf_files)},
|
57
|
+
)
|
58
|
+
)
|
59
|
+
|
60
|
+
for sticker in zf_files:
|
61
|
+
num = sticker.split(".")[0][-2:].zfill(3)
|
62
|
+
data = zf.read(sticker)
|
63
|
+
ext = Path(sticker).suffix
|
64
|
+
self.cb.put(f"Read {sticker}")
|
65
|
+
|
66
|
+
out_path = Path(self.out_dir, num + ext)
|
67
|
+
with open(out_path, "wb") as f:
|
68
|
+
f.write(data)
|
69
|
+
|
70
|
+
self.cb.put("update_bar")
|
71
|
+
|
72
|
+
def download_stickers_viber(self) -> bool:
|
73
|
+
pack_info = self.get_pack_info(self.url)
|
74
|
+
if pack_info is None:
|
75
|
+
self.cb.put("Download failed: Cannot get pack info")
|
76
|
+
return False
|
77
|
+
title, zip_url = pack_info
|
78
|
+
|
79
|
+
zip_file = self.download_file(zip_url)
|
80
|
+
self.decompress(zip_file)
|
81
|
+
|
82
|
+
MetadataHandler.set_metadata(self.out_dir, title=title)
|
83
|
+
|
84
|
+
return True
|
85
|
+
|
86
|
+
@staticmethod
|
87
|
+
def start(
|
88
|
+
url: str,
|
89
|
+
out_dir: Path,
|
90
|
+
opt_cred: Optional[CredOption],
|
91
|
+
cb: CallbackProtocol,
|
92
|
+
cb_return: CallbackReturn,
|
93
|
+
) -> bool:
|
94
|
+
downloader = DownloadViber(url, out_dir, opt_cred, cb, cb_return)
|
95
|
+
return downloader.download_stickers_viber()
|
@@ -16,6 +16,7 @@ from sticker_convert.downloaders.download_kakao import DownloadKakao
|
|
16
16
|
from sticker_convert.downloaders.download_line import DownloadLine
|
17
17
|
from sticker_convert.downloaders.download_signal import DownloadSignal
|
18
18
|
from sticker_convert.downloaders.download_telegram import DownloadTelegram
|
19
|
+
from sticker_convert.downloaders.download_viber import DownloadViber
|
19
20
|
from sticker_convert.job_option import CompOption, CredOption, InputOption, OutputOption
|
20
21
|
from sticker_convert.uploaders.compress_wastickers import CompressWastickers
|
21
22
|
from sticker_convert.uploaders.upload_signal import UploadSignal
|
@@ -527,6 +528,9 @@ class Job:
|
|
527
528
|
if self.opt_input.option == "kakao":
|
528
529
|
downloaders.append(DownloadKakao.start)
|
529
530
|
|
531
|
+
if self.opt_input.option == "viber":
|
532
|
+
downloaders.append(DownloadViber.start)
|
533
|
+
|
530
534
|
if len(downloaders) > 0:
|
531
535
|
self.executor.cb("Downloading...")
|
532
536
|
else:
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/resources/compression.json
RENAMED
@@ -328,6 +328,53 @@
|
|
328
328
|
"quantize_method": "imagequant",
|
329
329
|
"default_emoji": "😀"
|
330
330
|
},
|
331
|
+
"viber": {
|
332
|
+
"size_max": {
|
333
|
+
"img": 0,
|
334
|
+
"vid": 0
|
335
|
+
},
|
336
|
+
"format": {
|
337
|
+
"img": ".png",
|
338
|
+
"vid": ".png"
|
339
|
+
},
|
340
|
+
"fps": {
|
341
|
+
"min": 1,
|
342
|
+
"max": 1,
|
343
|
+
"power": 1
|
344
|
+
},
|
345
|
+
"res": {
|
346
|
+
"w": {
|
347
|
+
"min": 490,
|
348
|
+
"max": 490
|
349
|
+
},
|
350
|
+
"h": {
|
351
|
+
"min": 490,
|
352
|
+
"max": 490
|
353
|
+
},
|
354
|
+
"power": 1
|
355
|
+
},
|
356
|
+
"quality": {
|
357
|
+
"min": 95,
|
358
|
+
"max": 95,
|
359
|
+
"power": 1
|
360
|
+
},
|
361
|
+
"color": {
|
362
|
+
"min": 257,
|
363
|
+
"max": 257,
|
364
|
+
"power": 1
|
365
|
+
},
|
366
|
+
"duration": {
|
367
|
+
"min": 0,
|
368
|
+
"max": 0
|
369
|
+
},
|
370
|
+
"padding_percent": 0,
|
371
|
+
"bg_color": "",
|
372
|
+
"steps": 1,
|
373
|
+
"fake_vid": false,
|
374
|
+
"scale_filter": "bicubic",
|
375
|
+
"quantize_method": "imagequant",
|
376
|
+
"default_emoji": "😀"
|
377
|
+
},
|
331
378
|
"imessage_small": {
|
332
379
|
"size_max": {
|
333
380
|
"img": 500000,
|
@@ -49,6 +49,16 @@
|
|
49
49
|
"author": true
|
50
50
|
}
|
51
51
|
},
|
52
|
+
"viber": {
|
53
|
+
"full_name": "Download from Viber",
|
54
|
+
"help": "Download viber stickers from a URL as input",
|
55
|
+
"example": "Example: https://stickers.viber.com/pages/example\nOR https://stickers.viber.com/pages/custom-sticker-packs/example",
|
56
|
+
"address_lbls": "URL address / ID",
|
57
|
+
"metadata_provides": {
|
58
|
+
"title": true,
|
59
|
+
"author": false
|
60
|
+
}
|
61
|
+
},
|
52
62
|
"local": {
|
53
63
|
"full_name": "From local directory",
|
54
64
|
"help": "Load files from local directory on computer",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: sticker-convert
|
3
|
-
Version: 2.8.
|
3
|
+
Version: 2.8.6
|
4
4
|
Summary: Convert (animated) stickers to/from WhatsApp, Telegram, Signal, Line, Kakao, iMessage. Written in Python.
|
5
5
|
Author-email: laggykiller <chaudominic2@gmail.com>
|
6
6
|
Maintainer-email: laggykiller <chaudominic2@gmail.com>
|
@@ -349,7 +349,7 @@ Project-URL: Source, https://github.com/laggykiller/sticker-convert
|
|
349
349
|
Project-URL: Documentation, https://github.com/laggykiller/sticker-convert
|
350
350
|
Project-URL: Tracker, https://github.com/laggykiller/sticker-convert/issues
|
351
351
|
Project-URL: Repository, https://github.com/laggykiller/sticker-convert
|
352
|
-
Keywords: telegram,line,tgs,whatsapp,kakao,signal,imessage,wastickers
|
352
|
+
Keywords: telegram,line,tgs,whatsapp,kakao,signal,imessage,wastickers,viber
|
353
353
|
Classifier: Development Status :: 5 - Production/Stable
|
354
354
|
Classifier: Intended Audience :: End Users/Desktop
|
355
355
|
Classifier: Topic :: Multimedia :: Graphics :: Graphics Conversion
|
@@ -369,7 +369,7 @@ Requires-Dist: anyio~=4.3.0
|
|
369
369
|
Requires-Dist: apngasm_python~=1.2.3
|
370
370
|
Requires-Dist: av~=12.0.0
|
371
371
|
Requires-Dist: beautifulsoup4~=4.12.3
|
372
|
-
Requires-Dist: rookiepy~=0.
|
372
|
+
Requires-Dist: rookiepy~=0.4.0
|
373
373
|
Requires-Dist: imagequant~=1.1.1
|
374
374
|
Requires-Dist: memory-tempfile~=2.2.3
|
375
375
|
Requires-Dist: mergedeep~=1.3.4
|
@@ -391,7 +391,7 @@ Requires-Dist: webp~=0.3.0
|
|
391
391
|
|
392
392
|
- A python script for creating, downloading, converting+compressing and uploading stickers from multiple instant messaging applications.
|
393
393
|
- With GUI and CLI that runs on Windows, MacOS and Linux
|
394
|
-
- Currently supports Signal, Telegram, WhatsApp (Create .wastickers), Line (Download only), Kakao (Download only), iMessage (Create Xcode sticker pack project)
|
394
|
+
- Currently supports Signal, Telegram, WhatsApp (Create .wastickers), Line (Download only), Kakao (Download only), Viber (Download only), iMessage (Create Xcode sticker pack project)
|
395
395
|
- Supports static and animated stickers, with transparency support
|
396
396
|
|
397
397
|
## Downloads
|
@@ -429,6 +429,7 @@ Requires-Dist: webp~=0.3.0
|
|
429
429
|
| [WhatsApp](docs/guide_whatsapp.md) | ⭕ (By Android or WhatsApp Web) | ⭕ (Create `.wastickers`, import by Sticker Maker) |
|
430
430
|
| [Line](docs/guide_line.md) | ✅ | 🚫 (Need to submit for manual approval) |
|
431
431
|
| [Kakao](docs/guide_kakao.md) | ✅ (Need 'share link' for animated) | 🚫 (Need to submit for manual approval) |
|
432
|
+
| [Viber](docs/guide_viber.md) | ✅ | 🚫 (Manually upload through Viber app) |
|
432
433
|
| [iMessage](docs/guide_imessage.md) | 🚫 | ⭕ (Create Xcode stickerpack project for sideload) |
|
433
434
|
|
434
435
|
✅ = Supported ⭕ = Partially supported 🚫 = Not supported
|
@@ -455,6 +456,9 @@ Requires-Dist: webp~=0.3.0
|
|
455
456
|
- Kakao
|
456
457
|
- Download: Supported (e.g. `https://e.kakao.com/t/xxxxx` OR `kakaotalk://store/emoticon/4404400` OR `https://emoticon.kakao.com/items/xxxxx` OR `4404400`). It is rather complicated, learn more from [docs/guide_kakao.md](docs/guide_kakao.md)
|
457
458
|
- Upload: Not supported. You need to manually submit sticker pack for approval before you can use in app.
|
459
|
+
- Viber
|
460
|
+
- Download: Supported (e.g. `https://stickers.viber.com/pages/example` OR `https://stickers.viber.com/pages/custom-sticker-packs/example`)
|
461
|
+
- Upload: The program can convert images to png with 490x490 for uploading to viber manually. It should be noted that Viber is able to resize images for you, so it may not be necessary to use sticker-convert for creating Viber sticker pack.
|
458
462
|
- iMessage
|
459
463
|
- Download: Not supported.
|
460
464
|
- Upload: The program can create Xcode project for iMessage sticker pack, which could then be compiled and sideloaded using Xcode.
|
@@ -476,27 +480,17 @@ To run in CLI mode, pass on any arguments
|
|
476
480
|
|
477
481
|
```
|
478
482
|
usage: sticker-convert.py [-h] [--version] [--no-confirm] [--custom-presets CUSTOM_PRESETS] [--input-dir INPUT_DIR]
|
479
|
-
[--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO]
|
480
|
-
[--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE]
|
481
|
-
[--
|
482
|
-
[--
|
483
|
-
[--
|
484
|
-
[--
|
485
|
-
[--
|
486
|
-
[--
|
487
|
-
[--
|
488
|
-
[--
|
489
|
-
[--
|
490
|
-
[--padding-percent PADDING_PERCENT] [--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX]
|
491
|
-
[--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT] [--img-format IMG_FORMAT]
|
492
|
-
[--fake-vid] [--scale-filter SCALE_FILTER] [--quantize-method QUANTIZE_METHOD]
|
493
|
-
[--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID]
|
494
|
-
[--signal-password SIGNAL_PASSWORD] [--signal-get-auth] [--signal-data-dir SIGNAL_DATA_DIR]
|
495
|
-
[--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID]
|
496
|
-
[--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth] [--kakao-username KAKAO_USERNAME]
|
497
|
-
[--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE]
|
498
|
-
[--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth] [--line-cookies LINE_COOKIES]
|
499
|
-
[--save-cred SAVE_CRED]
|
483
|
+
[--download-auto DOWNLOAD_AUTO | --download-signal DOWNLOAD_SIGNAL | --download-telegram DOWNLOAD_TELEGRAM | --download-line DOWNLOAD_LINE | --download-kakao DOWNLOAD_KAKAO | --download-viber DOWNLOAD_VIBER]
|
484
|
+
[--output-dir OUTPUT_DIR] [--author AUTHOR] [--title TITLE] [--export-signal | --export-telegram | --export-telegram-emoji | --export-whatsapp | --export-imessage]
|
485
|
+
[--no-compress] [--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,imessage_small,imessage_medium,imessage_large,custom}] [--steps STEPS]
|
486
|
+
[--processes PROCESSES] [--fps-min FPS_MIN] [--fps-max FPS_MAX] [--fps-power FPS_POWER] [--res-min RES_MIN] [--res-max RES_MAX] [--res-w-min RES_W_MIN] [--res-w-max RES_W_MAX]
|
487
|
+
[--res-h-min RES_H_MIN] [--res-h-max RES_H_MAX] [--res-power RES_POWER] [--quality-min QUALITY_MIN] [--quality-max QUALITY_MAX] [--quality-power QUALITY_POWER]
|
488
|
+
[--color-min COLOR_MIN] [--color-max COLOR_MAX] [--color-power COLOR_POWER] [--duration-min DURATION_MIN] [--duration-max DURATION_MAX] [--padding-percent PADDING_PERCENT]
|
489
|
+
[--bg-color BG_COLOR] [--vid-size-max VID_SIZE_MAX] [--img-size-max IMG_SIZE_MAX] [--vid-format VID_FORMAT] [--img-format IMG_FORMAT] [--fake-vid] [--scale-filter SCALE_FILTER]
|
490
|
+
[--quantize-method QUANTIZE_METHOD] [--cache-dir CACHE_DIR] [--default-emoji DEFAULT_EMOJI] [--signal-uuid SIGNAL_UUID] [--signal-password SIGNAL_PASSWORD] [--signal-get-auth]
|
491
|
+
[--signal-data-dir SIGNAL_DATA_DIR] [--telegram-token TELEGRAM_TOKEN] [--telegram-userid TELEGRAM_USERID] [--kakao-auth-token KAKAO_AUTH_TOKEN] [--kakao-get-auth]
|
492
|
+
[--kakao-username KAKAO_USERNAME] [--kakao-password KAKAO_PASSWORD] [--kakao-country-code KAKAO_COUNTRY_CODE] [--kakao-phone-number KAKAO_PHONE_NUMBER] [--line-get-auth]
|
493
|
+
[--line-cookies LINE_COOKIES] [--save-cred SAVE_CRED]
|
500
494
|
|
501
495
|
CLI for stickers-convert
|
502
496
|
|
@@ -530,6 +524,10 @@ Input options:
|
|
530
524
|
Download kakao stickers from a URL / ID as input
|
531
525
|
(Example: https://e.kakao.com/t/xxxxx OR kakaotalk://store/emoticon/4404400
|
532
526
|
OR https://emoticon.kakao.com/items/xxxxx OR 4404400)
|
527
|
+
--download-viber DOWNLOAD_VIBER
|
528
|
+
Download viber stickers from a URL as input
|
529
|
+
(Example: https://stickers.viber.com/pages/example
|
530
|
+
OR https://stickers.viber.com/pages/custom-sticker-packs/example)
|
533
531
|
|
534
532
|
Output options:
|
535
533
|
--output-dir OUTPUT_DIR
|
@@ -545,7 +543,7 @@ Output options:
|
|
545
543
|
|
546
544
|
Compression options:
|
547
545
|
--no-compress Do not compress files. Useful for only downloading stickers.
|
548
|
-
--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,imessage_small,imessage_medium,imessage_large,custom}
|
546
|
+
--preset {auto,signal,telegram,telegram_emoji,whatsapp,line,kakao,viber,imessage_small,imessage_medium,imessage_large,custom}
|
549
547
|
Apply preset for compression.
|
550
548
|
--steps STEPS Set number of divisions between min and max settings.
|
551
549
|
Steps higher = Slower but yields file more closer to the specified file size limit.
|
@@ -24,6 +24,7 @@ src/sticker_convert/downloaders/download_kakao.py
|
|
24
24
|
src/sticker_convert/downloaders/download_line.py
|
25
25
|
src/sticker_convert/downloaders/download_signal.py
|
26
26
|
src/sticker_convert/downloaders/download_telegram.py
|
27
|
+
src/sticker_convert/downloaders/download_viber.py
|
27
28
|
src/sticker_convert/gui_components/__init__.py
|
28
29
|
src/sticker_convert/gui_components/gui_utils.py
|
29
30
|
src/sticker_convert/gui_components/frames/__init__.py
|
@@ -412,3 +412,45 @@ def test_download_kakao_animated_gif_share_link(tmp_path: LocalPath) -> None:
|
|
412
412
|
with_author=True,
|
413
413
|
with_emoji=False,
|
414
414
|
)
|
415
|
+
|
416
|
+
|
417
|
+
@pytest.mark.skipif(not TEST_DOWNLOAD, reason="TEST_DOWNLOAD not set")
|
418
|
+
def test_download_viber_custom_sticker_packs(tmp_path: LocalPath) -> None:
|
419
|
+
_run_sticker_convert(
|
420
|
+
tmp_path=tmp_path,
|
421
|
+
source="viber",
|
422
|
+
url="https://stickers.viber.com/pages/custom-sticker-packs/11eefcc8e3c228308e3fafd9b834679a19de752fb5c38390",
|
423
|
+
expected_file_count=2,
|
424
|
+
expected_file_formats=[".png"],
|
425
|
+
with_title=True,
|
426
|
+
with_author=False,
|
427
|
+
with_emoji=False,
|
428
|
+
)
|
429
|
+
|
430
|
+
|
431
|
+
@pytest.mark.skipif(not TEST_DOWNLOAD, reason="TEST_DOWNLOAD not set")
|
432
|
+
def test_download_viber_official_sticker_packs(tmp_path: LocalPath) -> None:
|
433
|
+
_run_sticker_convert(
|
434
|
+
tmp_path=tmp_path,
|
435
|
+
source="viber",
|
436
|
+
url="https://stickers.viber.com/pages/spring_2024",
|
437
|
+
expected_file_count=14,
|
438
|
+
expected_file_formats=[".png"],
|
439
|
+
with_title=True,
|
440
|
+
with_author=False,
|
441
|
+
with_emoji=False,
|
442
|
+
)
|
443
|
+
|
444
|
+
|
445
|
+
@pytest.mark.skipif(not TEST_DOWNLOAD, reason="TEST_DOWNLOAD not set")
|
446
|
+
def test_download_viber_official_sound_sticker_packs(tmp_path: LocalPath) -> None:
|
447
|
+
_run_sticker_convert(
|
448
|
+
tmp_path=tmp_path,
|
449
|
+
source="viber",
|
450
|
+
url="https://stickers.viber.com/pages/spring_2024",
|
451
|
+
expected_file_count=24,
|
452
|
+
expected_file_formats=[".png", ".mp3"],
|
453
|
+
with_title=True,
|
454
|
+
with_author=False,
|
455
|
+
with_emoji=False,
|
456
|
+
)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/downloaders/download_kakao.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/downloaders/download_line.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/downloaders/download_signal.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/downloaders/download_telegram.py
RENAMED
File without changes
|
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/gui_components/gui_utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/resources/NotoColorEmoji.ttf
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/uploaders/compress_wastickers.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/uploaders/upload_base.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/uploaders/upload_signal.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/uploaders/upload_telegram.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/uploaders/xcode_imessage.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/auth/get_kakao_auth.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/auth/get_line_auth.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/auth/get_signal_auth.py
RENAMED
File without changes
|
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/files/cache_store.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/files/json_manager.py
RENAMED
File without changes
|
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/files/metadata_handler.py
RENAMED
File without changes
|
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/files/sanitize_filename.py
RENAMED
File without changes
|
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/media/codec_info.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/media/decrypt_kakao.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert/utils/media/format_verify.py
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert.egg-info/dependency_links.txt
RENAMED
File without changes
|
{sticker_convert-2.8.4 → sticker_convert-2.8.6}/src/sticker_convert.egg-info/entry_points.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|