Skip to content

Commit

Permalink
feat: support .t2o file
Browse files Browse the repository at this point in the history
  • Loading branch information
hlf20010508 committed Jun 16, 2024
1 parent 698a7e1 commit 6640c9a
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 9 deletions.
62 changes: 62 additions & 0 deletions modules/dot_t2o.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
"""
:project: telegram-onedrive
:author: L-ING
:copyright: (C) 2024 L-ING <[email protected]>
:license: MIT, see LICENSE for more details.
"""

from modules.client import tg_client
from modules.utils import delete_message

KEYS = ["link", "url"]


async def parse_t2o_to_dict(content):
result = {}
for key in KEYS:
result[key] = []
current_key = ""

for line in content.splitlines():
line.strip()

if (key := line.lstrip("[").rstrip("]")) in KEYS:
current_key = key
elif line and current_key == "link":
line = line.split()
if len(line) == 1:
result[current_key].append({"content": line[0], "range": 1})
elif len(line) == 2:
result[current_key].append({"content": line[0], "range": int(line[1])})
elif line and current_key == "url":
result[current_key].append(line)

return result


async def parse_t2o(event, message):
content = (await message.download_media(file=bytes)).decode()
t2o_dict = await parse_t2o_to_dict(content)
print(t2o_dict)

for key in KEYS:
if key == "link":
for link in t2o_dict[key]:
if link["range"] == 1:
await tg_client.send_message(
event.chat_id,
message=link["content"],
)
elif link["range"] > 1:
await tg_client.send_message(
event.chat_id,
message="/links %s %d" % (link["content"], link["range"]),
)
elif key == "url":
for url in t2o_dict[key]:
await tg_client.send_message(
event.chat_id,
message=f"/url {url}",
)

await delete_message(event)
23 changes: 14 additions & 9 deletions modules/handlers/transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from modules.log import logger
from modules.transfer import multi_parts_uploader
from modules.onedrive.utils import preprocess_tg_file_name, use_id_ext_name
from modules.dot_t2o import parse_t2o


@tg_bot.on(events.NewMessage(incoming=True, from_users=tg_user_name))
Expand All @@ -37,15 +38,19 @@ async def transfer_handler(event):
try:
if "document" in event.media.to_dict():
name = preprocess_tg_file_name(event)
status_message = await Status_Message.create(event)
callback = Callback(event, status_message)
response_dict = await multi_parts_uploader(
message.media.document, name, progress_callback=callback
)
await status_message.finish(
path=os.path.join(last_remote_root_path, response_dict["name"]),
size=event.file.size,
)

if not name.endswith(".t2o"):
status_message = await Status_Message.create(event)
callback = Callback(event, status_message)
response_dict = await multi_parts_uploader(
message.media.document, name, progress_callback=callback
)
await status_message.finish(
path=os.path.join(last_remote_root_path, response_dict["name"]),
size=event.file.size,
)
else:
await parse_t2o(event, message)
elif "photo" in event.media.to_dict():
name = use_id_ext_name(event)
status_message = await Status_Message.create(event)
Expand Down

0 comments on commit 6640c9a

Please sign in to comment.