mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 08:37:07 -05:00 
			
		
		
		
	[peertube] Add support for generic embeds
This commit is contained in:
		@@ -108,6 +108,7 @@ from .yapfiles import YapFilesIE
 | 
			
		||||
from .vice import ViceIE
 | 
			
		||||
from .xfileshare import XFileShareIE
 | 
			
		||||
from .cloudflarestream import CloudflareStreamIE
 | 
			
		||||
from .peertube import PeerTubeIE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GenericIE(InfoExtractor):
 | 
			
		||||
@@ -2012,6 +2013,15 @@ class GenericIE(InfoExtractor):
 | 
			
		||||
                'skip_download': True,
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            # PeerTube embed
 | 
			
		||||
            'url': 'https://joinpeertube.org/fr/home/',
 | 
			
		||||
            'info_dict': {
 | 
			
		||||
                'id': 'home',
 | 
			
		||||
                'title': 'Reprenez le contrôle de vos vidéos ! #JoinPeertube',
 | 
			
		||||
            },
 | 
			
		||||
            'playlist_count': 2,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            'url': 'http://share-videos.se/auto/video/83645793?uid=13',
 | 
			
		||||
            'md5': 'b68d276de422ab07ee1d49388103f457',
 | 
			
		||||
@@ -3029,6 +3039,11 @@ class GenericIE(InfoExtractor):
 | 
			
		||||
            return self.playlist_from_matches(
 | 
			
		||||
                cloudflarestream_urls, video_id, video_title, ie=CloudflareStreamIE.ie_key())
 | 
			
		||||
 | 
			
		||||
        peertube_urls = PeerTubeIE._extract_urls(webpage)
 | 
			
		||||
        if peertube_urls:
 | 
			
		||||
            return self.playlist_from_matches(
 | 
			
		||||
                peertube_urls, video_id, video_title, ie=PeerTubeIE.ie_key())
 | 
			
		||||
 | 
			
		||||
        sharevideos_urls = [mobj.group('url') for mobj in re.finditer(
 | 
			
		||||
            r'<iframe[^>]+?\bsrc\s*=\s*(["\'])(?P<url>(?:https?:)?//embed\.share-videos\.se/auto/embed/\d+\?.*?\buid=\d+.*?)\1',
 | 
			
		||||
            webpage)]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,8 @@
 | 
			
		||||
# coding: utf-8
 | 
			
		||||
from __future__ import unicode_literals
 | 
			
		||||
 | 
			
		||||
import re
 | 
			
		||||
 | 
			
		||||
from .common import InfoExtractor
 | 
			
		||||
from ..compat import compat_str
 | 
			
		||||
from ..utils import (
 | 
			
		||||
@@ -13,9 +15,7 @@ from ..utils import (
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class PeerTubeIE(InfoExtractor):
 | 
			
		||||
    _VALID_URL = r'''(?x)
 | 
			
		||||
                    https?://
 | 
			
		||||
                        (?:
 | 
			
		||||
    _INSTANCES_RE = r'''(?:
 | 
			
		||||
                            # Taken from https://instances.joinpeertube.org/instances
 | 
			
		||||
                            tube\.openalgeria\.org|
 | 
			
		||||
                            peertube\.pointsecu\.fr|
 | 
			
		||||
@@ -115,10 +115,13 @@ class PeerTubeIE(InfoExtractor):
 | 
			
		||||
                            peertube2\.cpy\.re|
 | 
			
		||||
                            videos\.tcit\.fr|
 | 
			
		||||
                            peertube\.cpy\.re
 | 
			
		||||
                        )
 | 
			
		||||
                        )'''
 | 
			
		||||
    _VALID_URL = r'''(?x)
 | 
			
		||||
                    https?://
 | 
			
		||||
                        %s
 | 
			
		||||
                        /(?:videos/(?:watch|embed)|api/v\d/videos)/
 | 
			
		||||
                        (?P<id>[^/?#&]+)
 | 
			
		||||
                    '''
 | 
			
		||||
                        (?P<id>[^/?\#&]+)
 | 
			
		||||
                    ''' % _INSTANCES_RE
 | 
			
		||||
    _TESTS = [{
 | 
			
		||||
        'url': 'https://peertube.moe/videos/watch/2790feb0-8120-4e63-9af3-c943c69f5e6c',
 | 
			
		||||
        'md5': '80f24ff364cc9d333529506a263e7feb',
 | 
			
		||||
@@ -156,6 +159,14 @@ class PeerTubeIE(InfoExtractor):
 | 
			
		||||
        'only_matching': True,
 | 
			
		||||
    }]
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def _extract_urls(webpage):
 | 
			
		||||
        return [
 | 
			
		||||
            mobj.group('url')
 | 
			
		||||
            for mobj in re.finditer(
 | 
			
		||||
                r'''(?x)<iframe[^>]+\bsrc=(["\'])(?P<url>(?:https?:)?//%s/videos/embed/[^/?\#&]+)\1'''
 | 
			
		||||
                % PeerTubeIE._INSTANCES_RE, webpage)]
 | 
			
		||||
 | 
			
		||||
    def _real_extract(self, url):
 | 
			
		||||
        video_id = self._match_id(url)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user