sticker-convert 2.8.12__py3-none-any.whl → 2.17.0.0__py3-none-any.whl

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 (124) hide show
  1. sticker_convert/__main__.py +24 -24
  2. sticker_convert/auth/__init__.py +0 -0
  3. sticker_convert/auth/auth_base.py +19 -0
  4. sticker_convert/auth/auth_discord.py +149 -0
  5. sticker_convert/{utils/auth/get_kakao_auth.py → auth/auth_kakao_android_login.py} +331 -300
  6. sticker_convert/auth/auth_kakao_desktop_login.py +327 -0
  7. sticker_convert/auth/auth_kakao_desktop_memdump.py +281 -0
  8. sticker_convert/{utils/auth/get_line_auth.py → auth/auth_line.py} +98 -80
  9. sticker_convert/auth/auth_signal.py +139 -0
  10. sticker_convert/auth/auth_telethon.py +161 -0
  11. sticker_convert/auth/auth_viber.py +250 -0
  12. sticker_convert/auth/telegram_api.py +736 -0
  13. sticker_convert/cli.py +623 -509
  14. sticker_convert/converter.py +1093 -962
  15. sticker_convert/definitions.py +11 -0
  16. sticker_convert/downloaders/download_band.py +111 -0
  17. sticker_convert/downloaders/download_base.py +171 -130
  18. sticker_convert/downloaders/download_discord.py +92 -0
  19. sticker_convert/downloaders/download_kakao.py +417 -255
  20. sticker_convert/downloaders/download_line.py +484 -472
  21. sticker_convert/downloaders/download_ogq.py +80 -0
  22. sticker_convert/downloaders/download_signal.py +108 -92
  23. sticker_convert/downloaders/download_telegram.py +56 -130
  24. sticker_convert/downloaders/download_viber.py +121 -95
  25. sticker_convert/gui.py +788 -795
  26. sticker_convert/gui_components/frames/comp_frame.py +180 -165
  27. sticker_convert/gui_components/frames/config_frame.py +156 -113
  28. sticker_convert/gui_components/frames/control_frame.py +32 -30
  29. sticker_convert/gui_components/frames/cred_frame.py +232 -162
  30. sticker_convert/gui_components/frames/input_frame.py +139 -137
  31. sticker_convert/gui_components/frames/output_frame.py +112 -110
  32. sticker_convert/gui_components/frames/right_clicker.py +25 -23
  33. sticker_convert/gui_components/windows/advanced_compression_window.py +757 -715
  34. sticker_convert/gui_components/windows/base_window.py +7 -2
  35. sticker_convert/gui_components/windows/discord_get_auth_window.py +79 -0
  36. sticker_convert/gui_components/windows/kakao_get_auth_window.py +511 -186
  37. sticker_convert/gui_components/windows/line_get_auth_window.py +94 -102
  38. sticker_convert/gui_components/windows/signal_get_auth_window.py +84 -135
  39. sticker_convert/gui_components/windows/viber_get_auth_window.py +168 -0
  40. sticker_convert/ios-message-stickers-template/.github/FUNDING.yml +3 -3
  41. sticker_convert/ios-message-stickers-template/.gitignore +0 -0
  42. sticker_convert/ios-message-stickers-template/README.md +10 -10
  43. sticker_convert/ios-message-stickers-template/stickers/Info.plist +43 -43
  44. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Info.plist +31 -31
  45. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Contents.json +6 -6
  46. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Contents.json +20 -20
  47. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Contents.json +9 -9
  48. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 1.sticker/Sticker 1.png +0 -0
  49. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Contents.json +9 -9
  50. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 2.sticker/Sticker 2.png +0 -0
  51. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Contents.json +9 -9
  52. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Sticker 3.sticker/Sticker 3.png +0 -0
  53. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/App-Store-1024x1024pt.png +0 -0
  54. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Contents.json +91 -91
  55. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-App-Store-1024x768pt.png +0 -0
  56. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-67x50pt@2x.png +0 -0
  57. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPad-Pro-74x55pt@2x.png +0 -0
  58. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@2x.png +0 -0
  59. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages-iPhone-60x45pt@3x.png +0 -0
  60. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@2x.png +0 -0
  61. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages27x20pt@3x.png +0 -0
  62. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@2x.png +0 -0
  63. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Messages32x24pt@3x.png +0 -0
  64. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPad-Settings-29pt@2x.png +0 -0
  65. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-Settings-29pt@3x.png +0 -0
  66. sticker_convert/ios-message-stickers-template/stickers StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/iPhone-settings-29pt@2x.png +0 -0
  67. sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.pbxproj +364 -364
  68. sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -7
  69. sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -8
  70. sticker_convert/ios-message-stickers-template/stickers.xcodeproj/project.xcworkspace/xcuserdata/niklaspeterson.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  71. sticker_convert/ios-message-stickers-template/stickers.xcodeproj/xcuserdata/niklaspeterson.xcuserdatad/xcschemes/xcschememanagement.plist +14 -14
  72. sticker_convert/job.py +279 -179
  73. sticker_convert/job_option.py +15 -2
  74. sticker_convert/locales/en_US/LC_MESSAGES/base.mo +0 -0
  75. sticker_convert/locales/ja_JP/LC_MESSAGES/base.mo +0 -0
  76. sticker_convert/locales/zh_CN/LC_MESSAGES/base.mo +0 -0
  77. sticker_convert/locales/zh_TW/LC_MESSAGES/base.mo +0 -0
  78. sticker_convert/py.typed +0 -0
  79. sticker_convert/resources/NotoColorEmoji.ttf +0 -0
  80. sticker_convert/resources/compression.json +220 -16
  81. sticker_convert/resources/emoji.json +527 -77
  82. sticker_convert/resources/help.ja_JP.json +88 -0
  83. sticker_convert/resources/help.json +24 -10
  84. sticker_convert/resources/help.zh_CN.json +88 -0
  85. sticker_convert/resources/help.zh_TW.json +88 -0
  86. sticker_convert/resources/input.ja_JP.json +74 -0
  87. sticker_convert/resources/input.json +121 -71
  88. sticker_convert/resources/input.zh_CN.json +74 -0
  89. sticker_convert/resources/input.zh_TW.json +74 -0
  90. sticker_convert/resources/memdump_linux.sh +25 -0
  91. sticker_convert/resources/memdump_windows.ps1 +8 -0
  92. sticker_convert/resources/output.ja_JP.json +38 -0
  93. sticker_convert/resources/output.json +24 -0
  94. sticker_convert/resources/output.zh_CN.json +38 -0
  95. sticker_convert/resources/output.zh_TW.json +38 -0
  96. sticker_convert/uploaders/compress_wastickers.py +186 -156
  97. sticker_convert/uploaders/upload_base.py +44 -35
  98. sticker_convert/uploaders/upload_signal.py +218 -173
  99. sticker_convert/uploaders/upload_telegram.py +353 -388
  100. sticker_convert/uploaders/upload_viber.py +178 -0
  101. sticker_convert/uploaders/xcode_imessage.py +295 -285
  102. sticker_convert/utils/callback.py +238 -6
  103. sticker_convert/utils/chrome_remotedebug.py +219 -0
  104. sticker_convert/utils/chromiums/linux.py +52 -0
  105. sticker_convert/utils/chromiums/osx.py +68 -0
  106. sticker_convert/utils/chromiums/windows.py +45 -0
  107. sticker_convert/utils/emoji.py +28 -0
  108. sticker_convert/utils/files/json_resources_loader.py +24 -19
  109. sticker_convert/utils/files/metadata_handler.py +8 -7
  110. sticker_convert/utils/files/run_bin.py +1 -1
  111. sticker_convert/utils/media/codec_info.py +99 -67
  112. sticker_convert/utils/media/format_verify.py +33 -20
  113. sticker_convert/utils/process.py +231 -0
  114. sticker_convert/utils/translate.py +108 -0
  115. sticker_convert/utils/url_detect.py +40 -33
  116. sticker_convert/version.py +1 -1
  117. {sticker_convert-2.8.12.dist-info → sticker_convert-2.17.0.0.dist-info}/METADATA +189 -96
  118. sticker_convert-2.17.0.0.dist-info/RECORD +138 -0
  119. {sticker_convert-2.8.12.dist-info → sticker_convert-2.17.0.0.dist-info}/WHEEL +1 -1
  120. sticker_convert/utils/auth/get_signal_auth.py +0 -129
  121. sticker_convert-2.8.12.dist-info/RECORD +0 -101
  122. {sticker_convert-2.8.12.dist-info → sticker_convert-2.17.0.0.dist-info}/entry_points.txt +0 -0
  123. {sticker_convert-2.8.12.dist-info → sticker_convert-2.17.0.0.dist-info/licenses}/LICENSE +0 -0
  124. {sticker_convert-2.8.12.dist-info → sticker_convert-2.17.0.0.dist-info}/top_level.txt +0 -0
@@ -1,24 +1,24 @@
1
- #!/usr/bin/env python3
2
-
3
-
4
- def main() -> None:
5
- import multiprocessing
6
- import sys
7
-
8
- from sticker_convert.version import __version__
9
-
10
- multiprocessing.freeze_support()
11
- print(f"sticker-convert {__version__}")
12
- if len(sys.argv) == 1:
13
- print("Launching GUI...")
14
- from sticker_convert.gui import GUI
15
-
16
- GUI().gui()
17
- else:
18
- from sticker_convert.cli import CLI
19
-
20
- CLI().cli()
21
-
22
-
23
- if __name__ == "__main__":
24
- main()
1
+ #!/usr/bin/env python3
2
+
3
+
4
+ def main() -> None:
5
+ import multiprocessing
6
+ import sys
7
+
8
+ from sticker_convert.utils.translate import I
9
+
10
+ multiprocessing.freeze_support()
11
+
12
+ if len(sys.argv) == 1:
13
+ print(I("Launching GUI..."))
14
+ from sticker_convert.gui import GUI
15
+
16
+ GUI().gui()
17
+ else:
18
+ from sticker_convert.cli import CLI
19
+
20
+ CLI().cli()
21
+
22
+
23
+ if __name__ == "__main__":
24
+ main()
File without changes
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env python3
2
+ from typing import Optional
3
+
4
+ from sticker_convert.job_option import CredOption
5
+ from sticker_convert.utils.callback import CallbackCli, CallbackProtocol
6
+
7
+
8
+ class AuthBase:
9
+ def __init__(
10
+ self,
11
+ opt_cred: CredOption,
12
+ cb: Optional[CallbackProtocol] = None,
13
+ ) -> None:
14
+ self.opt_cred = opt_cred
15
+ self.cb: CallbackProtocol
16
+ if cb is None:
17
+ self.cb = CallbackCli()
18
+ else:
19
+ self.cb = cb
@@ -0,0 +1,149 @@
1
+ #!/usr/bin/env python3
2
+ import json
3
+ import os
4
+ import platform
5
+ import shutil
6
+ import time
7
+ from pathlib import Path
8
+ from typing import Any, Optional, Tuple
9
+ from urllib.parse import urlparse
10
+
11
+ from sticker_convert.auth.auth_base import AuthBase
12
+ from sticker_convert.definitions import CONFIG_DIR
13
+ from sticker_convert.utils.chrome_remotedebug import CRD
14
+ from sticker_convert.utils.process import find_pid_by_name, killall
15
+ from sticker_convert.utils.translate import I
16
+
17
+
18
+ class AuthDiscord(AuthBase):
19
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
20
+ self.OK_MSG = I("Got token successfully:\ntoken={}")
21
+ self.FAIL_MSG = I("Failed to get token")
22
+ super().__init__(*args, **kwargs)
23
+ chromedriver_download_dir = CONFIG_DIR / "bin"
24
+ os.makedirs(chromedriver_download_dir, exist_ok=True)
25
+
26
+ self.chromedriver_download_dir = chromedriver_download_dir
27
+
28
+ def get_discord_bin_path(self) -> Optional[str]:
29
+ discord_bin: Optional[str]
30
+ if platform.system() == "Windows":
31
+ discord_win_dirs: Tuple[Tuple[str, str], ...]
32
+ discord_win_dirs = (
33
+ (
34
+ os.path.expandvars("%localappdata%/Discord"),
35
+ "Discord.exe",
36
+ ),
37
+ (
38
+ os.path.expandvars("%localappdata%/DiscordCanary"),
39
+ "DiscordCanary.exe",
40
+ ),
41
+ (
42
+ os.path.expandvars("%localappdata%/DiscordPTB"),
43
+ "DiscordPTB.exe",
44
+ ),
45
+ )
46
+ for discord_dir, discord_bin in discord_win_dirs:
47
+ app_dir: Optional[str] = None
48
+ chrome_path: Optional[str] = None
49
+ if os.path.isdir(discord_dir) is False:
50
+ continue
51
+ for i in [j for j in os.listdir(discord_dir) if j.startswith("app-")]:
52
+ app_dir = os.path.join(discord_dir, i)
53
+ chrome_path = os.path.join(app_dir, discord_bin)
54
+ if os.path.isfile(chrome_path):
55
+ return chrome_path
56
+ else:
57
+ discord_dirs: Tuple[Optional[str], ...]
58
+ if platform.system() == "Darwin":
59
+ discord_dirs = (
60
+ "/Applications/Discord.app/Contents/MacOS/Discord",
61
+ "/Applications/Discord Canary.app/Contents/MacOS/Discord Canary",
62
+ "/Applications/Discord PTB.app/Contents/MacOS/Discord PTB",
63
+ )
64
+ else:
65
+ discord_dirs = (
66
+ shutil.which("discord"),
67
+ shutil.which("discord-canary"),
68
+ shutil.which("discord-ptb"),
69
+ )
70
+ for discord_bin in discord_dirs:
71
+ if discord_bin is not None and os.path.isfile(discord_bin):
72
+ return discord_bin
73
+ return None
74
+
75
+ def get_cred(self) -> Tuple[Optional[str], str]:
76
+ msg = I("Getting Discord authorization token...")
77
+ self.cb.put(("msg_dynamic", (msg,), None))
78
+
79
+ using_discord_app = False
80
+ chrome_path = self.get_discord_bin_path()
81
+ if chrome_path is not None:
82
+ using_discord_app = True
83
+ else:
84
+ chrome_path = CRD.get_chromium_path()
85
+ if chrome_path is None:
86
+ self.cb.put(("msg_dynamic", (None,), None))
87
+ return (
88
+ None,
89
+ I("Please install Discord Desktop or Chrome/Chromium and try again"),
90
+ )
91
+
92
+ token = None
93
+
94
+ if find_pid_by_name(Path(chrome_path).name):
95
+ response = self.cb.put(
96
+ (
97
+ "ask_bool",
98
+ (
99
+ I("All {} will be closed. Continue?").format(
100
+ Path(chrome_path).name
101
+ ),
102
+ ),
103
+ None,
104
+ )
105
+ )
106
+ if response is True:
107
+ killall(Path(chrome_path).name.lower())
108
+ else:
109
+ return None, self.FAIL_MSG
110
+
111
+ crd = CRD(chrome_path)
112
+ while True:
113
+ crd.connect()
114
+ if using_discord_app is False:
115
+ crd.navigate("https://discord.com/channels/@me")
116
+ break
117
+ else:
118
+ curr_url = crd.get_curr_url()
119
+ netloc = urlparse(curr_url).netloc
120
+ if netloc in ("discordapp.com", "discord.com"):
121
+ break
122
+ time.sleep(1)
123
+
124
+ while True:
125
+ try:
126
+ if using_discord_app:
127
+ r = crd.exec_js(
128
+ "(webpackChunkdiscord_app.push([[''],{},e=>{m=[];for(let c in e.c)m.push(e.c[c])}]),m).find(m=>m?.exports?.default?.getToken!==void 0).exports.default.getToken();"
129
+ )
130
+ else:
131
+ r = crd.exec_js(
132
+ "const iframe=document.createElement('iframe');JSON.parse(document.body.appendChild(iframe).contentWindow.localStorage.token);"
133
+ )
134
+ except RuntimeError:
135
+ break
136
+ if (
137
+ json.loads(r).get("result", {}).get("result", {}).get("type", "")
138
+ == "string"
139
+ ):
140
+ token = json.loads(r)["result"]["result"]["value"]
141
+ break
142
+ time.sleep(1)
143
+ crd.close()
144
+
145
+ self.cb.put(("msg_dynamic", (None,), None))
146
+ if token is None:
147
+ return None, self.FAIL_MSG
148
+
149
+ return token, self.OK_MSG.format(token)