Рубрики
Без рубрики

Построить Reddit Video Downloader с Python

Эта статья о создании видео Reddit видео с нуля с помощью Python. Наш загрузчик Wi … Теги с Python.

Эта статья о создании видео Reddit видео с нуля с помощью Python. Наш загрузчик сможет загружать видео вместе со звуком.

Reddit делает жестко загружать выступом видео напрямую. Это потому, что Reddit сохраняет аудио и видео отдельно на своих серверах. Но это не большая проблема, так как мы скачаем как аудио, так и видео отдельно и присоединяйтесь к ним, используя FFMPEG Отказ

Как получить URL-адрес видео?

Каждый пост Reddit может быть проанализирован как JSON, просто добавив .json к URL. Таким образом,

https://www.reddit.com/r/PublicFreakout/comments/kwif5d/insurrectionist_gets_arrested_trying_to_break/

становится

https://www.reddit.com/r/PublicFreakout/comments/kwif5d/insurrectionist_gets_arrested_trying_to_break.json

Перейти к URL JSON, и вы должны увидеть что-то вроде,

Оттуда это легко. Нажмите Ctrl + F и искать .mp4. .

Это то, что нам нужно, Завергивающийся URL Отказ Теперь приходится выяснить, как добраться сюда, начиная с вершины.

Если вы пытаетесь поэкспериментировать с этим самостоятельно, убедитесь, что вы либо загружаете JSON или попробуйте использовать jupyter. или калабиль . Функция ограничения скорости Reddit не позволит вам часто получать данные JSON.

Во-первых, получите данные JSON, используя Запросы Отказ

data = requests.get(post_url).json()

где post_url это URL JSON.

Получить URL-адрес, используя,

url = data[0]["data"]["children"][0]["data"]["secure_media"]["reddit_video"][
        "fallback_url"
    ]

Так выглядит типичный видео URL,

https://v.redd.it/jvjih3f894b61/DASH_1080.mp4?source=fallback

Не лучший подход. Здесь мы даже не проверили, существуют ли ключи. Предположим, это стандартный формат для всех постов.

Как насчет аудио URL?

Аудио URL недоступен в данных JSON. Но это можно получить, используя простой взлом.

Как уже упоминалось выше, это URL-адрес видео. Перейдите на URL и проверьте, только ли это видео.

https://v.redd.it/jvjih3f894b61/DASH_1080.mp4?source=fallback

Здесь Dash_1080.mp4 Имя файла, где 1080 – это разрешение. Замените разрешение на Аудио , а вы получаете аудио URL.

Таким образом, аудио URL, соответствующий нашему URL, является https://v.redd.it/jvjih3f894b61/dash_audio.mp4source=Aldback

Теперь, когда у вас есть как аудио, так и видео, скачайте их в питоновом пути.

import urllib.request

urllib.request.urlretrieve(
            url,
            filename=output_path,
        )

Если вы большой поклонник прогресса, добавьте один, используя ReportHook urlretRiev.

from tqdm import tqdm

class DownloadProgressBar(tqdm):
    def update_to(self, b: int = 1, bsize: int = 1024, tsize: int = None):
        if tsize is not None:
            self.total = tsize
        self.update(b * bsize - self.n)

with DownloadProgressBar(unit="B", unit_scale=True, miniters=1) as d:
        urllib.request.urlretrieve(
            url,
            filename=output_path,
            reporthook=d.update_to,
        )

Давайте объединиться

Как только файлы загружаются в audio.mp4 и Video.mp4 Давайте объединим их с помощью FFMPEG.

FYI, вы можете иметь любое имя для аудио и видео выходных файлов.

Если у вас не установлен FFMPEG, скачайте его из здесь для окон.

Для Linux,

sudo apt install ffmpeg

Теперь убедитесь, чтобы объединить их оба,

ffmpeg -i video.mp4 -i audio.mp4 -c:v copy -c:a aac output.mp4

Это не займет более нескольких секунд, чтобы слиться. После завершения наслаждайтесь видео.

Вывод

В этом посте мы увидели, как скачать видео Reddit вместе со своим аудио с помощью Python. Такого подхода ничего не было; Все, что нам нужно было сделать, было как-то URL. Если есть лучший подход, пожалуйста, скажите.

Я пошел вперед и создал Python Cli по имени Redl Отказ Бегать,

redl https://www.reddit.com/r/PublicFreakout/comments/kwif5d/insurrectionist_gets_arrested_trying_to_break/

скачать видео.

Весь код можно найти в

amalshaji/Редл

Reddit Video Downloader (с аудио) в Python

⚠️ Требуется FFMPEG установлен

Redl Scrapes The Reddit Post JSON и избирает как аудио, так и видео URL. Как только эти файлы будут загружены, он использует FFMPEG присоединиться к ним.

Установка

pip install redl --user

использование

redl https://www.reddit.com/r/Damnthatsinteresting/comments/kwrbde/making_a_grapefruit_dessert/

Оригинал: “https://dev.to/amal/build-a-reddit-video-downloader-with-python-5djb”