Как установить useragent как QuickTime в скрипте Python? - PullRequest
0 голосов
/ 23 декабря 2011

Сервер разрешает доступ к видео только в том случае, если пользователь использует QT, как добавить его в этот скрипт?

#!/usr/bin/env python
from os import pardir, rename, listdir, getcwd
from os.path import join
from urllib import urlopen, urlretrieve, FancyURLopener
class MyOpener(FancyURLopener):
    version = 'QuickTime/7.6.2 (verqt=7.6.2;cpu=IA32;so=Mac 10.5.8)'

def main():
# Set up file paths.
data_dir = 'data'
ft_path = join(data_dir, 'titles.txt')
fu_path = join(data_dir, 'urls.txt')

# Open the files
try:
    f_titles = open(ft_path, 'r')
    f_urls = open(fu_path, 'r')
except:
    print "Make sure titles.txt and urls.txt are in the data directory."
    exit()

# Read file contents into lists.
titles = []
urls = []
for l in f_titles:
    titles.append(l)
for l in f_urls:
    urls.append(l)

# Create a dictionary and download the files.
downloads = dict(zip(titles, urls))
for title, url in downloads.iteritems():
    fpath = join(data_dir, title.strip().replace('\t',"").replace(" ", "_"))
    fpath += ".mov"
    urlretrieve(url, fpath)

if __name__ == "__main__": main()

Игнорировать этот текст, чтобы заполнить ограничение публикации.blablablabla

Ответы [ 2 ]

1 голос
/ 26 декабря 2011

Это на самом деле описано в документах .Ваш код должен выглядеть примерно так:

#!/usr/bin/env python
import urllib

from os import pardir, rename, listdir, getcwd
from os.path import join


class MyOpener(urllib.FancyURLopener):
     version = 'QuickTime/7.6.2 (verqt=7.6.2;cpu=IA32;so=Mac 10.5.8)'

# This line tells urllib.urlretrieve and urllib.urlopen to use your MyOpener 
# instead of the default urllib.FancyOpener
urllib._urlopener = MyOpener()

def main():
    # lots of stuff
    for title, url in downloads.iteritems():
        fpath = join(data_dir, title.strip().replace('\t',"").replace(" ", "_"))
        fpath += ".mov"
        urllib.urlretrieve(url, fpath)
1 голос
/ 23 декабря 2011

Вы можете изменить это так:

http://wolfprojects.altervista.org/changeua.php

Тогда попробуйте:

opener = MyOpener()
opener.retrieve(url, fpath)

Вместо непосредственного использования urllib, и это должно сработать.

(Я не уверен, почему переопределение внутренних структур urllib не работает, но они являются внутренними, и тыкать их не гарантированно :()

Также больше информации здесь:

http://docs.python.org/library/urllib.html#urllib.URLopener

...