From ae892620732cd01f83e7e217e4784c9084fddf8d Mon Sep 17 00:00:00 2001 From: woorst Date: Tue, 10 Oct 2017 15:19:04 -0500 Subject: [PATCH] add mime parsers for gifs.com and giphy.com --- rtv/mime_parsers.py | 22 +- tests/cassettes/test_parser[gifs_com].yaml | 332 +++++++++++++++++++++ tests/cassettes/test_parser[giphy].yaml | 322 ++++++++++++++++++++ tests/test_mime_parsers.py | 8 + 4 files changed, 682 insertions(+), 2 deletions(-) create mode 100644 tests/cassettes/test_parser[gifs_com].yaml create mode 100644 tests/cassettes/test_parser[giphy].yaml diff --git a/rtv/mime_parsers.py b/rtv/mime_parsers.py index 031c437..7c2b81a 100644 --- a/rtv/mime_parsers.py +++ b/rtv/mime_parsers.py @@ -55,8 +55,10 @@ class OpenGraphMIMEParser(BaseMIMEParser): def get_mimetype(url): page = requests.get(url) soup = BeautifulSoup(page.content, 'html.parser') - for og_type in ['og:video:secure_url', 'og:video', 'og:image']: - tag = soup.find('meta', attrs={'property': og_type}) + for og_type in ['video', 'image']: + tag = soup.find('meta', + attrs={'property':'og:' + og_type + ':secure_url'}) or \ + soup.find('meta', attrs={'property': 'og:' + og_type}) if tag: return BaseMIMEParser.get_mimetype(tag.get('content')) return url, None @@ -394,6 +396,20 @@ class ClippitUserMIMEParser(BaseMIMEParser): return tag.get(quality[0]), 'video/mp4' +class GifsMIMEParser(OpenGraphMIMEParser): + """ + Gifs.com uses the Open Graph protocol + """ + pattern = re.compile(r'https?://(www\.)?gifs\.com/gif/[^.]+$') + + +class GiphyMIMEParser(OpenGraphMIMEParser): + """ + Giphy.com uses the Open Graph protocol + """ + pattern = re.compile(r'https?://(www\.)?giphy\.com/gifs/[^.]+$') + + # Parsers should be listed in the order they will be checked parsers = [ ClippitUserMIMEParser, @@ -408,5 +424,7 @@ parsers = [ YoutubeMIMEParser, LiveleakMIMEParser, TwitchMIMEParser, + GifsMIMEParser, + GiphyMIMEParser, GifvMIMEParser, BaseMIMEParser] diff --git a/tests/cassettes/test_parser[gifs_com].yaml b/tests/cassettes/test_parser[gifs_com].yaml new file mode 100644 index 0000000..e16c3c8 --- /dev/null +++ b/tests/cassettes/test_parser[gifs_com].yaml @@ -0,0 +1,332 @@ +interactions: +- request: + body: null + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + User-Agent: [python-requests/2.14.2] + method: GET + uri: https://gifs.com/gif/cat-jumps-into-lake-after-guy-sneezes-0VqvRL + response: + body: + string: !!binary | + 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 + headers: + Alt-Svc: [clear] + Cache-Control: [no-cache] + Content-Encoding: [gzip] + Content-Type: [text/html; charset=UTF-8] + Date: ['Tue, 10 Oct 2017 20:11:52 GMT'] + Server: [nginx/1.6.2] + Set-Cookie: ['XSRF-TOKEN=eyJpdiI6IkNIRFd5NmpENklpZnl4RVBSTWliSVE9PSIsInZhbHVlIjoiNlVYQWNrdk43ZUs4dGlrT0hIKzRYUFkzUjM4RFFHSkd0ckhxUndNYVRNSDdlTTJqRzdxSFwvaXJWdU14ZFJPb0UwOWpNdXRZYzFhQW13UWFUam8zZ3FRPT0iLCJtYWMiOiJiMmU5OWIwNTRlYjIyMjdiMjZkODI2YTM0YzFlOWNkZjVkN2YyYzdmNDlhMGIyN2JhNWJhNmM1MWFkYjNkZTM5In0%3D; + expires=Tue, 17-Oct-2017 18:50:52 GMT; Max-Age=599940; path=/', 'gifs_session=eyJpdiI6ImFJbStYaXRqVlwvZTQ5M2hzXC8wTllqdz09IiwidmFsdWUiOiJUZ3JcL2FUVERBVDZuSmszZlZPRmJmVXlIbjdlbExxOE9Uc1N1cHFOa0FjckVjOGI2UGFIYmN0NTBaS0h4SXdVVkVuWHBPaTIxd2dNWHJTbHdxS3lEeUE9PSIsIm1hYyI6IjkzYWVhZTE4NDlmMjJiNmFmZDVlZTI2MDgzYWMwODJlNGU4OTgzMWZkMGE2ZDE3ZGQ1OWYxZDExZTI1YzA1NDEifQ%3D%3D; + expires=Tue, 17-Oct-2017 18:50:52 GMT; Max-Age=599940; path=/; httponly'] + Strict-Transport-Security: [max-age=31536000] + Vary: [Accept-Encoding] + Via: [1.1 google] + status: {code: 200, message: OK} +version: 1 diff --git a/tests/cassettes/test_parser[giphy].yaml b/tests/cassettes/test_parser[giphy].yaml new file mode 100644 index 0000000..10da141 --- /dev/null +++ b/tests/cassettes/test_parser[giphy].yaml @@ -0,0 +1,322 @@ +interactions: +- request: + body: null + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + User-Agent: [python-requests/2.14.2] + method: GET + uri: https://giphy.com/gifs/cameron-dallas-OpesLQSjwdGj6 + response: + body: + string: !!binary | + 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 + AAA= + headers: + Accept-Ranges: [bytes] + Age: ['383'] + Cache-Control: ['max-age=0, no-cache, must-revalidate, s-maxage=900'] + Cache-Tag: [opeslqsjwdgj6] + Connection: [keep-alive] + Content-Encoding: [gzip] + Content-Length: ['16418'] + Content-Type: [text/html] + Date: ['Tue, 10 Oct 2017 20:11:52 GMT'] + Fastly-Debug-Digest: [0fb078dcd8ddd3806448a7b1eaef6765372fa98a75a87e0d19300cce07e2c6de] + Server: [nginx/1.4.6 (Ubuntu)] + Vary: ['Accept-Encoding, X-UA-Device, Fastly-SSL'] + Via: [1.1 varnish, 1.1 varnish] + X-Cache: ['HIT, MISS'] + X-Cache-Hits: ['1, 0'] + X-Served-By: ['cache-iad2127-IAD, cache-mdw17320-MDW'] + X-Timer: ['S1507666313.734451,VS0,VE19'] + status: {code: 200, message: OK} +version: 1 diff --git a/tests/test_mime_parsers.py b/tests/test_mime_parsers.py index 57dfc39..cc112d6 100644 --- a/tests/test_mime_parsers.py +++ b/tests/test_mime_parsers.py @@ -94,6 +94,14 @@ URLS = OrderedDict([ 'https://www.clippituser.tv/c/edqqld', 'https://clips.clippit.tv/edqqld/720.mp4', 'video/mp4')), + ('gifs_com', ( + 'https://gifs.com/gif/cat-jumps-into-lake-after-guy-sneezes-0VqvRL', + 'https://j.gifs.com/0VqvRL.gif', + 'image/gif')), + ('giphy', ( + 'https://giphy.com/gifs/cameron-dallas-OpesLQSjwdGj6', + 'https://media.giphy.com/media/OpesLQSjwdGj6/giphy.mp4', + 'video/mp4')), ])