API для скачивания из Reddit
Посты с Reddit, разобранные в прямые ссылки. У видео возвращаются все качества, которые закодировал Reddit, и отдельно звуковая дорожка.
https://api.gapi.dev/redditТребуется заголовок X-API-Key · ответ в JSON
Параметры
urlобязательныйstringПубличный пост Reddit: работает и reddit.com/r/…/comments/…, и короткие ссылки redd.it.
напр. https://www.reddit.com/r/IndieDev/comments/10hgvjq/vr_has_been_punishing_for_particlesОтветы
{
"platform": "reddit",
"type": "video",
"title": "VR has been punishing for particles performance-wise…",
"author": "peterfrance",
"thumbnail": "https://external-preview.redd.it/…",
"duration": 24,
"media": [
{ "type": "video", "url": "https://v.redd.it/…/DASH_1080.mp4", "quality": "1080p", "ext": "mp4" },
{ "type": "video", "url": "https://v.redd.it/…/DASH_720.mp4", "quality": "720p AVC", "ext": "mp4" },
{ "type": "audio", "url": "https://v.redd.it/…/DASH_audio.mp4", "quality": "126kbps", "ext": "mp4" }
]
}Попробовать
https://api.gapi.dev/redditcurl -G 'https://api.gapi.dev/reddit' \
--data-urlencode 'url=https://www.reddit.com/r/IndieDev/comments/10hgvjq/vr_has_been_punishing_for_particles' \
-H 'X-API-Key: YOUR_KEY'Что даёт каждая ссылка
| Вы отправляете | type | media содержит |
|---|---|---|
| пост с видео | video | все качества и звук отдельным элементом |
| пост с изображением | image | изображение в полном разрешении |
| пост-галерея | album | все изображения из него |
Чего он не делает
Ленты сабреддитов, ветки комментариев, страницы пользователей и всё, что лежит в закрытом или карантинном сабреддите. Эндпоинт принимает ссылку на один пост.
Разбор по полям — на странице формы ответа.
Как выбрать качество и звук
Reddit отдаёт каждое качество отдельным mp4 без звука, а звук приходит одним элементом с типом audio. Возьмите самое высокое видео и дорожку, затем склейте их. Значение quality это подпись вроде 720p AVC, а не число, поэтому берите цифры до буквы p.
data = response.json()
video = max(
(m for m in data["media"] if m["type"] == "video" and m["quality"][0].isdigit()),
key=lambda m: int(m["quality"].split("p")[0]),
)
audio = next((m for m in data["media"] if m["type"] == "audio"), None)
# Reddit keeps them apart; ffmpeg joins them without re-encoding.
# ffmpeg -i video.mp4 -i audio.mp4 -c copy out.mp4Примеры кода
Один и тот же запрос на четырёх языках. Подставьте ключ из личного кабинета, и код запустится как есть.
curl -G 'https://api.gapi.dev/reddit' \
--data-urlencode 'url=https://www.reddit.com/r/IndieDev/comments/10hgvjq/vr_has_been_punishing_for_particles' \
-H 'X-API-Key: gapi_live_your_key_here'Один вызов — один запрос
Карусель из десяти слайдов стоит столько же, сколько одно фото: одно списание с баланса. Считаются вызовы, а не файлы.