@@ -1,6 +1,7 @@
 | 
				
			|||||||
version <unreleased>
 | 
					version <unreleased>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Extractors
 | 
					Extractors
 | 
				
			||||||
 | 
					* [iwara] Fix extraction after relaunch (#10462, #3215)
 | 
				
			||||||
* [newgrounds] Fix uploader extraction (#10584)
 | 
					* [newgrounds] Fix uploader extraction (#10584)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -395,6 +395,7 @@ from .ivi import (
 | 
				
			|||||||
    IviCompilationIE
 | 
					    IviCompilationIE
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from .ivideon import IvideonIE
 | 
					from .ivideon import IvideonIE
 | 
				
			||||||
 | 
					from .iwara import IwaraIE
 | 
				
			||||||
from .izlesene import IzleseneIE
 | 
					from .izlesene import IzleseneIE
 | 
				
			||||||
from .jeuxvideo import JeuxVideoIE
 | 
					from .jeuxvideo import JeuxVideoIE
 | 
				
			||||||
from .jove import JoveIE
 | 
					from .jove import JoveIE
 | 
				
			||||||
@@ -899,7 +900,6 @@ from .toutv import TouTvIE
 | 
				
			|||||||
from .toypics import ToypicsUserIE, ToypicsIE
 | 
					from .toypics import ToypicsUserIE, ToypicsIE
 | 
				
			||||||
from .traileraddict import TrailerAddictIE
 | 
					from .traileraddict import TrailerAddictIE
 | 
				
			||||||
from .trilulilu import TriluliluIE
 | 
					from .trilulilu import TriluliluIE
 | 
				
			||||||
from .trollvids import TrollvidsIE
 | 
					 | 
				
			||||||
from .trutv import TruTVIE
 | 
					from .trutv import TruTVIE
 | 
				
			||||||
from .tube8 import Tube8IE
 | 
					from .tube8 import Tube8IE
 | 
				
			||||||
from .tubitv import TubiTvIE
 | 
					from .tubitv import TubiTvIE
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										77
									
								
								youtube_dl/extractor/iwara.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								youtube_dl/extractor/iwara.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
				
			|||||||
 | 
					# coding: utf-8
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from .common import InfoExtractor
 | 
				
			||||||
 | 
					from ..compat import compat_urllib_parse_urlparse
 | 
				
			||||||
 | 
					from ..utils import remove_end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class IwaraIE(InfoExtractor):
 | 
				
			||||||
 | 
					    _VALID_URL = r'https?://(?:www\.|ecchi\.)?iwara\.tv/videos/(?P<id>[a-zA-Z0-9]+)'
 | 
				
			||||||
 | 
					    _TESTS = [{
 | 
				
			||||||
 | 
					        'url': 'http://iwara.tv/videos/amVwUl1EHpAD9RD',
 | 
				
			||||||
 | 
					        'md5': '1d53866b2c514b23ed69e4352fdc9839',
 | 
				
			||||||
 | 
					        'info_dict': {
 | 
				
			||||||
 | 
					            'id': 'amVwUl1EHpAD9RD',
 | 
				
			||||||
 | 
					            'ext': 'mp4',
 | 
				
			||||||
 | 
					            'title': '【MMD R-18】ガールフレンド carry_me_off',
 | 
				
			||||||
 | 
					            'age_limit': 18,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					    }, {
 | 
				
			||||||
 | 
					        'url': 'http://ecchi.iwara.tv/videos/Vb4yf2yZspkzkBO',
 | 
				
			||||||
 | 
					        'md5': '7e5f1f359cd51a027ba4a7b7710a50f0',
 | 
				
			||||||
 | 
					        'info_dict': {
 | 
				
			||||||
 | 
					            'id': '0B1LvuHnL-sRFNXB1WHNqbGw4SXc',
 | 
				
			||||||
 | 
					            'ext': 'mp4',
 | 
				
			||||||
 | 
					            'title': '[3D Hentai] Kyonyu Ã\x97 Genkai Ã\x97 Emaki Shinobi Girls.mp4',
 | 
				
			||||||
 | 
					            'age_limit': 18,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        'add_ie': ['GoogleDrive'],
 | 
				
			||||||
 | 
					    }, {
 | 
				
			||||||
 | 
					        'url': 'http://www.iwara.tv/videos/nawkaumd6ilezzgq',
 | 
				
			||||||
 | 
					        'md5': '1d85f1e5217d2791626cff5ec83bb189',
 | 
				
			||||||
 | 
					        'info_dict': {
 | 
				
			||||||
 | 
					            'id': '6liAP9s2Ojc',
 | 
				
			||||||
 | 
					            'ext': 'mp4',
 | 
				
			||||||
 | 
					            'age_limit': 0,
 | 
				
			||||||
 | 
					            'title': '[MMD] Do It Again Ver.2 [1080p 60FPS] (Motion,Camera,Wav+DL)',
 | 
				
			||||||
 | 
					            'description': 'md5:590c12c0df1443d833fbebe05da8c47a',
 | 
				
			||||||
 | 
					            'upload_date': '20160910',
 | 
				
			||||||
 | 
					            'uploader': 'aMMDsork',
 | 
				
			||||||
 | 
					            'uploader_id': 'UCVOFyOSCyFkXTYYHITtqB7A',
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        'add_ie': ['Youtube'],
 | 
				
			||||||
 | 
					    }]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _real_extract(self, url):
 | 
				
			||||||
 | 
					        video_id = self._match_id(url)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        webpage, urlh = self._download_webpage_handle(url, video_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        hostname = compat_urllib_parse_urlparse(urlh.geturl()).hostname
 | 
				
			||||||
 | 
					        # ecchi is 'sexy' in Japanese
 | 
				
			||||||
 | 
					        age_limit = 18 if hostname.split('.')[0] == 'ecchi' else 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        entries = self._parse_html5_media_entries(url, webpage, video_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if not entries:
 | 
				
			||||||
 | 
					            iframe_url = self._html_search_regex(
 | 
				
			||||||
 | 
					                r'<iframe[^>]+src=([\'"])(?P<url>[^\'"]+)\1',
 | 
				
			||||||
 | 
					                webpage, 'iframe URL', group='url')
 | 
				
			||||||
 | 
					            return {
 | 
				
			||||||
 | 
					                '_type': 'url_transparent',
 | 
				
			||||||
 | 
					                'url': iframe_url,
 | 
				
			||||||
 | 
					                'age_limit': age_limit,
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        title = remove_end(self._html_search_regex(
 | 
				
			||||||
 | 
					            r'<title>([^<]+)</title>', webpage, 'title'), ' | Iwara')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        info_dict = entries[0]
 | 
				
			||||||
 | 
					        info_dict.update({
 | 
				
			||||||
 | 
					            'id': video_id,
 | 
				
			||||||
 | 
					            'title': title,
 | 
				
			||||||
 | 
					            'age_limit': age_limit,
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return info_dict
 | 
				
			||||||
@@ -1,36 +0,0 @@
 | 
				
			|||||||
# encoding: utf-8
 | 
					 | 
				
			||||||
from __future__ import unicode_literals
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import re
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from .nuevo import NuevoBaseIE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class TrollvidsIE(NuevoBaseIE):
 | 
					 | 
				
			||||||
    _VALID_URL = r'https?://(?:www\.)?trollvids\.com/video/(?P<id>\d+)/(?P<display_id>[^/?#&]+)'
 | 
					 | 
				
			||||||
    IE_NAME = 'trollvids'
 | 
					 | 
				
			||||||
    _TEST = {
 | 
					 | 
				
			||||||
        'url': 'http://trollvids.com/video/2349002/%E3%80%90MMD-R-18%E3%80%91%E3%82%AC%E3%83%BC%E3%83%AB%E3%83%95%E3%83%AC%E3%83%B3%E3%83%89-carrymeoff',
 | 
					 | 
				
			||||||
        'md5': '1d53866b2c514b23ed69e4352fdc9839',
 | 
					 | 
				
			||||||
        'info_dict': {
 | 
					 | 
				
			||||||
            'id': '2349002',
 | 
					 | 
				
			||||||
            'ext': 'mp4',
 | 
					 | 
				
			||||||
            'title': '【MMD R-18】ガールフレンド carry_me_off',
 | 
					 | 
				
			||||||
            'age_limit': 18,
 | 
					 | 
				
			||||||
            'duration': 216.78,
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def _real_extract(self, url):
 | 
					 | 
				
			||||||
        mobj = re.match(self._VALID_URL, url)
 | 
					 | 
				
			||||||
        video_id = mobj.group('id')
 | 
					 | 
				
			||||||
        display_id = mobj.group('display_id')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        info = self._extract_nuevo(
 | 
					 | 
				
			||||||
            'http://trollvids.com/nuevo/player/config.php?v=%s' % video_id,
 | 
					 | 
				
			||||||
            video_id)
 | 
					 | 
				
			||||||
        info.update({
 | 
					 | 
				
			||||||
            'display_id': display_id,
 | 
					 | 
				
			||||||
            'age_limit': 18
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
        return info
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user