sticker-convert 2.12.2__tar.gz → 2.12.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. {sticker_convert-2.12.2/src/sticker_convert.egg-info → sticker_convert-2.12.3}/PKG-INFO +2 -1
  2. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/requirements.txt +1 -0
  3. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/converter.py +2 -1
  4. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/downloaders/download_viber.py +13 -3
  5. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/auth/get_discord_auth.py +4 -1
  6. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/auth/telegram_api.py +2 -2
  7. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/chrome_remotedebug.py +31 -41
  8. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/version.py +1 -1
  9. {sticker_convert-2.12.2 → sticker_convert-2.12.3/src/sticker_convert.egg-info}/PKG-INFO +2 -1
  10. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert.egg-info/requires.txt +1 -0
  11. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/tests/test_download.py +7 -5
  12. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/LICENSE +0 -0
  13. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/MANIFEST.in +0 -0
  14. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/README.md +0 -0
  15. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/pyproject.toml +0 -0
  16. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/setup.cfg +0 -0
  17. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/__init__.py +0 -0
  18. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/__main__.py +0 -0
  19. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/cli.py +0 -0
  20. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/definitions.py +0 -0
  21. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/downloaders/__init__.py +0 -0
  22. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/downloaders/download_base.py +0 -0
  23. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/downloaders/download_discord.py +0 -0
  24. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/downloaders/download_kakao.py +0 -0
  25. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/downloaders/download_line.py +0 -0
  26. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/downloaders/download_signal.py +0 -0
  27. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/downloaders/download_telegram.py +0 -0
  28. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui.py +0 -0
  29. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/__init__.py +0 -0
  30. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/frames/__init__.py +0 -0
  31. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/frames/comp_frame.py +0 -0
  32. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/frames/config_frame.py +0 -0
  33. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/frames/control_frame.py +0 -0
  34. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/frames/cred_frame.py +0 -0
  35. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/frames/input_frame.py +0 -0
  36. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/frames/output_frame.py +0 -0
  37. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/frames/progress_frame.py +0 -0
  38. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/frames/right_clicker.py +0 -0
  39. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/gui_utils.py +0 -0
  40. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/windows/__init__.py +0 -0
  41. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/windows/advanced_compression_window.py +0 -0
  42. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/windows/base_window.py +0 -0
  43. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/windows/discord_get_auth_window.py +0 -0
  44. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/windows/kakao_get_auth_window.py +0 -0
  45. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/windows/line_get_auth_window.py +0 -0
  46. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/windows/signal_get_auth_window.py +0 -0
  47. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/gui_components/windows/viber_get_auth_window.py +0 -0
  48. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/.github/FUNDING.yml +0 -0
  49. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/.gitignore +0 -0
  50. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/README.md +0 -0
  51. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers/Info.plist +0 -0
  52. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Info.plist +0 -0
  53. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Contents.json +0 -0
  54. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Contents.json +0 -0
  55. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Contents.json +0 -0
  56. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Sticker 1.png +0 -0
  57. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Contents.json +0 -0
  58. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Sticker 2.png +0 -0
  59. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Contents.json +0 -0
  60. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Sticker 3.png +0 -0
  61. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/App-Store-1024x1024pt.png +0 -0
  62. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Contents.json +0 -0
  63. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-App-Store-1024x768pt.png +0 -0
  64. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-67x50pt@2x.png +0 -0
  65. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-Pro-74x55pt@2x.png +0 -0
  66. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@2x.png +0 -0
  67. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@3x.png +0 -0
  68. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@2x.png +0 -0
  69. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@3x.png +0 -0
  70. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@2x.png +0 -0
  71. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@3x.png +0 -0
  72. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPad-Settings-29pt@2x.png +0 -0
  73. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-Settings-29pt@3x.png +0 -0
  74. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-settings-29pt@2x.png +0 -0
  75. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.pbxproj +0 -0
  76. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
  77. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
  78. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcuserdata/niklaspeterson.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  79. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/ios-message-stickers-template/stickers.xcodeproj/xcuserdata/niklaspeterson.xcuserdatad/xcschemes/xcschememanagement.plist +0 -0
  80. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/job.py +0 -0
  81. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/job_option.py +0 -0
  82. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/resources/NotoColorEmoji.ttf +0 -0
  83. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/resources/appicon.icns +0 -0
  84. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/resources/appicon.ico +0 -0
  85. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/resources/appicon.png +0 -0
  86. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/resources/compression.json +0 -0
  87. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/resources/emoji.json +0 -0
  88. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/resources/help.json +0 -0
  89. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/resources/input.json +0 -0
  90. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/resources/memdump_linux.sh +0 -0
  91. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/resources/memdump_windows.ps1 +0 -0
  92. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/resources/output.json +0 -0
  93. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/uploaders/__init__.py +0 -0
  94. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/uploaders/compress_wastickers.py +0 -0
  95. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/uploaders/upload_base.py +0 -0
  96. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/uploaders/upload_signal.py +0 -0
  97. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/uploaders/upload_telegram.py +0 -0
  98. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/uploaders/upload_viber.py +0 -0
  99. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/uploaders/xcode_imessage.py +0 -0
  100. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/auth/get_kakao_auth.py +0 -0
  101. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/auth/get_kakao_desktop_auth.py +0 -0
  102. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/auth/get_line_auth.py +0 -0
  103. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/auth/get_signal_auth.py +0 -0
  104. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/auth/get_viber_auth.py +0 -0
  105. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/auth/telethon_setup.py +0 -0
  106. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/callback.py +0 -0
  107. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/emoji.py +0 -0
  108. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/files/cache_store.py +0 -0
  109. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/files/json_manager.py +0 -0
  110. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/files/json_resources_loader.py +0 -0
  111. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/files/metadata_handler.py +0 -0
  112. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/files/run_bin.py +0 -0
  113. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/files/sanitize_filename.py +0 -0
  114. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/media/apple_png_normalize.py +0 -0
  115. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/media/codec_info.py +0 -0
  116. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/media/decrypt_kakao.py +0 -0
  117. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/media/format_verify.py +0 -0
  118. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/process.py +0 -0
  119. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert/utils/url_detect.py +0 -0
  120. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert.egg-info/SOURCES.txt +0 -0
  121. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert.egg-info/dependency_links.txt +0 -0
  122. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert.egg-info/entry_points.txt +0 -0
  123. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/src/sticker_convert.egg-info/top_level.txt +0 -0
  124. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/tests/test_compression.py +0 -0
  125. {sticker_convert-2.12.2 → sticker_convert-2.12.3}/tests/test_export.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sticker-convert
3
- Version: 2.12.2
3
+ Version: 2.12.3
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>
@@ -376,6 +376,7 @@ Requires-Dist: memory-tempfile~=2.2.3
376
376
  Requires-Dist: mergedeep~=1.3.4
377
377
  Requires-Dist: numpy>=1.22.4
378
378
  Requires-Dist: Pillow~=11.1.0
379
+ Requires-Dist: pybrowsers~=0.7.0
379
380
  Requires-Dist: pyoxipng~=9.0.0
380
381
  Requires-Dist: python-telegram-bot~=22.0
381
382
  Requires-Dist: psutil~=7.0.0
@@ -11,6 +11,7 @@ memory-tempfile~=2.2.3
11
11
  mergedeep~=1.3.4
12
12
  numpy>=1.22.4
13
13
  Pillow~=11.1.0
14
+ pybrowsers~=0.7.0
14
15
  pyoxipng~=9.0.0
15
16
  python-telegram-bot~=22.0
16
17
  psutil~=7.0.0
@@ -438,12 +438,13 @@ class StickerConvert:
438
438
  chrome_path = CRD.get_chrome_path()
439
439
  args = [
440
440
  "--headless",
441
+ "--kiosk",
441
442
  "--disable-extensions",
442
443
  "--disable-infobars",
443
444
  "--disable-gpu",
444
445
  "--disable-gpu-rasterization",
445
446
  "--hide-scrollbars",
446
- f"--window-size={width + 100},{height + 100}",
447
+ f"--window-size={width + 200},{height + 200}",
447
448
  "about:blank",
448
449
  ]
449
450
  if chrome_path is None:
@@ -19,7 +19,7 @@ class DownloadViber(DownloadBase):
19
19
  # def __init__(self, *args: Any, **kwargs: Any) -> None:
20
20
  # super().__init__(*args, **kwargs)
21
21
 
22
- def get_pack_info(self, url: str) -> Optional[Tuple[str, str, str]]:
22
+ def get_pack_info(self, url: str) -> Optional[Tuple[str, str, str, str]]:
23
23
  r = requests.get(url, allow_redirects=True)
24
24
  soup = BeautifulSoup(r.text, "html.parser")
25
25
 
@@ -42,8 +42,17 @@ class DownloadViber(DownloadBase):
42
42
  first_sticker_url = cast(str, pack_dict["stickerFirstItemUrl"])
43
43
  zip_url = "/".join(first_sticker_url.split("/")[:-1]) + ".zip"
44
44
  pack_id = pack_dict["id"].split(".")[-1]
45
+ if is_custom:
46
+ cover_url = (
47
+ "https://custom-sticker-pack.cdn.viber.com/custom-stickers/{}/thumb.png"
48
+ )
49
+ else:
50
+ cover_url = (
51
+ "https://sm-content.viber.com/static/images/product/{}/sticker.png"
52
+ )
53
+ cover_url = cover_url.format(pack_dict["id"])
45
54
 
46
- return title, zip_url, pack_id
55
+ return title, zip_url, cover_url, pack_id
47
56
 
48
57
  def decompress(
49
58
  self, zip_file: bytes, exts: Optional[Tuple[str, ...]] = None
@@ -84,7 +93,7 @@ class DownloadViber(DownloadBase):
84
93
  if pack_info is None:
85
94
  self.cb.put("Download failed: Cannot get pack info")
86
95
  return 0, 0
87
- title, zip_url, pack_id = pack_info
96
+ title, zip_url, cover_url, pack_id = pack_info
88
97
 
89
98
  anim_url = f"https://content.cdn.viber.com/stickers/ASVG/{pack_id}.zip"
90
99
  anim_file = self.download_file(anim_url)
@@ -94,6 +103,7 @@ class DownloadViber(DownloadBase):
94
103
  count += self.decompress(zip_file, (".mp3",))
95
104
  else:
96
105
  count = self.decompress(zip_file, (".mp3", ".png"))
106
+ self.download_file(cover_url, self.out_dir / "cover.png")
97
107
 
98
108
  MetadataHandler.set_metadata(self.out_dir, title=title)
99
109
 
@@ -74,7 +74,10 @@ class GetDiscordAuth:
74
74
  else:
75
75
  chrome_path = CRD.get_chrome_path()
76
76
  if chrome_path is None:
77
- return None, "Please install Discord Desktop or Chrome and try again"
77
+ return (
78
+ None,
79
+ "Please install Discord Desktop or Chrome/Chromium and try again",
80
+ )
78
81
 
79
82
  token = None
80
83
  if using_discord_app:
@@ -388,8 +388,8 @@ class TelethonAPI(TelegramAPI):
388
388
  else:
389
389
  sent_message = cast(
390
390
  Message,
391
- await self.client.send_file("Stickers", msg, force_document=True),
392
- ) # type: ignore
391
+ await self.client.send_file("Stickers", msg, force_document=True), # type: ignore
392
+ )
393
393
 
394
394
  for _ in range(5):
395
395
  # https://core.telegram.org/bots/faq#my-bot-is-hitting-limits-how-do-i-avoid-this
@@ -8,8 +8,9 @@ import shutil
8
8
  import socket
9
9
  import subprocess
10
10
  import time
11
- from typing import Any, Dict, List, Optional, Union, cast
11
+ from typing import Any, Dict, List, Optional, Tuple, Union, cast
12
12
 
13
+ import browsers # type: ignore
13
14
  import requests
14
15
  import websocket
15
16
  from PIL import Image
@@ -19,6 +20,23 @@ from PIL import Image
19
20
  # https://chromedevtools.github.io/devtools-protocol/
20
21
 
21
22
 
23
+ BROWSER_PREF = [
24
+ "chrome",
25
+ "chrome-canary",
26
+ "chromium",
27
+ "msedge",
28
+ "msedge-beta",
29
+ "msedge-dev",
30
+ "msedge-canary",
31
+ "brave",
32
+ "brave-beta",
33
+ "brave-nightly",
34
+ "opera",
35
+ "opera-beta",
36
+ "opera-developer",
37
+ ]
38
+
39
+
22
40
  def get_free_port() -> int:
23
41
  with socket.socket() as sock:
24
42
  sock.bind(("", 0))
@@ -66,47 +84,19 @@ class CRD:
66
84
 
67
85
  @staticmethod
68
86
  def get_chrome_path() -> Optional[str]:
69
- chrome_bin: Optional[str]
70
- if platform.system() == "Darwin":
71
- chrome_bin = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
72
-
73
- if os.path.isfile(chrome_bin) is False:
74
- return None
75
-
76
- return chrome_bin
77
-
78
- elif platform.system() == "Windows":
79
- chrome_x64 = f"{os.environ.get('PROGRAMW6432') or os.environ.get('PROGRAMFILES')}\\Google\\Chrome\\Application"
80
- chrome_x86 = (
81
- f"{os.environ.get('PROGRAMFILES(X86)')}\\Google\\Chrome\\Application"
82
- )
83
-
84
- chrome_dir = (
85
- chrome_x64
86
- if os.path.isdir(chrome_x64)
87
- else chrome_x86
88
- if os.path.isdir(chrome_x86)
89
- else None
90
- )
91
-
92
- if chrome_dir is None:
93
- return None
94
-
95
- return chrome_dir + "\\chrome.exe"
96
-
97
- else:
98
- for executable in (
99
- "google-chrome",
100
- "google-chrome-stable",
101
- "google-chrome-beta",
102
- "google-chrome-dev",
103
- "chromium-browser",
104
- "chromium",
105
- ):
106
- chrome_bin = shutil.which(executable)
107
- if chrome_bin is not None:
108
- return chrome_bin
87
+ bs: List[Tuple[int, str]] = []
88
+ for b in browsers.browsers():
89
+ browser_type = b["browser_type"]
90
+ path = b["path"]
91
+ try:
92
+ rank = BROWSER_PREF.index(browser_type)
93
+ except ValueError:
94
+ continue
95
+ bs.append((rank, path))
96
+ if len(bs) == 0:
109
97
  return None
98
+ bs = sorted(bs, key=lambda x: x[0])
99
+ return bs[0][1]
110
100
 
111
101
  def connect(self, target_id: int = 0):
112
102
  self.cmd_id = 1
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
- __version__ = "2.12.2"
3
+ __version__ = "2.12.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sticker-convert
3
- Version: 2.12.2
3
+ Version: 2.12.3
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>
@@ -376,6 +376,7 @@ Requires-Dist: memory-tempfile~=2.2.3
376
376
  Requires-Dist: mergedeep~=1.3.4
377
377
  Requires-Dist: numpy>=1.22.4
378
378
  Requires-Dist: Pillow~=11.1.0
379
+ Requires-Dist: pybrowsers~=0.7.0
379
380
  Requires-Dist: pyoxipng~=9.0.0
380
381
  Requires-Dist: python-telegram-bot~=22.0
381
382
  Requires-Dist: psutil~=7.0.0
@@ -11,6 +11,7 @@ memory-tempfile~=2.2.3
11
11
  mergedeep~=1.3.4
12
12
  numpy>=1.22.4
13
13
  Pillow~=11.1.0
14
+ pybrowsers~=0.7.0
14
15
  pyoxipng~=9.0.0
15
16
  python-telegram-bot~=22.0
16
17
  psutil~=7.0.0
@@ -415,6 +415,7 @@ def test_download_kakao_animated_gif_store_link_with_token(tmp_path: LocalPath)
415
415
 
416
416
 
417
417
  @pytest.mark.skipif(not TEST_DOWNLOAD, reason="TEST_DOWNLOAD not set")
418
+ @pytest.mark.skipif(not KAKAO_TOKEN, reason="No credentials")
418
419
  def test_download_kakao_animated_gif_share_link(tmp_path: LocalPath) -> None:
419
420
  _run_sticker_convert(
420
421
  tmp_path=tmp_path,
@@ -430,6 +431,7 @@ def test_download_kakao_animated_gif_share_link(tmp_path: LocalPath) -> None:
430
431
 
431
432
 
432
433
  @pytest.mark.skipif(not TEST_DOWNLOAD, reason="TEST_DOWNLOAD not set")
434
+ @pytest.mark.skipif(not KAKAO_TOKEN, reason="No credentials")
433
435
  def test_download_kakao_mini_share_link(tmp_path: LocalPath) -> None:
434
436
  _run_sticker_convert(
435
437
  tmp_path=tmp_path,
@@ -450,7 +452,7 @@ def test_download_viber_custom_sticker_packs(tmp_path: LocalPath) -> None:
450
452
  tmp_path=tmp_path,
451
453
  source="viber",
452
454
  url="https://stickers.viber.com/pages/custom-sticker-packs/11eefcc8e3c228308e3fafd9b834679a19de752fb5c38390",
453
- expected_file_count=2,
455
+ expected_file_count=3,
454
456
  expected_file_formats=[".png"],
455
457
  with_title=True,
456
458
  with_author=False,
@@ -465,7 +467,7 @@ def test_download_viber_official_sticker_packs(tmp_path: LocalPath) -> None:
465
467
  tmp_path=tmp_path,
466
468
  source="viber",
467
469
  url="https://stickers.viber.com/pages/spring_2024",
468
- expected_file_count=14,
470
+ expected_file_count=15,
469
471
  expected_file_formats=[".png"],
470
472
  with_title=True,
471
473
  with_author=False,
@@ -479,7 +481,7 @@ def test_download_viber_official_sticker_packs_sound(tmp_path: LocalPath) -> Non
479
481
  tmp_path=tmp_path,
480
482
  source="viber",
481
483
  url="https://stickers.viber.com/pages/onenationunderloveUA",
482
- expected_file_count=24,
484
+ expected_file_count=25,
483
485
  expected_file_formats=[".png", ".mp3"],
484
486
  with_title=True,
485
487
  with_author=False,
@@ -493,8 +495,8 @@ def test_download_viber_official_sticker_packs_animated(tmp_path: LocalPath) ->
493
495
  tmp_path=tmp_path,
494
496
  source="viber",
495
497
  url="https://stickers.viber.com/pages/earthday",
496
- expected_file_count=32,
497
- expected_file_formats=[".svg"],
498
+ expected_file_count=33,
499
+ expected_file_formats=[".svg", ".png"],
498
500
  with_title=True,
499
501
  with_author=False,
500
502
  with_emoji=False,