Add mime parser: clippituser.tv

This commit is contained in:
woorst
2017-08-27 13:05:32 -05:00
parent d6735f7181
commit 1c986788ed
3 changed files with 119 additions and 5 deletions

View File

@@ -151,15 +151,15 @@ class RedditVideoMIMEParser(BaseMIMEParser):
class ImgurApiMIMEParser(BaseMIMEParser): class ImgurApiMIMEParser(BaseMIMEParser):
""" """
Imgur now provides a json API exposing its entire infrastructure. Each Imgur Imgur now provides a json API exposing its entire infrastructure. Each Imgur
page has an associated hash and can either contain an album, a gallery, page has an associated hash and can either contain an album, a gallery,
or single image. or single image.
The default client token for RTV is shared among users and allows a maximum The default client token for RTV is shared among users and allows a maximum
global number of requests per day of 12,500. If we find that this limit is global number of requests per day of 12,500. If we find that this limit is
not sufficient for all of rtv's traffic, this method will be revisited. not sufficient for all of rtv's traffic, this method will be revisited.
Reference: Reference:
https://apidocs.imgur.com https://apidocs.imgur.com
""" """
@@ -321,7 +321,7 @@ class TwitchMIMEParser(BaseMIMEParser):
return url, None return url, None
class OddshotIMEParser(OpenGraphMIMEParser): class OddshotMIMEParser(OpenGraphMIMEParser):
""" """
Oddshot uses the Open Graph protocol Oddshot uses the Open Graph protocol
""" """
@@ -375,9 +375,24 @@ class LiveleakMIMEParser(BaseMIMEParser):
else: else:
return url, None return url, None
class ClippitUserMIMEParser(BaseMIMEParser):
"""
"""
pattern = re.compile(r'https?://(www\.)?clippituser\.tv/c/.+$')
@staticmethod
def get_mimetype(url):
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
tag = soup.find(id='jwplayer-container')
quality = ['data-{}-file'.format(_) for _ in ['hd', 'sd']]
return tag.get(quality[0]), 'video/mp4'
# Parsers should be listed in the order they will be checked # Parsers should be listed in the order they will be checked
parsers = [ parsers = [
OddshotIMEParser, ClippitUserMIMEParser,
OddshotMIMEParser,
StreamableMIMEParser, StreamableMIMEParser,
VidmeMIMEParser, VidmeMIMEParser,
InstagramMIMEParser, InstagramMIMEParser,

View File

@@ -0,0 +1,95 @@
interactions:
- request:
body: null
headers:
Accept: ['*/*']
Accept-Encoding: ['gzip, deflate']
Connection: [keep-alive]
User-Agent: [python-requests/2.18.4]
method: GET
uri: https://www.clippituser.tv/c/edqqld
response:
body:
string: !!binary |
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
X8aPNuuMFPKI8kBd3njx/xuIGq6OMQAA
headers:
Age: ['22761']
Connection: [keep-alive]
Content-Encoding: [gzip]
Content-Length: ['3843']
Content-Type: [text/html; charset=utf-8]
Date: ['Sun, 27 Aug 2017 11:43:57 GMT']
Server: [nginx/1.4.6 (Ubuntu)]
Via: [1.1 d784ab98a21beb476de2ec8d5824cf82.cloudfront.net (CloudFront)]
X-Amz-Cf-Id: [5YJDFY6B-VxV3Ilh6E-EPqV4FBEU_5yr-N6TqUFpLAJ3SmJ4SlBSqg==]
X-Cache: [Hit from cloudfront]
X-Sentry-ID: [None]
status: {code: 200, message: OK}
version: 1

View File

@@ -89,6 +89,10 @@ URLS = OrderedDict([
'https://oddshot.tv/s/5wN6Sy', 'https://oddshot.tv/s/5wN6Sy',
'https://oddshot.akamaized.net/m/render-captures/source/Unknown-YjBkNTcwZWFlZGJhMGYyNQ.mp4', 'https://oddshot.akamaized.net/m/render-captures/source/Unknown-YjBkNTcwZWFlZGJhMGYyNQ.mp4',
'video/mp4')), 'video/mp4')),
('clippituser', (
'https://www.clippituser.tv/c/edqqld',
'https://clips.clippit.tv/edqqld/720.mp4',
'video/mp4')),
]) ])