diff options
Diffstat (limited to 'sticker/stickerimport.py')
| -rw-r--r-- | sticker/stickerimport.py | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sticker/stickerimport.py b/sticker/stickerimport.py index 534f3c4..54cab76 100644 --- a/sticker/stickerimport.py +++ b/sticker/stickerimport.py @@ -13,7 +13,7 @@ # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. -from typing import Dict +from typing import Dict, Tuple import argparse import asyncio import os.path @@ -29,7 +29,7 @@ from telethon.tl.types.messages import StickerSet as StickerSetFull from .lib import matrix, util -async def reupload_document(client: TelegramClient, document: Document) -> matrix.StickerInfo: +async def reupload_document(client: TelegramClient, document: Document) -> Tuple[matrix.StickerInfo, bytes]: print(f"Reuploading {document.id}", end="", flush=True) data = await client.download_media(document, file=bytes) print(".", end="", flush=True) @@ -37,7 +37,7 @@ async def reupload_document(client: TelegramClient, document: Document) -> matri print(".", end="", flush=True) mxc = await matrix.upload(data, "image/png", f"{document.id}.png") print(".", flush=True) - return util.make_sticker(mxc, width, height, len(data)) + return util.make_sticker(mxc, width, height, len(data)), data def add_meta(document: Document, info: matrix.StickerInfo, pack: StickerSetFull) -> None: @@ -75,15 +75,17 @@ async def reupload_pack(client: TelegramClient, pack: StickerSetFull, output_dir except FileNotFoundError: pass + stickers_data: Dict[str, bytes] = {} reuploaded_documents: Dict[int, matrix.StickerInfo] = {} for document in pack.documents: try: reuploaded_documents[document.id] = already_uploaded[document.id] print(f"Skipped reuploading {document.id}") except KeyError: - reuploaded_documents[document.id] = await reupload_document(client, document) + reuploaded_documents[document.id], data = await reupload_document(client, document) # Always ensure the body and telegram metadata is correct add_meta(document, reuploaded_documents[document.id], pack) + stickers_data[reuploaded_documents[document.id]["url"]] = data for sticker in pack.packs: if not sticker.emoticon: @@ -107,6 +109,7 @@ async def reupload_pack(client: TelegramClient, pack: StickerSetFull, output_dir }, pack_file, ensure_ascii=False) print(f"Saved {pack.set.title} as {pack.set.short_name}.json") + util.add_thumbnails(list(reuploaded_documents.values()), stickers_data, output_dir) util.add_to_index(os.path.basename(pack_path), output_dir) |
