Add mime parser: oddshot.tv

This commit is contained in:
woorst
2017-08-20 16:56:30 -05:00
parent e131c832ff
commit 7761b28384
3 changed files with 223 additions and 6 deletions

View File

@@ -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,