Скачать видео v.redd.it как mp4 - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь создать скрипт Python, который позволяет пользователю вводить URL-адрес из сообщения Reddit (v.redd.it) и загружать его как mp4 в папку «Загрузки».

Это происходит, когда json декодирует и читает URL-адрес, сохраняемый как переменная. Затем словарь json перемещается в fallback_url , где wget.download загружает единственное видео по указанному URL-адресу в папку «Мои загрузки».

url = ''.join((url,'.json')) #add .json to end of url input for python to extract video url

with urllib.request.urlopen(url) as url: #python open url as http request
            data = json.loads(url.read().decode()) #read the json url
            file = data[0]['data']['children'][0]['data']['secure_media']['reddit_video']['fallback_url'] #navigate the json to the url that has the mp4 (fallback_url)

            #debug
            print(file) #print if url is read
            time.sleep(4) #reddit has a request limit per minute (see below)
            wget.download(file,'C:/Users/x/Downloads/') #use wget to download the file, hopefully in .mp4, but doesn't work

Делать не более тридцати запросов в минуту. Это допускает некоторый всплеск ваших запросов, но не нарушайте его. В среднем мы должны видеть не более одного запроса каждые две секунды от вас.

Итак, сначала я ввожу Reddit URL , и он сохраняется в переменной url . Затем .json добавляется в конец www.reddit.com / r / example /.../ .json , с помощью которого скрипт откроет URL , сохраняя данные Json в словарь, переменная data . Затем он пройдет по дереву словаря и доберется до ключа fallback_url , где находится mp4.

Однако, если вы откроете этот url , вы увидите, что в нем есть только один элемент - видео mp4. Но когда я использую wget.download (файл, 'location') , он загружается с заголовком DASH_9_6_M (заголовок URL) без расширения, на что я надеялся быть mp4. Файл не имеет расширения, но имеет такой же размер, как если бы это был mp4.

Итак, мой вопрос: как мне получить wget для загрузки видео в формате mp4?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Попробуйте urllib.request.urlretrieve(file, "download.mp4")

0 голосов
/ 29 июня 2018

Вы можете использовать urllib.urlretrieve, чтобы сделать это. Попробуйте urllib.urlretrieve(file, "download.mp4") например.

...