better Vimeo tests; fixed a couple of VimeoIE fields

pull/601/merge
Filippo Valsorda 2012-12-20 16:30:55 +01:00
parent 77c4beab8a
commit 6b3aef80ce
7 changed files with 18 additions and 17 deletions

View File

@ -6,8 +6,8 @@ import os
import json import json
import unittest import unittest
import sys import sys
import socket
import hashlib import hashlib
import socket
# Allow direct execution # Allow direct execution
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
@ -25,7 +25,6 @@ cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar)
proxy_handler = compat_urllib_request.ProxyHandler() proxy_handler = compat_urllib_request.ProxyHandler()
opener = compat_urllib_request.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler()) opener = compat_urllib_request.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler())
compat_urllib_request.install_opener(opener) compat_urllib_request.install_opener(opener)
socket.setdefaulttimeout(300) # 5 minutes should be enough (famous last words)
class FileDownloader(youtube_dl.FileDownloader): class FileDownloader(youtube_dl.FileDownloader):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -90,12 +89,12 @@ def generator(test_case):
md5_for_file = _file_md5(test_case['file']) md5_for_file = _file_md5(test_case['file'])
self.assertEqual(md5_for_file, test_case['md5']) self.assertEqual(md5_for_file, test_case['md5'])
info_dict = fd.processed_info_dicts[0] info_dict = fd.processed_info_dicts[0]
for (info_element, value) in test_case.get('info_dict', {}).items(): for (info_field, value) in test_case.get('info_dict', {}).items():
if value.startswith('md5:'): if value.startswith('md5:'):
md5_info_value = hashlib.md5(info_dict[info_element]).hexdigest() md5_info_value = hashlib.md5(info_dict.get(info_field, '')).hexdigest()
self.assertEqual(value[3:], md5_info_value) self.assertEqual(value[3:], md5_info_value)
else: else:
self.assertEqual(value, info_dict[info_element]) self.assertEqual(value, info_dict.get(info_field))
return test_template return test_template

View File

@ -3,7 +3,6 @@
import json import json
import os import os
import socket
import sys import sys
import unittest import unittest
@ -22,7 +21,6 @@ cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar)
proxy_handler = compat_urllib_request.ProxyHandler() proxy_handler = compat_urllib_request.ProxyHandler()
opener = compat_urllib_request.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler()) opener = compat_urllib_request.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler())
compat_urllib_request.install_opener(opener) compat_urllib_request.install_opener(opener)
socket.setdefaulttimeout(300) # 5 minutes should be enough (famous last words)
class FileDownloader(youtube_dl.FileDownloader): class FileDownloader(youtube_dl.FileDownloader):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):

View File

@ -2,7 +2,6 @@
import sys import sys
import unittest import unittest
import socket
import json import json
# Allow direct execution # Allow direct execution
@ -22,7 +21,6 @@ cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar)
proxy_handler = compat_urllib_request.ProxyHandler() proxy_handler = compat_urllib_request.ProxyHandler()
opener = compat_urllib_request.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler()) opener = compat_urllib_request.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler())
compat_urllib_request.install_opener(opener) compat_urllib_request.install_opener(opener)
socket.setdefaulttimeout(300) # 5 minutes should be enough (famous last words)
class FakeDownloader(object): class FakeDownloader(object):
def __init__(self): def __init__(self):

View File

@ -2,7 +2,6 @@
import sys import sys
import unittest import unittest
import socket
import json import json
import io import io
import hashlib import hashlib
@ -24,7 +23,6 @@ cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar)
proxy_handler = compat_urllib_request.ProxyHandler() proxy_handler = compat_urllib_request.ProxyHandler()
opener = compat_urllib_request.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler()) opener = compat_urllib_request.build_opener(proxy_handler, cookie_processor, YoutubeDLHandler())
compat_urllib_request.install_opener(opener) compat_urllib_request.install_opener(opener)
socket.setdefaulttimeout(300) # 5 minutes should be enough (famous last words)
class FakeDownloader(object): class FakeDownloader(object):
def __init__(self): def __init__(self):

View File

@ -37,9 +37,16 @@
}, },
{ {
"name": "Vimeo", "name": "Vimeo",
"md5": "60540a4ec7cc378ec84b919c0aed5023", "md5": "8879b6cc097e987f02484baf890129e5",
"url": "http://vimeo.com/14160053", "url": "http://vimeo.com/56015672",
"file": "14160053.mp4" "file": "56015672.mp4",
"info_dict": {
"title": "youtube-dl test video - ★ \" ' 幸 / \\ ä ↭ 𝕐",
"uploader": "Filippo Valsorda",
"uploader_id": "user7108434",
"upload_date": "20121220",
"description": "This is a test case for youtube-dl.\nFor more information, see github.com/rg3/youtube-dl\nTest chars: ★ \" ' 幸 / \\ ä ↭ 𝕐"
}
}, },
{ {
"name": "Soundcloud", "name": "Soundcloud",

View File

@ -1018,9 +1018,9 @@ class VimeoIE(InfoExtractor):
# Extract upload date # Extract upload date
video_upload_date = None video_upload_date = None
mobj = re.search(r'<span id="clip-date" style="display:none">[^:]*: (.*?)( \([^\(]*\))?</span>', webpage) mobj = re.search(r'<meta itemprop="dateCreated" content="(\d{4})-(\d{2})-(\d{2})T', webpage)
if mobj is not None: if mobj is not None:
video_upload_date = mobj.group(1) video_upload_date = mobj.group(1) + mobj.group(2) + mobj.group(3)
# Vimeo specific: extract request signature and timestamp # Vimeo specific: extract request signature and timestamp
sig = config['request']['signature'] sig = config['request']['signature']

View File

@ -298,7 +298,8 @@ def clean_html(html):
"""Clean an HTML snippet into a readable string""" """Clean an HTML snippet into a readable string"""
# Newline vs <br /> # Newline vs <br />
html = html.replace('\n', ' ') html = html.replace('\n', ' ')
html = re.sub('\s*<\s*br\s*/?\s*>\s*', '\n', html) html = re.sub(r'\s*<\s*br\s*/?\s*>\s*', '\n', html)
html = re.sub(r'<\s*/\s*p\s*>\s*<\s*p[^>]*>', '\n', html)
# Strip html tags # Strip html tags
html = re.sub('<.*?>', '', html) html = re.sub('<.*?>', '', html)
# Replace html entities # Replace html entities