mirror of
https://github.com/Araon/Meido.git
synced 2025-02-20 11:13:20 +08:00
Worked on bot
This commit is contained in:
parent
6da5955991
commit
3d342c9e2f
@ -4,3 +4,6 @@
|
|||||||
Telegram bot to search and download anime from various websites.
|
Telegram bot to search and download anime from various websites.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
29
architechture.md
Normal file
29
architechture.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Requirements
|
||||||
|
|
||||||
|
* Send anime to user
|
||||||
|
* downaload anime from website and upload to telegram
|
||||||
|
* provide data related to animes
|
||||||
|
|
||||||
|
# Data Model
|
||||||
|
|
||||||
|
* DB Models
|
||||||
|
* seriesName
|
||||||
|
- id *Primary Key*
|
||||||
|
- Series_name
|
||||||
|
- Season_id
|
||||||
|
- Episode_id
|
||||||
|
|
||||||
|
# Happy Path
|
||||||
|
* /get and /getll
|
||||||
|
1. call a function videoFetcher(user_input).
|
||||||
|
2. the videoFetcher will check in mapping db if found return file_id
|
||||||
|
3. if the not found in mapping db will call downloadVideoService and it will return file_path,file_name,duration
|
||||||
|
4. then uploadVideoService will take the file_path as input return file_id after uploading
|
||||||
|
5. the file_id will be then returned
|
||||||
|
|
||||||
|
# Expansion
|
||||||
|
|
||||||
|
* Send anime directly to user who has subscribed to them
|
||||||
|
* Pre-download animes that are popular
|
||||||
|
* watched list
|
||||||
|
* recomendation
|
4
downloaderService/main.py
Normal file
4
downloaderService/main.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
from animdl import *
|
||||||
|
|
||||||
|
def downloadVideo():
|
||||||
|
pass
|
@ -1,19 +1,18 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
#https://sudonull.com/post/62683-Telegram-bots-Uploading-files-larger-than-50mb
|
#https://sudonull.com/post/62683-Telegram-bots-Uploading-files-larger-than-50mb
|
||||||
'''
|
|
||||||
The function of this uploader is to upload a given file to @animedatabase_bot
|
|
||||||
and get the file_id from the the uploaded file.
|
|
||||||
|
|
||||||
|
'''
|
||||||
fun facts i just came accross
|
fun facts i just came accross
|
||||||
|
|
||||||
the .send_file() function will have to send the file to the bot itself
|
the .send_file() function will have to send the file to the bot that will be serving the user,
|
||||||
Just uploading the file to the server via upload , getting file_id and passing it to the bot will not work,
|
Just uploading the file to the server via upload , getting file_id and passing it to the bot will not work,
|
||||||
file_id only works inside the chat in which it was created -
|
file_id only works inside the chat in which it was created.
|
||||||
so that our bot can send the file to the user by file_id -
|
So that our bot can send the file to the user by file_id
|
||||||
the agent must send him this file
|
the agent must send the bot this file
|
||||||
then the bot will receive own file_id for this file and will be able to dispose of it.
|
then the bot will receive own file_id for this file and will be able to dispose of it.
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
from telethon import TelegramClient
|
from telethon import TelegramClient
|
||||||
from telethon.tl.types import DocumentAttributeVideo
|
from telethon.tl.types import DocumentAttributeVideo
|
||||||
import asyncio
|
import asyncio
|
||||||
@ -37,14 +36,22 @@ bot_name = configdata.get('bot_name')
|
|||||||
|
|
||||||
|
|
||||||
def callback(current, total):
|
def callback(current, total):
|
||||||
|
# for upload progression
|
||||||
print('Uploaded: {:.2%}'.format(current / total))
|
print('Uploaded: {:.2%}'.format(current / total))
|
||||||
|
|
||||||
async def uploadVideo(bot_name,file_path,file_name,chat_id,object_id):
|
|
||||||
|
'''
|
||||||
|
bot_name = the actual bot name
|
||||||
|
file_path = where the file is downloaded
|
||||||
|
chat_id = this is the end user chat_id, sent over caption to bot, so it can parse and send it to the correct user
|
||||||
|
object_id = an internal id used for mapping of file_id and filename stored in the server(for optimization).
|
||||||
|
'''
|
||||||
|
async def uploadVideo(bot_name,file_path,chat_id,object_id):
|
||||||
async with TelegramClient(entity, api_id, api_hash) as client:
|
async with TelegramClient(entity, api_id, api_hash) as client:
|
||||||
await client.send_file(
|
await client.send_file(
|
||||||
str(bot_name),
|
str(bot_name),
|
||||||
file_path,
|
file_path,
|
||||||
caption=str(chat_id + ':' + object_id + ':' + file_name),
|
caption=str(chat_id + ':' + object_id),
|
||||||
attributes=[DocumentAttributeVideo(0,0,0)],
|
attributes=[DocumentAttributeVideo(0,0,0)],
|
||||||
progress_callback=callback,
|
progress_callback=callback,
|
||||||
part_size_kb=512,
|
part_size_kb=512,
|
||||||
@ -55,14 +62,11 @@ async def uploadVideo(bot_name,file_path,file_name,chat_id,object_id):
|
|||||||
|
|
||||||
async def main(argv):
|
async def main(argv):
|
||||||
file_path = argv[1]
|
file_path = argv[1]
|
||||||
file_name = argv[2]
|
chat_id = argv[2]
|
||||||
chat_id = argv[3]
|
object_id = argv[3]
|
||||||
object_id = argv[4]
|
|
||||||
|
|
||||||
|
await uploadVideo(bot_name,file_path,chat_id,object_id)
|
||||||
await uploadVideo(bot_name,file_path,file_name,chat_id,object_id)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
import sys
|
import sys
|
Loading…
x
Reference in New Issue
Block a user