You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yt-dlp/youtube_dl/extractor
Philipp Hagemeister 0d2c141865 [youtube] Detect formats 298 et al as mp4 (Fixes #4066) 10 years ago
..
__init__.py [niconico] Add extractor for playlists (closes #4043) 10 years ago
abc.py [common] Add new helper function _match_id 10 years ago
academicearth.py Move playlist tests to extractors. 10 years ago
addanime.py [addanime] Modernize 11 years ago
adultswim.py [adultswim] Avoid extremely long lines 10 years ago
aftonbladet.py removed duplicate and somemtimes incorrect logic for parsing upload date as this job is already taken care of automatically by YoutubeDL.py 11 years ago
allocine.py [allocine] Update tests 11 years ago
anitube.py [anitube] Modernize 11 years ago
anysex.py [anysex] Fix extraction 10 years ago
aol.py Move playlist tests to extractors. 10 years ago
aparat.py [aparat] modernize 10 years ago
appletrailers.py [appletrailers] Support height-less videos 10 years ago
archiveorg.py
ard.py [ard] make rss match more universal 10 years ago
arte.py [arte.tv] Remove unused import 10 years ago
audiomack.py Remove unused imports 10 years ago
auengine.py [auengine] Simplify 10 years ago
bambuser.py Move playlist tests to extractors. 10 years ago
bandcamp.py [bandcamp] Fix id extraction and modernize (Closes #3866) 10 years ago
bbccouk.py [bbccouk] Add friendly contry filter error message (#2184) 11 years ago
beeg.py [beeg] Extract all formats 10 years ago
behindkink.py [behindkink] Remove call to report_extraction 10 years ago
bild.py [bild] Simplify (#3983) 10 years ago
bilibili.py [bilibili] Fix extraction 11 years ago
blinkx.py [blinkx] Fix duration 10 years ago
bliptv.py [bliptv] Remove superfluous characters in _VALID_URL regex 10 years ago
bloomberg.py [bloomberg] Extract the available formats (closes #2776) 10 years ago
br.py Remove unused imports 10 years ago
breakcom.py [breakcom] Extract all formats 10 years ago
brightcove.py [brightcove] Add a test for playlists 10 years ago
byutv.py [byutv] Fix test 11 years ago
c56.py [c56] Modernize and add duration extraction 11 years ago
canal13cl.py [canal13cl] Add test and improve extraction (#2498) 11 years ago
canalc2.py [canalc2] Modernize 11 years ago
canalplus.py [canalplus] Fix id determination (Fixes #2851) 11 years ago
cbs.py [cbs] Update test video id 10 years ago
cbsnews.py [cbsnews] Add support for cbsnews.com (Closes #2691) 11 years ago
ceskatelevize.py [ceskatelevize] Simplify 11 years ago
channel9.py [channel9] Simplify 11 years ago
chilloutzone.py [chilloutzone] Make test case more flexible 10 years ago
cinemassacre.py [cinemassacre] Fix extraction (Closes #4008) 10 years ago
clipfish.py [clipfish] Modernize 11 years ago
cliphunter.py Remove unused imports 10 years ago
clipsyndicate.py [clipsyndicate] Modernize 11 years ago
cloudy.py [cloudy] Retry extraction on 410 status code (#3743 #3744) 10 years ago
clubic.py [clubic] Add extractor (Fixes #2773) 11 years ago
cmt.py [cmt] Simplify (mentioned in #2072) 11 years ago
cnet.py [cnet] Fix title extraction 11 years ago
cnn.py [cnn] Fix for urls ending in '.cnn-ap' (fixes #3985) 10 years ago
collegehumor.py [collegehumor] Fix one more test 11 years ago
comedycentral.py [comedycentral] Prefer RTMP for now 10 years ago
common.py Sort formats by fps as well 10 years ago
condenast.py [condenast] Add support for embedded videos (Closes #3929) 10 years ago
cracked.py [crackled] Improve, fix invalid regexes and extract more metadata 11 years ago
criterion.py [criterion] Simplify and modernize 11 years ago
crunchyroll.py [crunchycroll] Fix building of ass subtitles (reported in #4019) 10 years ago
cspan.py Move playlist tests to extractors. 10 years ago
d8.py
dailymotion.py [dailymotion] Alternative title search (Fixes #3882) 10 years ago
daum.py [daum] Support non-numeric video IDs (Fixes #3749) 10 years ago
dbtv.py [dbtv] Simplify, modernize, extract all formats 10 years ago
deezer.py [deezer] Add support for geoblocking 10 years ago
defense.py
dfb.py [dfb] Fix f4m manifest URL 10 years ago
discovery.py [discovery] Change default url 11 years ago
divxstage.py [divxstage] added .to TLD 10 years ago
dotsub.py [dotsub] Modernize 11 years ago
dreisat.py [dreisat] Modernize 11 years ago
dropbox.py [dropbox] Fix the video url query (fixes #3868) 10 years ago
drtuber.py [drtuber] Fix categories 10 years ago
drtv.py [drtv] Allow fractional timestamps (Fixes #4059) 10 years ago
dump.py [dump] Modernize (#3565) 10 years ago
ebaumsworld.py [ebaumsworld] Remove spurious determine_ext 10 years ago
ehow.py [ehow] Modernize 11 years ago
eighttracks.py [eighttracks] modernize 10 years ago
einthusan.py [einthusan] Add description and beautify 10 years ago
eitb.py [eitb] Modernize 10 years ago
ellentv.py [ellentv] Simplify and correct tests 10 years ago
elpais.py [elpais] Fix typo 11 years ago
empflix.py [empflix] Rewrite in terms of tnaflix 10 years ago
engadget.py Add extractor for Engadget and 5min (closes #2465) 11 years ago
eporner.py [eporner] Adapt to changed default format 10 years ago
escapist.py [escapist] Add support for og:video:url (Fixes #3557) 10 years ago
everyonesmixtape.py Move playlist tests to extractors. 10 years ago
exfm.py [exfm] Modernize 11 years ago
expotv.py [expotv] Add new extractor (Fixes #3552) 10 years ago
extremetube.py [extremetube] Fix extraction 10 years ago
facebook.py [facebook] Fix test case 10 years ago
faz.py Remove unused imports 10 years ago
fc2.py [fc2] Fall back to webpage title if needed 11 years ago
firedrive.py [firedrive] fix broken extractor 10 years ago
firstpost.py [firstpost] Fix title extraction and add description 11 years ago
firsttv.py [firsttv] Skip test 11 years ago
fivemin.py [5min] Raise an error if the 'success' field is False 11 years ago
fktv.py [fktv] Remove unused import 10 years ago
flickr.py [flickr] Modernize 10 years ago
fourtube.py [4tube] Fix import 11 years ago
franceculture.py [franceculture] Add extractor (Fixes #2669) 11 years ago
franceinter.py [franceinter] Fix extraction and modernize 10 years ago
francetv.py [francetv] Remove changing md5sum 10 years ago
freesound.py [freesound] Modernize 11 years ago
freespeech.py
funnyordie.py [funnyordie] Fix extraction (Closes #4011) 10 years ago
gamekings.py [gamekings] Update test description 11 years ago
gameone.py [gameone:playlist] Move test to extractor 10 years ago
gamespot.py [gamespot] Update test URL and modernize 11 years ago
gamestar.py [gamestar] Use helper methods to not break if something changes (#3393) 10 years ago
gametrailers.py [gametrailers] Fix gametrailers test 11 years ago
gdcvault.py [gdcvault] Add support for direct URL video type 10 years ago
generic.py [generic] Allow soundcloud embeds with additional attributes 10 years ago
glide.py [glide] Simplify 10 years ago
globo.py [globo] Initial extractor implementation (Closes #3823) 10 years ago
godtube.py [godtube] Fix on Python 2.6 10 years ago
golem.py [golem] Fix under 2.6 10 years ago
googleplus.py [googleplus] Modernize and extract all formats 10 years ago
googlesearch.py [googlesearch] Move test to extractor 10 years ago
gorillavid.py [gorillavid] Fix test title 10 years ago
goshgay.py [goshgay] PEP8 and test for age_limit (#3220) 11 years ago
grooveshark.py [grooveshark] Use proper imports 10 years ago
hark.py [hark] Modernize 10 years ago
heise.py [heise] Fix extraction 10 years ago
helsinki.py [helsinki] Simplify 11 years ago
hentaistigma.py [hentaistigma] Simplified (#2902) 11 years ago
hornbunny.py [hornbunny] Simplify and add age_limit 10 years ago
hostingbulk.py [hostingbulk] Simplify 10 years ago
hotnewhiphop.py
howcast.py [howcast] Modernize 11 years ago
howstuffworks.py Replace 404 url 10 years ago
huffpost.py [huffpost] Modernize 10 years ago
hypem.py Remove unused import 11 years ago
iconosquare.py [iconosquare] Simplify 10 years ago
ign.py [ign] Return proper playlist object 10 years ago
imdb.py Move playlist tests to extractors. 10 years ago
ina.py [ina] Improve _VALID_URL regex (fixes #2328) 11 years ago
infoq.py [infoq] Add support for HTTP downloads (Fixes #722) 11 years ago
instagram.py Move playlist tests to extractors. 10 years ago
internetvideoarchive.py [internetvideoarchive] Fix test case 10 years ago
iprima.py [iprima] Fix permission check regex 11 years ago
ivi.py Move playlist tests to extractors. 10 years ago
izlesene.py [izlesene] Prepend scheme to thumbnails 10 years ago
jadorecettepub.py [jadorecettepub] Remove unused import 11 years ago
jeuxvideo.py [jeuxvideo] Modernize 11 years ago
jove.py [jove] Simplify, extract full description and add test for video that requires subscription 10 years ago
jpopsukitv.py [jpopsuki] More modernize 10 years ago
jukebox.py [jukebox] Remove md5 sum, it fluctuates 10 years ago
kankan.py
keek.py
keezmovies.py [keezmovies] Modernize 11 years ago
khanacademy.py [khanacademy] Improve _VALID_URL (Closes #3695) 10 years ago
kickstarter.py [kickstarter] Simplify and fix test case 10 years ago
kontrtube.py [kontrtube] Fix video title extraction 10 years ago
krasview.py [krasview] Add extractor (Closes #3313) 11 years ago
ku6.py [ku6] Modernize 10 years ago
la7.py
laola1tv.py [laola1tv] Mark as broken 10 years ago
lifenews.py [LifeNews] update thumbnail in test 11 years ago
liveleak.py [liveleak] Add support for prochan embeds (Fixes #2406) 11 years ago
livestream.py [livestream:original] Fix RTMP parameters (Fixes #4040) 10 years ago
lrt.py [lrt] Modernize 10 years ago
lynda.py [lynda] Modernize 11 years ago
m6.py [m6] Add support for m6.fr (Closes #2313) 11 years ago
macgamestore.py
mailru.py [mailru] Add support for new mail.ru URL format (Closes #3024) 11 years ago
malemotion.py
mdr.py [mdr] Remove unused imports 11 years ago
metacafe.py [metacafe] Add support for movieclips videos (Fixes #3555) 10 years ago
metacritic.py [metacritic] Modernize test 11 years ago
mgoon.py [mgoon] Add new extractor 10 years ago
ministrygrid.py [ministrygrid] Add extractor (Fixes #2900) 10 years ago
mit.py [mit] Fix MITIE test 11 years ago
mitele.py [mitele] Fix on python 2.x 10 years ago
mixcloud.py [mixcloud] Output downloading progress 10 years ago
mlb.py [mlb] Remove unused import 10 years ago
moevideo.py [moevideo] Make filesize exact 10 years ago
mofosex.py [mfs] Modernize 10 years ago
mojvideo.py [mojvideo] Switch to API, handle errors, remove faked width and height 10 years ago
moniker.py [moniker] rename from hypestat (#3788) 10 years ago
mooshare.py [mooshare] Add support for URLs starting with 'www' 11 years ago
morningstar.py [morningstar] Also support 'Cover' (#2729) 11 years ago
motherless.py [motherless] Simplify 10 years ago
motorsport.py [motorsport] Fix on Python 3 11 years ago
movieclips.py [movieclips] Add extractor (Closes #3554) 10 years ago
moviezine.py [moviezine] Add extractor for moviezine.se (fixes #2808) 11 years ago
movshare.py [movshare] Support more domains 11 years ago
mpora.py [mpora] Fix player regex 11 years ago
mtv.py Test for colon in mgid 11 years ago
muenchentv.py [muenchentv] Add thumbnail 10 years ago
musicplayon.py [musicplayon] Add support for musicplayon.com 11 years ago
musicvault.py fix up imports 10 years ago
muzu.py
myspace.py
myspass.py
myvideo.py [myvideo] Modernize 11 years ago
naver.py [naver] Capture and output error message (#4057) 10 years ago
nba.py [nba] Modernize 10 years ago
nbc.py [nbc] Fix ThePlatform embedded videos 10 years ago
ndr.py Description changed 10 years ago
ndtv.py [ndtv] Fix title extraction and modernize 11 years ago
newgrounds.py
newstube.py [newstube] Replace test 11 years ago
nfb.py [nfb] Add support for videos with captions (#2866) 11 years ago
nfl.py [nfl] Use compatible urlparse 10 years ago
nhl.py Remove unused imports 10 years ago
niconico.py [niconico] Add extractor for playlists (closes #4043) 10 years ago
ninegag.py [ninegag] Fix extraction 11 years ago
noco.py [noco] Encode before passing to hashlib.md5 (Closes #3816) 10 years ago
normalboots.py [normalboots] Modernize and simplify 11 years ago
nosvideo.py [nosvideo] Make more robust against missing metadata 10 years ago
novamov.py [novamov] Simplify 11 years ago
nowness.py [nowness] Add support for cn URLs (Closes #3465) 10 years ago
nowvideo.py [nowvideo] Support more domains 11 years ago
npo.py [npo] Add extractor for tegenlicht.vpro.nl (closes #3778) 10 years ago
nrk.py Fix test 11 years ago
ntv.py Remove unused imports 11 years ago
nuvid.py [nuvid] Adapt to latest layout changes 10 years ago
nytimes.py [nytimes] Improve file size extraction 11 years ago
oktoberfesttv.py [oktoberfesttv] Add new extractor (Fixes #3845) 10 years ago
ooyala.py [ooyala] Try mobile player JS URLs for all available devices (Closes #3498) 10 years ago
orf.py [orf] Move all ORF extractors in one place 10 years ago
parliamentliveuk.py Remove unused imports and clarify variable names 11 years ago
patreon.py [patreon] Remove unused import 10 years ago
pbs.py [pbs] Add support for tabbed frontline videos (Closes #4006) 10 years ago
phoenix.py [phoenix] Add new extractor (Fixes #4036) 10 years ago
photobucket.py Merge remote-tracking branch 'codesparkle/fix-photobucket-url' (closes #2934) 11 years ago
planetaplay.py [planetaplay] Add new extractor (closes #3839) 10 years ago
played.py [played] Remove unused import 10 years ago
playfm.py [playfm] Fix view count and add comment count 10 years ago
playvid.py [playvid] Simplify (#2539) 11 years ago
podomatic.py [podomatic] Improve video URL extraction (Closes #2763) 11 years ago
pornhd.py [pornhd] Fix formats extraction (Closes #3898) 10 years ago
pornhub.py [pornhub] Modernize and fix test definition 10 years ago
pornotube.py [pornotube] Modernize 10 years ago
pornoxo.py [pornoxo] Fix test (view count) 10 years ago
promptfile.py [promptfile] Fix check for deleted videos 10 years ago
prosiebensat1.py [prosiebensat1] Fix test case 10 years ago
pyvideo.py [pyvideo] Fix title extraction 11 years ago
quickvid.py [quickvid] Add new extractor 10 years ago
radiofrance.py [radiofrance] Modernize 11 years ago
rai.py [rai] Skip test 11 years ago
rbmaradio.py
redtube.py Redtube changed player config, new place to get thumb URL 11 years ago
reverbnation.py [reverbnation] The 'uploader_id' field must be a string 10 years ago
ringtv.py
ro220.py [ro220] Fix broken extractor and modernize (#4054) 10 years ago
rottentomatoes.py
roxwel.py [roxwel] Modernize 11 years ago
rtbf.py [rtbf] Fix data video regex 11 years ago
rtlnl.py [rtlnl] Add support for progressive videos (Closes #3603) 10 years ago
rtlnow.py [pornhub] Modernize and fix test definition 10 years ago
rts.py [rts] Update test 11 years ago
rtve.py [rtve.es:live] Start supporting the 24h channel 10 years ago
ruhd.py [ruhd] Simplify 10 years ago
rutube.py Move playlist tests to extractors. 10 years ago
rutv.py [rutv] Fix rutv player regex 10 years ago
sapo.py [sapo] Add extractor (Closes #2816) 11 years ago
savefrom.py [savefrom] Make test description more flexible 11 years ago
sbs.py [sbs] Recognize urls with format 'http://www.sbs.com.au/ondemand/video/<id>' (#3811) 10 years ago
scivee.py [scivee] Revert test file download 11 years ago
screencast.py [screencast] Add one more format and improve title extraction 11 years ago
servingsys.py
sexykarma.py [sexykarma] Add support for watchindianporn 10 years ago
shared.py [shared] Update test 10 years ago
sharesix.py [sharesix] Add new extractor 10 years ago
sina.py
slideshare.py [slideshare] Fix description 11 years ago
slutload.py Remove unused imports 11 years ago
smotri.py Move playlist tests to extractors. 10 years ago
snotr.py [snotr] Add description 11 years ago
sockshare.py [sockshare] Fix title extraction (Fixes #3592) 10 years ago
sohu.py [sohu] Skip test 11 years ago
soundcloud.py [soundcloud] Set the 'webpage_url' field for each track 10 years ago
soundgasm.py [soundgasm] PEP8 and add a display_id (#3155) 11 years ago
southpark.py rename southparkstudios.py to southpark.py 11 years ago
space.py [space] modernize 11 years ago
spankwire.py [spankwire] Fix extraction 10 years ago
spiegel.py [spiegel] Remove deleted video from test cases 10 years ago
spiegeltv.py [spiegeltv] Simplify and PEP8 11 years ago
spike.py [spike] Add support for mobile urls 11 years ago
sport5.py [sport5] Capture error message and improve 10 years ago
sportbox.py Remove unused imports 10 years ago
sportdeutschland.py [sportdeutschland] Fix testcase 10 years ago
srmediathek.py [srmediathek] Choose variable name more wisely 10 years ago
stanfordoc.py
steam.py [steam] Update test description 11 years ago
streamcloud.py [streamcloud] Remove duration and modernize (Closes #3374) 10 years ago
streamcz.py [streamcz] Workaround CertificateError 11 years ago
subtitles.py [subtittles] Check that the result is not empty 11 years ago
sunporno.py [sunporno] Fix duration extraction and make more robust 10 years ago
swrmediathek.py [swrmediathek] Remove deleted video test case 10 years ago
syfy.py [syfy] Remove test checksum 10 years ago
sztvhu.py
tagesschau.py [tagesschau] Remove test case 11 years ago
tapely.py [tapely] Catch SoundCloud tracks 10 years ago
teachertube.py Move playlist tests to extractors. 10 years ago
teachingchannel.py [teachingchannel] Add extractor (closes #3048) 11 years ago
teamcoco.py [teamcoco] Update video id regex 10 years ago
techtalks.py [techtalks] Modernize 10 years ago
ted.py [ted] Add support for external videos (fixes #3948) 10 years ago
telecinco.py [telecino] Add coding declaration 10 years ago
telemb.py [telemb] Add comment to test 10 years ago
tenplay.py Remove unused imports 11 years ago
testurl.py [testurl] Fix case when only one IE matches 11 years ago
tf1.py [tf1] Modernize 11 years ago
theonion.py [theonion] Fix a small mistake in string formatting 10 years ago
theplatform.py [nbc] Fix ThePlatform embedded videos 10 years ago
thesixtyone.py [thesixtyone] Add new extractor (closes #3781) 10 years ago
thisav.py [thisav] Simplify and use unicode literals 11 years ago
thvideo.py [thvideo] Simplify (#3848) 10 years ago
tinypic.py [tinypic] Fix import 11 years ago
tlc.py [tlc.de] If the url contains a fragment, use if in the iframe url (reported in #2748) 11 years ago
tnaflix.py [tnaflix] Improve and make generic 10 years ago
toutv.py [toutv] Use unicode literals 11 years ago
toypics.py [toypics:user] Update test playlist count 10 years ago
traileraddict.py
trilulilu.py
trutube.py [trutube] Fix extraction 10 years ago
tube8.py [tube8] Improve _VALID_URL and add display_id 10 years ago
tudou.py [tudou] Add test case for #3643 10 years ago
tumblr.py [tumblr] Fix extraction (fixes #4029) 10 years ago
turbo.py [turbo] Add new extractor 10 years ago
tutv.py [tutv] Replace 404 test and modernize 11 years ago
tvigle.py [tvigle] Extract format file sizes 10 years ago
tvp.py
tvplay.py [tvplay] Support similar services in different countries 10 years ago
twitch.py [twitch] Remove superfluous comma 10 years ago
ubu.py [ubu] Add extractor (Close #3418) 10 years ago
udemy.py [udemy] Make sure test case is not inherited 11 years ago
unistra.py [unistra] Modernize 10 years ago
urort.py [urort] Add date 11 years ago
ustream.py [ustream:channel] Change test playlist size (Seems to have been limited that way on the website as well) 10 years ago
vbox7.py [vbox7] Don't set the extension to 'flv' (fixes #3836) 10 years ago
veehd.py [veehd] Modernize 10 years ago
veoh.py [veoh] Skip deleted test video 11 years ago
vesti.py [vesti] Restore vesti extractor 11 years ago
vevo.py Remove unused imports 10 years ago
vgtv.py [vgtv] Fix test title 10 years ago
vh1.py [vh1] Skip tests (Do not work from Germany) 11 years ago
viddler.py [viddler] Use API 10 years ago
videobam.py [videobam] Fix empty title handling 11 years ago
videodetective.py [videodetective] Modernize 11 years ago
videofyme.py
videolecturesnet.py [videolectures.net] Make description optional 11 years ago
videomega.py [videomega] Simplify (#3786) 10 years ago
videopremium.py
videott.py [VideoTt] fix ValueError (#3161) 11 years ago
videoweed.py [videoweed] Revert _FILE_DELETED_REGEX 11 years ago
vidme.py [vidme] Add extractor (Closes #3404) 10 years ago
vidzi.py [vidzi] Use proper test case and simplify (#3989) 10 years ago
viki.py [pbs] Add support for video ratings 11 years ago
vimeo.py [vimeo:review] Fix test title 10 years ago
vimple.py [vimple] Simplify and PEP8 11 years ago
vine.py [vine:user] Adapt test to changed list size 10 years ago
vk.py [vk] Generalize errors 10 years ago
vodlocker.py [vodlocker] Allow title to end with a <br> 10 years ago
vporn.py [vporn] Make video URL regex more strict 10 years ago
vrt.py [vrt] Improve extractor 10 years ago
vube.py [vube] Update tests 10 years ago
vuclip.py [vuclip] Fix regexp 10 years ago
vulture.py [Vulture] Add support for vulture.com 11 years ago
walla.py [walla] Fix extractor and add subtitle tests 10 years ago
washingtonpost.py [washingtonpost] Add playlist title to test 10 years ago
wat.py [wat] Skip test 10 years ago
wayofthemaster.py [wayofthemaster] Remove unused import 10 years ago
wdr.py [wdr] fix up imports 11 years ago
weibo.py [weibo] Modernize 11 years ago
wimp.py [wimp] Update video URL regex 10 years ago
wistia.py [wistia] Use API and make more generic 10 years ago
worldstarhiphop.py [worldstarhiphop] Correct title extraction 10 years ago
wrzuta.py [wrzuta] Add age limit 11 years ago
xbef.py [xbef] (Add extractor) 11 years ago
xboxclips.py [xboxclips] PEP8 and extract more metadata 10 years ago
xhamster.py [xhamster] Remove md5sums from tests 10 years ago
xnxx.py [xnxx] Modernize 11 years ago
xtube.py [xtube] Fix test description 10 years ago
xvideos.py [xvideos] Replace test 11 years ago
yahoo.py [yahoo] Generalize, support arbitrary subdomains, support iframe videos, capture error message (Closes #2470) 10 years ago
ynet.py [ynet] Remove test md5sums 10 years ago
youjizz.py [youjizz] Don't make the url protocol optional (fixes #3722) 10 years ago
youku.py Remove unused imports 10 years ago
youporn.py [youporn] Remove md5 from test 10 years ago
yourupload.py [yourupload] Add new extractor. Fixes #3085 10 years ago
youtube.py [youtube] Detect formats 298 et al as mp4 (Fixes #4066) 10 years ago
zdf.py [phoenix] Add new extractor (Fixes #4036) 10 years ago