mirror of
https://github.com/soimort/you-get.git
synced 2025-02-03 00:33:58 +03:00
[imgur] add support
This commit is contained in:
parent
89c11a2a7c
commit
ef966931a3
@ -26,6 +26,7 @@ SITES = {
|
|||||||
'heavy-music' : 'heavymusic',
|
'heavy-music' : 'heavymusic',
|
||||||
'iask' : 'sina',
|
'iask' : 'sina',
|
||||||
'ifeng' : 'ifeng',
|
'ifeng' : 'ifeng',
|
||||||
|
'imgur' : 'imgur',
|
||||||
'in' : 'alive',
|
'in' : 'alive',
|
||||||
'instagram' : 'instagram',
|
'instagram' : 'instagram',
|
||||||
'interest' : 'interest',
|
'interest' : 'interest',
|
||||||
|
@ -21,6 +21,7 @@ from .funshion import *
|
|||||||
from .google import *
|
from .google import *
|
||||||
from .heavymusic import *
|
from .heavymusic import *
|
||||||
from .ifeng import *
|
from .ifeng import *
|
||||||
|
from .imgur import *
|
||||||
from .instagram import *
|
from .instagram import *
|
||||||
from .interest import *
|
from .interest import *
|
||||||
from .iqilu import *
|
from .iqilu import *
|
||||||
|
72
src/you_get/extractors/imgur.py
Normal file
72
src/you_get/extractors/imgur.py
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from ..common import *
|
||||||
|
from ..extractor import VideoExtractor
|
||||||
|
from .universal import *
|
||||||
|
|
||||||
|
class Imgur(VideoExtractor):
|
||||||
|
name = "Imgur"
|
||||||
|
|
||||||
|
stream_types = [
|
||||||
|
{'id': 'original'},
|
||||||
|
{'id': 'thumbnail'},
|
||||||
|
]
|
||||||
|
|
||||||
|
def prepare(self, **kwargs):
|
||||||
|
if re.search(r'imgur\.com/a/', self.url):
|
||||||
|
# album
|
||||||
|
content = get_content(self.url)
|
||||||
|
album = json.loads(match1(content, r'album\s*:\s*({.*}),'))
|
||||||
|
count = album['album_images']['count']
|
||||||
|
images = album['album_images']['images']
|
||||||
|
ext = images[0]['ext']
|
||||||
|
self.streams = {
|
||||||
|
'original': {
|
||||||
|
'src': ['http://i.imgur.com/%s%s' % (i['hash'], ext)
|
||||||
|
for i in images],
|
||||||
|
'size': sum([i['size'] for i in images]),
|
||||||
|
'container': ext[1:]
|
||||||
|
},
|
||||||
|
'thumbnail': {
|
||||||
|
'src': ['http://i.imgur.com/%ss%s' % (i['hash'], '.jpg')
|
||||||
|
for i in images],
|
||||||
|
'container': 'jpg'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.title = album['title']
|
||||||
|
|
||||||
|
elif re.search(r'i\.imgur\.com/', self.url):
|
||||||
|
# direct image
|
||||||
|
universal_download(self.url,
|
||||||
|
output_dir=kwargs['output_dir'],
|
||||||
|
merge=kwargs['merge'],
|
||||||
|
info_only=kwargs['info_only'])
|
||||||
|
exit(0) # FIXME!
|
||||||
|
|
||||||
|
else:
|
||||||
|
# gallery image
|
||||||
|
content = get_content(self.url)
|
||||||
|
image = json.loads(match1(content, r'image\s*:\s*({.*}),'))
|
||||||
|
ext = image['ext']
|
||||||
|
self.streams = {
|
||||||
|
'original': {
|
||||||
|
'src': ['http://i.imgur.com/%s%s' % (image['hash'], ext)],
|
||||||
|
'size': image['size'],
|
||||||
|
'container': ext[1:]
|
||||||
|
},
|
||||||
|
'thumbnail': {
|
||||||
|
'src': ['http://i.imgur.com/%ss%s' % (image['hash'], '.jpg')],
|
||||||
|
'container': 'jpg'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.title = image['title']
|
||||||
|
|
||||||
|
def extract(self, **kwargs):
|
||||||
|
if 'stream_id' in kwargs and kwargs['stream_id']:
|
||||||
|
i = kwargs['stream_id']
|
||||||
|
if 'size' not in self.streams[i]:
|
||||||
|
self.streams[i]['size'] = urls_size(self.streams[i]['src'])
|
||||||
|
|
||||||
|
site = Imgur()
|
||||||
|
download = site.download_by_url
|
||||||
|
download_playlist = site.download_by_url
|
Loading…
Reference in New Issue
Block a user