Загрузка файла на файловый обменник

Рейтинг: 1Ответов: 1Опубликовано: 10.06.2023

подскажите как загрузить файл на файловый обменник? например на: imgur.com/upload или любой другой файловый обменник, по итогу хочу получить страницу с загруженным файлом, чтобы спарсить и получить прямую ссылку на фото. Пытался двумя вариантами, но не выходит. По возможности, решение нужно без регистрации и api. Первая проба:

import requests
files = {"file-input": ("/test/1111.png", open("/test/1111.png", "rb"))}
r = requests.post("https://imgur.com/upload", files=files)
print(r.text)

вторая проба:

import requests
multiple_files = [
    ('images', ('/test/1111.png', open('/test/1111.png', 'rb'), 'image/png'))
]
resp = requests.post('https://imgur.com/upload', files=multiple_files)
print(resp.text)

Поискав кучу хостингов изображений, понял что json уже отходит. И наверно без selenium не обойтись. Чтобы просто имитировать нажатия и после спарсить прямую ссылку. Не понял только как в ней понять, что файл загружен успешно и можно парсить ссылку?

Ответы

▲ 1

Можна попробовать использовать file.io, в целом Ваше решение сохранится (я лишь немного изменил его структуру) и не нужно будет использовать API или производить регистрацию. Загруженные файлы хранятся 14 дней, возможно есть и другие ограничения, но я сильно тестированием не занимался, лишь проверил на нескольких фотографиях :)

import requests

file_path = "/test/1111.png"
url = "https://file.io/"

with open(file_path, 'rb') as file:
    files = {'file': file}
    response = requests.post(url, files=files)

response_json = response.json() # Это обший вывод, там пишется статус загрузки, что загружается и все такое, можете потестировать print(response_json), если Вам это нужно.
file_link = response_json.get('link', 'No link found') # Вывод конкретно ссылки на загруженный файл.
print(file_link)

Успехов в Ваших проектах :)