Size: a a a

2020 January 10

S|

Sofia | Bo in aiogram [ru]
that guy
на скачку вроде ограничений нет, но при заливке например около 60-100 фото в минута отваливается минут через 10
а их придется качать на сервер сначала и потом заливать ?
источник

S|

Sofia | Bo in aiogram [ru]
Gabben
под красотой вы подразумевали в Confirmation отправлять не сами фотографии, а превью?
там просто весь бот в 1 меню, оно постоянно редактируется,
и нельзя добавить фото/file к нему, поэтому появилась идея с линками
источник

tg

that guy in aiogram [ru]
что то на подобии

from telegraph import upload

def upload_to_telegraph(file):
   with open(file, 'rb') as f:
           path = upload.upload_file(f, proxies)
   return f'https://telegra.ph{path[0]}'
источник

tg

that guy in aiogram [ru]
такое же делал и на aiograph , сейчас найду
источник

S|

Sofia | Bo in aiogram [ru]
that guy
что то на подобии

from telegraph import upload

def upload_to_telegraph(file):
   with open(file, 'rb') as f:
           path = upload.upload_file(f, proxies)
   return f'https://telegra.ph{path[0]}'
спасибо большое! протестирую!
а файлы светятся в нете, или только с линком ?
источник

G

Gabben in aiogram [ru]
Sofia | Bo
спасибо большое! протестирую!
а файлы светятся в нете, или только с линком ?
засветятся если кто нибудь скормит их поисковику
источник

G

Gabben in aiogram [ru]
Sofia | Bo
там просто весь бот в 1 меню, оно постоянно редактируется,
и нельзя добавить фото/file к нему, поэтому появилась идея с линками
1 меню уже не 1, так как вы принимаете фотки
источник

S|

Sofia | Bo in aiogram [ru]
Gabben
1 меню уже не 1, так как вы принимаете фотки
я принимаю фотки, и потом сразу удаляю и редактирую меню на принятие второй задачи
источник

G

Gabben in aiogram [ru]
ну ладно, история про фломастеры
остаюсь при своем мнении, что это ненужные операции по скачиванию/загрузке фоток)
источник

tg

that guy in aiogram [ru]
from aiograph import Telegraph
telegraph = Telegraph()

   async def _download_file(self) -> list:
       # Функция принимает сообщение, вытягивает из него file_id, загружает его на хостинг, возвращает ссылку
       await bot.send_chat_action(self.message.chat.id, action=ChatActions.UPLOAD_PHOTO)
       file_info = await bot.get_file(self.message.photo[len(self.message.photo) - 1].file_id)
       file_id: str = file_info.file_id
       downloaded_file = await bot.download_file_by_id(file_id)
       src: str = './tmp/' + file_info.file_path
       async with aiofiles.open(src, 'wb') as new_file:
           await new_file.write(downloaded_file.read())
       file_url: str = (await telegraph.upload(src, full=True))[0]
       await aiofiles.os.remove(src)
       # await self.message.reply(file_url)
       return [file_id, file_url]
источник

S|

Sofia | Bo in aiogram [ru]
that guy
from aiograph import Telegraph
telegraph = Telegraph()

   async def _download_file(self) -> list:
       # Функция принимает сообщение, вытягивает из него file_id, загружает его на хостинг, возвращает ссылку
       await bot.send_chat_action(self.message.chat.id, action=ChatActions.UPLOAD_PHOTO)
       file_info = await bot.get_file(self.message.photo[len(self.message.photo) - 1].file_id)
       file_id: str = file_info.file_id
       downloaded_file = await bot.download_file_by_id(file_id)
       src: str = './tmp/' + file_info.file_path
       async with aiofiles.open(src, 'wb') as new_file:
           await new_file.write(downloaded_file.read())
       file_url: str = (await telegraph.upload(src, full=True))[0]
       await aiofiles.os.remove(src)
       # await self.message.reply(file_url)
       return [file_id, file_url]
интересно,
тоже попробую, спасибо!
источник

tg

that guy in aiogram [ru]
может и криво, но работало, это метод класса, объект message в него передаётся при инициализации, думаю понятно
источник

S|

Sofia | Bo in aiogram [ru]
получается что прямого метода сделать линк используя только file id нет ?
источник

S|

Sofia | Bo in aiogram [ru]
that guy
может и криво, но работало, это метод класса, объект message в него передаётся при инициализации, думаю понятно
да - да, все четко - ясно 🙂
источник

tg

that guy in aiogram [ru]
Sofia | Bo
получается что прямого метода сделать линк используя только file id нет ?
file_id привязан к боту, получить доступ к файлу по нему не может ни кто кроме бота.... вроде
источник

S|

Sofia | Bo in aiogram [ru]
понятно,
да, значит обхода этому методу нет: https://aiogram.readthedocs.io/en/latest/telegram/types/file.html#aiogram.types.file.File чтобы не светить token
источник

G

Gabben in aiogram [ru]
that guy
from aiograph import Telegraph
telegraph = Telegraph()

   async def _download_file(self) -> list:
       # Функция принимает сообщение, вытягивает из него file_id, загружает его на хостинг, возвращает ссылку
       await bot.send_chat_action(self.message.chat.id, action=ChatActions.UPLOAD_PHOTO)
       file_info = await bot.get_file(self.message.photo[len(self.message.photo) - 1].file_id)
       file_id: str = file_info.file_id
       downloaded_file = await bot.download_file_by_id(file_id)
       src: str = './tmp/' + file_info.file_path
       async with aiofiles.open(src, 'wb') as new_file:
           await new_file.write(downloaded_file.read())
       file_url: str = (await telegraph.upload(src, full=True))[0]
       await aiofiles.os.remove(src)
       # await self.message.reply(file_url)
       return [file_id, file_url]
https://github.com/aiogram/aiograph

from typing import Union


from aiograph import Telegraph
from aiogram.types import *

telegraph = Telegraph()

async def upload(file: Union[PhotoSize, Audio, Document, Video, Animation, Voice, VideoNote]):
   return await telegraph.upload_from_url(await file.get_url())
источник

ЮЧ

Юрий 👨‍🔬 Чебышев in aiogram [ru]
А как уникальный файл айди из новой версии работает?
По нему есть линк из тг?
источник

G

Gabben in aiogram [ru]
Юрий 👨‍🔬 Чебышев
А как уникальный файл айди из новой версии работает?
По нему есть линк из тг?
все в доке
источник

ЮЧ

Юрий 👨‍🔬 Чебышев in aiogram [ru]
Ну я с телефона, и мне такое не надо)
источник