From 7761b283849f96a4a19be1244cdb0621d98304dd Mon Sep 17 00:00:00 2001 From: woorst Date: Sun, 20 Aug 2017 16:56:30 -0500 Subject: [PATCH] Add mime parser: oddshot.tv --- rtv/mime_parsers.py | 20 ++- tests/cassettes/test_parser[oddshot].yaml | 205 ++++++++++++++++++++++ tests/test_mime_parsers.py | 4 + 3 files changed, 223 insertions(+), 6 deletions(-) create mode 100644 tests/cassettes/test_parser[oddshot].yaml diff --git a/rtv/mime_parsers.py b/rtv/mime_parsers.py index 449f554..da63955 100644 --- a/rtv/mime_parsers.py +++ b/rtv/mime_parsers.py @@ -32,6 +32,7 @@ class BaseMIMEParser(object): browser. """ filename = url.split('?')[0] + filename = filename.split('#')[0] content_type, _ = mimetypes.guess_type(filename) return url, content_type @@ -54,12 +55,11 @@ class OpenGraphMIMEParser(BaseMIMEParser): def get_mimetype(url): page = requests.get(url) soup = BeautifulSoup(page.content, 'html.parser') - tag = soup.find('meta', attrs={'property': 'og:video:secure_url'}) - tag = tag or soup.find('meta', attrs={'property': 'og:image'}) - if tag: - return BaseMIMEParser.get_mimetype(tag.get('content')) - else: - return url, None + for og_type in ['og:video:secure_url', 'og:video', 'og:image']: + tag = soup.find('meta', attrs={'property': og_type}) + if tag: + return BaseMIMEParser.get_mimetype(tag.get('content')) + return url, None class GfycatMIMEParser(BaseMIMEParser): @@ -302,6 +302,13 @@ class StreamableMIMEParser(OpenGraphMIMEParser): pattern = re.compile(r'https?://(www\.)?streamable\.com/[^.]+$') +class OddshotIMEParser(OpenGraphMIMEParser): + """ + Oddshot uses the Open Graph protocol + """ + pattern = re.compile(r'https?://oddshot\.tv/s(hot)?/[^.]+$') + + class VidmeMIMEParser(BaseMIMEParser): """ Vidme provides a json api. @@ -351,6 +358,7 @@ class LiveleakMIMEParser(BaseMIMEParser): # Parsers should be listed in the order they will be checked parsers = [ + OddshotIMEParser, StreamableMIMEParser, VidmeMIMEParser, InstagramMIMEParser, diff --git a/tests/cassettes/test_parser[oddshot].yaml b/tests/cassettes/test_parser[oddshot].yaml new file mode 100644 index 0000000..ef66206 --- /dev/null +++ b/tests/cassettes/test_parser[oddshot].yaml @@ -0,0 +1,205 @@ +interactions: +- request: + body: null + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + User-Agent: [python-requests/2.18.3] + method: GET + uri: https://oddshot.tv/s/5wN6Sy + response: + body: + string: !!binary | + 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 + headers: + Connection: [keep-alive] + Content-Encoding: [gzip] + Content-Length: ['10303'] + Content-Type: [text/html; charset=utf-8] + Date: ['Sun, 20 Aug 2017 21:58:10 GMT'] + ETag: [W/"114c7-ourD6xiZTuZEaFkXzZmu5Q"] + Server: [nginx] + X-Powered-By: [Express] + status: {code: 200, message: OK} +version: 1 diff --git a/tests/test_mime_parsers.py b/tests/test_mime_parsers.py index 08d29b0..bb73f40 100644 --- a/tests/test_mime_parsers.py +++ b/tests/test_mime_parsers.py @@ -81,6 +81,10 @@ URLS = OrderedDict([ 'https://v.redd.it/zv89llsvexdz', 'https://v.redd.it/zv89llsvexdz/DASHPlaylist.mpd', 'video/x-youtube')), + ('oddshot', ( + 'https://oddshot.tv/s/5wN6Sy', + 'https://oddshot.akamaized.net/m/render-captures/source/Unknown-YjBkNTcwZWFlZGJhMGYyNQ.mp4', + 'video/mp4')), ])