Как вывести название файла через ссылку с Яндекс диска?
Пишу телеграмм-бота на aiogram. Задача: по ссылке на яндекс-диск, которую отправил пользователь, вывести в консоль Python название файла, не скачивая его. Например, когда ссылка вставляется в ТГ, то в сообщении сразу подсвечивается имя файла. Как он это парсит?
При отправленном сообщении:
Пробовала через bs4, но капча не даёт узнать нужную строку.
response1 = requests.get(url)
page1 = bs4.BeautifulSoup(response1.content, 'html.parser')
div_1 = page1.find("div", {"class": "file-name"})
item1 = div_1.get_text()
print(div_1)
Ответы (1 шт):
Автор решения: LHARTZ
→ Ссылка
Получилось
Помогло сохраннение страницы не просто по ссылке, а через API яндекса
def get_filename(link):
ya_api = 'https://cloud-api.yandex.net/v1/disk/public/resources/download?'
url = ya_api + urlencode(dict(public_key=link))
response = requests.get(url)
page = bs4.BeautifulSoup(response.content, 'html.parser')
# Теперь нужно извлечь из страницы заветный filename
# Не нашла, как парсить по meta-тегам, но помогло старое-доброе [start:end]
page = str(page)
start = page.find('filename=') # обрезаем с нужного места
end = page.rfind('disposition') # обрезаем конец
page = page[start:end]
# Декодируем и убираем лишнее
name = unquote(page)
name = name.replace('filename=', '')
name = name.replace('.jpg&', '')
name = name.replace('.ai&', '')
return name