diff --git a/README.md b/README.md index 6fe7fab6a2..f67cab572d 100644 --- a/README.md +++ b/README.md @@ -1309,6 +1309,7 @@ The available fields are: - `upload_date` (string): Video upload date in UTC (YYYYMMDD) - `release_timestamp` (numeric): UNIX timestamp of the moment the video was released - `release_date` (string): The date (YYYYMMDD) when the video was released in UTC + - `release_year` (numeric): Year (YYYY) when the video or album was released - `modified_timestamp` (numeric): UNIX timestamp of the moment the video was last modified - `modified_date` (string): The date (YYYYMMDD) when the video was last modified in UTC - `uploader_id` (string): Nickname or id of the video uploader @@ -1382,7 +1383,6 @@ Available for the media that is a track or a part of a music album: - `album_type` (string): Type of the album - `album_artist` (string): List of all artists appeared on the album - `disc_number` (numeric): Number of the disc or other physical medium the track belongs to - - `release_year` (numeric): Year (YYYY) when the album was released Available only when using `--download-sections` and for `chapter:` prefix when using `--split-chapters` for videos with internal chapters: diff --git a/test/helper.py b/test/helper.py index 7503840be8..e5ace8fe2c 100644 --- a/test/helper.py +++ b/test/helper.py @@ -10,7 +10,7 @@ import types import yt_dlp.extractor from yt_dlp import YoutubeDL from yt_dlp.compat import compat_os_name -from yt_dlp.utils import preferredencoding, write_string +from yt_dlp.utils import preferredencoding, try_call, write_string if 'pytest' in sys.modules: import pytest @@ -223,6 +223,10 @@ def sanitize_got_info_dict(got_dict): if test_info_dict.get('display_id') == test_info_dict.get('id'): test_info_dict.pop('display_id') + # release_year may be generated from release_date + if try_call(lambda: test_info_dict['release_year'] == int(test_info_dict['release_date'][:4])): + test_info_dict.pop('release_year') + # Check url for flat entries if got_dict.get('_type', 'video') != 'video' and got_dict.get('url'): test_info_dict['url'] = got_dict['url'] diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 32ae25aa01..e65bef862c 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -2589,6 +2589,9 @@ class YoutubeDL: upload_date = datetime.datetime.fromtimestamp(info_dict[ts_key], datetime.timezone.utc) info_dict[date_key] = upload_date.strftime('%Y%m%d') + if not info_dict.get('release_year'): + info_dict['release_year'] = traverse_obj(info_dict, ('release_date', {lambda x: int(x[:4])})) + live_keys = ('is_live', 'was_live') live_status = info_dict.get('live_status') if live_status is None: diff --git a/yt_dlp/extractor/_extractors.py b/yt_dlp/extractor/_extractors.py index cf8b3899d0..7895cfa43e 100644 --- a/yt_dlp/extractor/_extractors.py +++ b/yt_dlp/extractor/_extractors.py @@ -77,7 +77,6 @@ from .agora import ( WyborczaPodcastIE, WyborczaVideoIE, ) -from .airmozilla import AirMozillaIE from .airtv import AirTVIE from .aitube import AitubeKZVideoIE from .aljazeera import AlJazeeraIE @@ -147,7 +146,6 @@ from .arte import ( from .arnes import ArnesIE from .atresplayer import AtresPlayerIE from .atscaleconf import AtScaleConfEventIE -from .atttechchannel import ATTTechChannelIE from .atvat import ATVAtIE from .audimedia import AudiMediaIE from .audioboom import AudioBoomIE @@ -243,11 +241,6 @@ from .bitchute import ( BitChuteIE, BitChuteChannelIE, ) -from .bitwave import ( - BitwaveReplayIE, - BitwaveStreamIE, -) -from .biqle import BIQLEIE from .blackboardcollaborate import BlackboardCollaborateIE from .bleacherreport import ( BleacherReportIE, @@ -262,10 +255,7 @@ from .bostonglobe import BostonGlobeIE from .box import BoxIE from .boxcast import BoxCastVideoIE from .bpb import BpbIE -from .br import ( - BRIE, - BRMediathekIE, -) +from .br import BRIE from .bravotv import BravoTVIE from .brainpop import ( BrainPOPIE, @@ -275,7 +265,6 @@ from .brainpop import ( BrainPOPFrIE, BrainPOPIlIE, ) -from .breakcom import BreakIE from .breitbart import BreitBartIE from .brightcove import ( BrightcoveLegacyIE, @@ -305,16 +294,11 @@ from .camfm import ( from .cammodels import CamModelsIE from .camsoda import CamsodaIE from .camtasia import CamtasiaEmbedIE -from .camwithher import CamWithHerIE from .canal1 import Canal1IE from .canalalpha import CanalAlphaIE from .canalplus import CanalplusIE from .canalc2 import Canalc2IE from .caracoltv import CaracolTvPlayIE -from .carambatv import ( - CarambaTVIE, - CarambaTVPageIE, -) from .cartoonnetwork import CartoonNetworkIE from .cbc import ( CBCIE, @@ -353,7 +337,6 @@ from .cda import CDAIE from .cellebrite import CellebriteIE from .ceskatelevize import CeskaTelevizeIE from .cgtn import CGTNIE -from .channel9 import Channel9IE from .charlierose import CharlieRoseIE from .chaturbate import ChaturbateIE from .chilloutzone import ChilloutzoneIE @@ -361,11 +344,6 @@ from .chingari import ( ChingariIE, ChingariUserIE, ) -from .chirbit import ( - ChirbitIE, - ChirbitProfileIE, -) -from .cinchcast import CinchcastIE from .cinemax import CinemaxIE from .cinetecamilano import CinetecaMilanoIE from .cineverse import ( @@ -382,10 +360,8 @@ from .clipchamp import ClipchampIE from .cliphunter import CliphunterIE from .clippit import ClippitIE from .cliprs import ClipRsIE -from .clipsyndicate import ClipsyndicateIE from .closertotruth import CloserToTruthIE from .cloudflarestream import CloudflareStreamIE -from .cloudy import CloudyIE from .cloudycdn import CloudyCDNIE from .clubic import ClubicIE from .clyp import ClypIE @@ -453,7 +429,6 @@ from .dacast import ( DacastVODIE, DacastPlaylistIE, ) -from .daftsex import DaftsexIE from .dailymail import DailyMailIE from .dailymotion import ( DailymotionIE, @@ -490,7 +465,6 @@ from .dlf import ( from .dfb import DFBIE from .dhm import DHMIE from .digg import DiggIE -from .dotsub import DotsubIE from .douyutv import ( DouyuShowIE, DouyuTVIE, @@ -537,7 +511,6 @@ from .duboku import ( DubokuPlaylistIE ) from .dumpert import DumpertIE -from .defense import DefenseGouvFrIE from .deuxm import ( DeuxMIE, DeuxMNewsIE @@ -560,26 +533,17 @@ from .dw import ( from .eagleplatform import EaglePlatformIE, ClipYouEmbedIE from .ebaumsworld import EbaumsWorldIE from .ebay import EbayIE -from .echomsk import EchoMskIE from .egghead import ( EggheadCourseIE, EggheadLessonIE, ) -from .ehow import EHowIE from .eighttracks import EightTracksIE from .einthusan import EinthusanIE from .eitb import EitbIE -from .elevensports import ElevenSportsIE -from .ellentube import ( - EllenTubeIE, - EllenTubeVideoIE, - EllenTubePlaylistIE, -) from .elonet import ElonetIE from .elpais import ElPaisIE from .eltrecetv import ElTreceTVIE from .embedly import EmbedlyIE -from .engadget import EngadgetIE from .epicon import ( EpiconIE, EpiconSeriesIE, @@ -597,7 +561,6 @@ from .ertgr import ( ERTFlixIE, ERTWebtvEmbedIE, ) -from .escapist import EscapistIE from .espn import ( ESPNIE, WatchESPNIE, @@ -605,15 +568,12 @@ from .espn import ( FiveThirtyEightIE, ESPNCricInfoIE, ) -from .esri import EsriVideoIE from .ettutv import EttuTvIE from .europa import EuropaIE, EuroParlWebstreamIE from .europeantour import EuropeanTourIE from .eurosport import EurosportIE from .euscreen import EUScreenIE -from .expotv import ExpoTVIE from .expressen import ExpressenIE -from .extremetube import ExtremeTubeIE from .eyedotv import EyedoTVIE from .facebook import ( FacebookIE, @@ -643,6 +603,10 @@ from .filmweb import FilmwebIE from .firsttv import FirstTVIE from .fivetv import FiveTVIE from .flickr import FlickrIE +from .floatplane import ( + FloatplaneIE, + FloatplaneChannelIE, +) from .folketinget import FolketingetIE from .footyroom import FootyRoomIE from .formula1 import Formula1IE @@ -652,16 +616,11 @@ from .fourtube import ( PornerBrosIE, FuxIE, ) -from .fourzerostudio import ( - FourZeroStudioArchiveIE, - FourZeroStudioClipIE, -) from .fox import FOXIE from .fox9 import ( FOX9IE, FOX9NewsIE, ) -from .foxgay import FoxgayIE from .foxnews import ( FoxNewsIE, FoxNewsArticleIE, @@ -694,7 +653,6 @@ from .funimation import ( ) from .funk import FunkIE from .funker530 import Funker530IE -from .fusion import FusionIE from .fuyintv import FuyinTVIE from .gab import ( GabTVIE, @@ -725,7 +683,6 @@ from .gettr import ( GettrIE, GettrStreamingIE, ) -from .gfycat import GfycatIE from .giantbomb import GiantBombIE from .giga import GigaIE from .glide import GlideIE @@ -771,12 +728,10 @@ from .hbo import HBOIE from .hearthisat import HearThisAtIE from .heise import HeiseIE from .hellporno import HellPornoIE -from .helsinki import HelsinkiIE from .hgtv import HGTVComShowIE from .hketv import HKETVIE from .hidive import HiDiveIE from .historicfilms import HistoricFilmsIE -from .hitbox import HitboxIE, HitboxLiveIE from .hitrecord import HitRecordIE from .hollywoodreporter import ( HollywoodReporterIE, @@ -791,8 +746,6 @@ from .hotstar import ( HotStarSeasonIE, HotStarSeriesIE, ) -from .howcast import HowcastIE -from .howstuffworks import HowStuffWorksIE from .hrefli import HrefLiRedirectIE from .hrfensehen import HRFernsehenIE from .hrti import ( @@ -924,7 +877,6 @@ from .kanal2 import Kanal2IE from .kankanews import KankaNewsIE from .karaoketv import KaraoketvIE from .karrierevideos import KarriereVideosIE -from .keezmovies import KeezMoviesIE from .kelbyone import KelbyOneIE from .khanacademy import ( KhanAcademyIE, @@ -959,12 +911,6 @@ from .la7 import ( LA7PodcastEpisodeIE, LA7PodcastIE, ) -from .laola1tv import ( - Laola1TvEmbedIE, - Laola1TvIE, - EHFTVIE, - ITTFIE, -) from .lastfm import ( LastFMIE, LastFMPlaylistIE, @@ -1019,7 +965,6 @@ from .linkedin import ( LinkedInLearningIE, LinkedInLearningCourseIE, ) -from .linuxacademy import LinuxAcademyIE from .liputan6 import Liputan6IE from .listennotes import ListenNotesIE from .litv import LiTVIE @@ -1053,7 +998,6 @@ from .lynda import ( LyndaIE, LyndaCourseIE ) -from .m6 import M6IE from .magellantv import MagellanTVIE from .magentamusik360 import MagentaMusik360IE from .mailru import ( @@ -1104,10 +1048,7 @@ from .medici import MediciIE from .megaphone import MegaphoneIE from .meipai import MeipaiIE from .melonvod import MelonVODIE -from .meta import METAIE -from .metacafe import MetacafeIE from .metacritic import MetacriticIE -from .mgoon import MgoonIE from .mgtv import MGTVIE from .miaopai import MiaoPaiIE from .microsoftstream import MicrosoftStreamIE @@ -1129,7 +1070,6 @@ from .minds import ( ) from .ministrygrid import MinistryGridIE from .minoto import MinotoIE -from .miomio import MioMioIE from .mirrativ import ( MirrativIE, MirrativUserIE, @@ -1153,13 +1093,7 @@ from .mlb import ( MLBArticleIE, ) from .mlssoccer import MLSSoccerIE -from .mnet import MnetIE from .mocha import MochaVideoIE -from .moevideo import MoeVideoIE -from .mofosex import ( - MofosexIE, - MofosexEmbedIE, -) from .mojvideo import MojvideoIE from .monstercat import MonstercatIE from .morningstar import MorningstarIE @@ -1169,7 +1103,6 @@ from .motherless import ( MotherlessGalleryIE, ) from .motorsport import MotorsportIE -from .movieclips import MovieClipsIE from .moviepilot import MoviepilotIE from .moview import MoviewPlayIE from .moviezine import MoviezineIE @@ -1194,18 +1127,12 @@ from .musicdex import ( MusicdexArtistIE, MusicdexPlaylistIE, ) -from .mwave import MwaveIE, MwaveMeetGreetIE from .mxplayer import ( MxplayerIE, MxplayerShowIE, ) -from .mychannels import MyChannelsIE from .myspace import MySpaceIE, MySpaceAlbumIE from .myspass import MySpassIE -from .myvi import ( - MyviIE, - MyviEmbedIE, -) from .myvideoge import MyVideoGeIE from .myvidster import MyVidsterIE from .mzaalo import MzaaloIE @@ -1281,7 +1208,6 @@ from .newgrounds import ( NewgroundsUserIE, ) from .newspicks import NewsPicksIE -from .newstube import NewstubeIE from .newsy import NewsyIE from .nextmedia import ( NextMediaIE, @@ -1316,7 +1242,6 @@ from .nick import ( NickIE, NickBrIE, NickDeIE, - NickNightIE, NickRuIE, ) from .niconico import ( @@ -1349,8 +1274,6 @@ from .noice import NoicePodcastIE from .nonktube import NonkTubeIE from .noodlemagazine import NoodleMagazineIE from .noovo import NoovoIE -from .normalboots import NormalbootsIE -from .nosvideo import NosVideoIE from .nosnl import NOSNLArticleIE from .nova import ( NovaEmbedIE, @@ -1425,10 +1348,6 @@ from .onet import ( OnetPlIE, ) from .onionstudios import OnionStudiosIE -from .ooyala import ( - OoyalaIE, - OoyalaExternalIE, -) from .opencast import ( OpencastIE, OpencastPlaylistIE, @@ -1457,7 +1376,6 @@ from .palcomp3 import ( PalcoMP3ArtistIE, PalcoMP3VideoIE, ) -from .pandoratv import PandoraTVIE from .panopto import ( PanoptoIE, PanoptoListIE, @@ -1485,7 +1403,6 @@ from .peloton import ( PelotonIE, PelotonLiveIE ) -from .people import PeopleIE from .performgroup import PerformGroupIE from .periscope import ( PeriscopeIE, @@ -1517,13 +1434,10 @@ from .platzi import ( PlatziIE, PlatziCourseIE, ) -from .playfm import PlayFMIE from .playplustv import PlayPlusTVIE -from .plays import PlaysTVIE from .playstuff import PlayStuffIE from .playsuisse import PlaySuisseIE from .playtvak import PlaytvakIE -from .playvid import PlayvidIE from .playwire import PlaywireIE from .plutotv import PlutoTVIE from .pluralsight import ( @@ -1555,9 +1469,7 @@ from .popcorntimes import PopcorntimesIE from .popcorntv import PopcornTVIE from .porn91 import Porn91IE from .pornbox import PornboxIE -from .porncom import PornComIE from .pornflip import PornFlipIE -from .pornhd import PornHdIE from .pornhub import ( PornHubIE, PornHubUserIE, @@ -1568,7 +1480,6 @@ from .pornhub import ( from .pornotube import PornotubeIE from .pornovoisines import PornoVoisinesIE from .pornoxo import PornoXOIE -from .pornez import PornezIE from .puhutv import ( PuhuTVIE, PuhuTVSerieIE, @@ -1612,7 +1523,6 @@ from .radiocomercial import ( ) from .radiode import RadioDeIE from .radiojavan import RadioJavanIE -from .radiobremen import RadioBremenIE from .radiofrance import ( FranceCultureIE, RadioFranceIE, @@ -1664,7 +1574,6 @@ from .rcti import ( RCTIPlusTVIE, ) from .rds import RDSIE -from .recurbate import RecurbateIE from .redbee import ParliamentLiveUKIE, RTBFIE from .redbulltv import ( RedBullTVIE, @@ -1688,7 +1597,6 @@ from .restudy import RestudyIE from .reuters import ReutersIE from .reverbnation import ReverbNationIE from .rheinmaintv import RheinMainTVIE -from .rice import RICEIE from .rmcdecouverte import RMCDecouverteIE from .rockstargames import RockstarGamesIE from .rokfin import ( @@ -1712,11 +1620,7 @@ from .rtlnl import ( RTLLuLiveIE, RTLLuRadioIE, ) -from .rtl2 import ( - RTL2IE, - RTL2YouIE, - RTL2YouSeriesIE, -) +from .rtl2 import RTL2IE from .rtnews import ( RTNewsIE, RTDocumentryIE, @@ -1738,10 +1642,8 @@ from .rtve import ( RTVEInfantilIE, RTVETelevisionIE, ) -from .rtvnh import RTVNHIE from .rtvs import RTVSIE from .rtvslo import RTVSLOIE -from .ruhd import RUHDIE from .rule34video import Rule34VideoIE from .rumble import ( RumbleEmbedIE, @@ -1823,10 +1725,6 @@ from .shahid import ( ShahidIE, ShahidShowIE, ) -from .shared import ( - SharedIE, - VivoIE, -) from .sharevideos import ShareVideosEmbedIE from .sibnet import SibnetEmbedIE from .shemaroome import ShemarooMeIE @@ -1904,7 +1802,6 @@ from .spankbang import ( SpankBangIE, SpankBangPlaylistIE, ) -from .spankwire import SpankwireIE from .spiegel import SpiegelIE from .spike import ( BellatorIE, @@ -1954,7 +1851,6 @@ from .storyfire import ( StoryFireSeriesIE, ) from .streamable import StreamableIE -from .streamcloud import StreamcloudIE from .streamcz import StreamCZIE from .streamff import StreamFFIE from .streetvoice import StreetVoiceIE @@ -1974,7 +1870,6 @@ from .svt import ( SVTSeriesIE, ) from .swearnet import SwearnetEpisodeIE -from .swrmediathek import SWRMediathekIE from .syvdk import SYVDKIE from .syfy import SyfyIE from .sztvhu import SztvHuIE @@ -2001,7 +1896,6 @@ from .teamcoco import ( ConanClassicIE, ) from .teamtreehouse import TeamTreeHouseIE -from .techtalks import TechTalksIE from .ted import ( TedEmbedIE, TedPlaylistIE, @@ -2078,7 +1972,6 @@ from .tiktok import ( TikTokLiveIE, DouyinIE, ) -from .tinypic import TinyPicIE from .tmz import TMZIE from .tnaflix import ( TNAFlixNetworkEmbedIE, @@ -2093,10 +1986,6 @@ from .toggle import ( from .toggo import ( ToggoIE, ) -from .tokentube import ( - TokentubeIE, - TokentubeChannelIE -) from .tonline import TOnlineIE from .toongoggles import ToonGogglesIE from .toutv import TouTvIE @@ -2107,7 +1996,6 @@ from .triller import ( TrillerUserIE, TrillerShortIE, ) -from .trilulilu import TriluliluIE from .trovo import ( TrovoIE, TrovoVodIE, @@ -2132,7 +2020,6 @@ from .tunein import ( TuneInPodcastEpisodeIE, TuneInShortenerIE, ) -from .tunepk import TunePkIE from .turbo import TurboIE from .tv2 import ( TV2IE, @@ -2174,16 +2061,7 @@ from .tvigle import TvigleIE from .tviplayer import TVIPlayerIE from .tvland import TVLandIE from .tvn24 import TVN24IE -from .tvnet import TVNetIE from .tvnoe import TVNoeIE -from .tvnow import ( - TVNowIE, - TVNowFilmIE, - TVNowNewIE, - TVNowSeasonIE, - TVNowAnnualIE, - TVNowShowIE, -) from .tvopengr import ( TVOpenGrWatchIE, TVOpenGrEmbedIE, @@ -2201,7 +2079,6 @@ from .tvplay import ( ) from .tvplayer import TVPlayerIE from .tweakers import TweakersIE -from .twentyfourvideo import TwentyFourVideoIE from .twentymin import TwentyMinutenIE from .twentythreevideo import TwentyThreeVideoIE from .twitcasting import ( @@ -2250,7 +2127,6 @@ from .drooble import DroobleIE from .umg import UMGDeIE from .unistra import UnistraIE from .unity import UnityIE -from .unscripted import UnscriptedNewsVideoIE from .unsupported import KnownDRMIE, KnownPiracyIE from .uol import UOLIE from .uplynk import ( @@ -2269,7 +2145,6 @@ from .ustudio import ( from .utreon import UtreonIE from .varzesh3 import Varzesh3IE from .vbox7 import Vbox7IE -from .veehd import VeeHDIE from .veo import VeoIE from .veoh import ( VeohIE, @@ -2291,7 +2166,6 @@ from .vice import ( ViceArticleIE, ViceShowIE, ) -from .vidbit import VidbitIE from .viddler import ViddlerIE from .videa import VideaIE from .videocampus_sachsen import ( @@ -2342,7 +2216,6 @@ from .vimm import ( VimmIE, VimmRecordingIE, ) -from .vimple import VimpleIE from .vine import ( VineIE, VineUserIE, @@ -2366,10 +2239,8 @@ from .vk import ( VKPlayLiveIE, ) from .vocaroo import VocarooIE -from .vodlocker import VodlockerIE from .vodpl import VODPlIE from .vodplatform import VODPlatformIE -from .voicerepublic import VoiceRepublicIE from .voicy import ( VoicyIE, VoicyChannelIE, @@ -2389,23 +2260,13 @@ from .vrt import ( KetnetIE, DagelijkseKostIE, ) -from .vrak import VrakIE -from .vrv import ( - VRVIE, - VRVSeriesIE, -) -from .vshare import VShareIE from .vtm import VTMIE from .medialaan import MedialaanIE from .vuclip import VuClipIE -from .vupload import VuploadIE from .vvvvid import ( VVVVIDIE, VVVVIDShowIE, ) -from .vyborymos import VyboryMosIE -from .vzaar import VzaarIE -from .wakanim import WakanimIE from .walla import WallaIE from .washingtonpost import ( WashingtonPostIE, @@ -2417,8 +2278,6 @@ from .wasdtv import ( WASDTVClipIE, ) from .wat import WatIE -from .watchbox import WatchBoxIE -from .watchindianporn import WatchIndianPornIE from .wdr import ( WDRIE, WDRPageIE, @@ -2452,7 +2311,6 @@ from .wevidi import WeVidiIE from .weyyak import WeyyakIE from .whyp import WhypIE from .wikimedia import WikimediaIE -from .willow import WillowIE from .wimbledon import WimbledonIE from .wimtv import WimTVIE from .whowatch import WhoWatchIE @@ -2486,7 +2344,6 @@ from .wykop import ( WykopPostCommentIE, ) from .xanimu import XanimuIE -from .xbef import XBefIE from .xboxclips import XboxClipsIE from .xfileshare import XFileShareIE from .xhamster import ( @@ -2502,8 +2359,6 @@ from .xinpianchang import XinpianchangIE from .xminus import XMinusIE from .xnxx import XNXXIE from .xstream import XstreamIE -from .xtube import XTubeUserIE, XTubeIE -from .xuite import XuiteIE from .xvideos import ( XVideosIE, XVideosQuickiesIE @@ -2533,10 +2388,7 @@ from .yappy import ( YappyIE, YappyProfileIE, ) -from .yesjapan import YesJapanIE -from .yinyuetai import YinYueTaiIE from .yle_areena import YleAreenaIE -from .ynet import YnetIE from .youjizz import YouJizzIE from .youku import ( YoukuIE, diff --git a/yt_dlp/extractor/airmozilla.py b/yt_dlp/extractor/airmozilla.py deleted file mode 100644 index 669556b98f..0000000000 --- a/yt_dlp/extractor/airmozilla.py +++ /dev/null @@ -1,63 +0,0 @@ -import re - -from .common import InfoExtractor -from ..utils import ( - int_or_none, - parse_duration, - parse_iso8601, -) - - -class AirMozillaIE(InfoExtractor): - _VALID_URL = r'https?://air\.mozilla\.org/(?P[0-9a-z-]+)/?' - _TEST = { - 'url': 'https://air.mozilla.org/privacy-lab-a-meetup-for-privacy-minded-people-in-san-francisco/', - 'md5': '8d02f53ee39cf006009180e21df1f3ba', - 'info_dict': { - 'id': '6x4q2w', - 'ext': 'mp4', - 'title': 'Privacy Lab - a meetup for privacy minded people in San Francisco', - 'thumbnail': r're:https?://.*/poster\.jpg', - 'description': 'Brings together privacy professionals and others interested in privacy at for-profits, non-profits, and NGOs in an effort to contribute to the state of the ecosystem...', - 'timestamp': 1422487800, - 'upload_date': '20150128', - 'location': 'SFO Commons', - 'duration': 3780, - 'view_count': int, - 'categories': ['Main', 'Privacy'], - } - } - - def _real_extract(self, url): - display_id = self._match_id(url) - webpage = self._download_webpage(url, display_id) - video_id = self._html_search_regex(r'//vid\.ly/(.*?)/embed', webpage, 'id') - - embed_script = self._download_webpage('https://vid.ly/{0}/embed'.format(video_id), video_id) - jwconfig = self._parse_json(self._search_regex( - r'initCallback\((.*)\);', embed_script, 'metadata'), video_id)['config'] - - info_dict = self._parse_jwplayer_data(jwconfig, video_id) - view_count = int_or_none(self._html_search_regex( - r'Views since archived: ([0-9]+)', - webpage, 'view count', fatal=False)) - timestamp = parse_iso8601(self._html_search_regex( - r'