]> jfr.im git - yt-dlp.git/blame - yt_dlp/extractor/peertube.py
[cleanup] Add more ruff rules (#10149)
[yt-dlp.git] / yt_dlp / extractor / peertube.py
CommitLineData
e9a30b18 1import functools
6bd499e8
S
2import re
3
c561b75c 4from .common import InfoExtractor
c561b75c 5from ..utils import (
e897bd82 6 OnDemandPagedList,
e0ddbd02 7 format_field,
c561b75c
S
8 int_or_none,
9 parse_resolution,
ac379fa2 10 str_or_none,
c561b75c
S
11 try_get,
12 unified_timestamp,
3052a30d 13 url_or_none,
c561b75c
S
14 urljoin,
15)
16
17
18class PeerTubeIE(InfoExtractor):
6bd499e8 19 _INSTANCES_RE = r'''(?:
c561b75c 20 # Taken from https://instances.joinpeertube.org/instances
35d96982
C
21 0ch\.tv|
22 3dctube\.3dcandy\.social|
23 all\.electric\.kitchen|
24 alterscope\.fr|
25 anarchy\.tube|
26 apathy\.tv|
27 apertatube\.net|
28 archive\.nocopyrightintended\.tv|
29 archive\.reclaim\.tv|
30 area51\.media|
31 astrotube-ufe\.obspm\.fr|
32 astrotube\.obspm\.fr|
33 audio\.freediverse\.com|
34 azxtube\.youssefc\.tn|
35 bark\.video|
f60990dd 36 battlepenguin\.video|
35d96982
C
37 bava\.tv|
38 bee-tube\.fr|
39 beetoons\.tv|
40 biblion\.refchat\.net|
41 biblioteca\.theowlclub\.net|
f60990dd 42 bideoak\.argia\.eus|
35d96982
C
43 bideoteka\.eus|
44 birdtu\.be|
f60990dd 45 bitcointv\.com|
35d96982
C
46 bonn\.video|
47 breeze\.tube|
48 brioco\.live|
49 brocosoup\.fr|
50 canal\.facil\.services|
51 canard\.tube|
52 cdn01\.tilvids\.com|
53 celluloid-media\.huma-num\.fr|
54 chicago1\.peertube\.support|
55 cliptube\.org|
56 cloudtube\.ise\.fraunhofer\.de|
f60990dd 57 comf\.tube|
35d96982
C
58 comics\.peertube\.biz|
59 commons\.tube|
60 communitymedia\.video|
f60990dd 61 conspiracydistillery\.com|
35d96982
C
62 crank\.recoil\.org|
63 dalek\.zone|
64 dalliance\.network|
65 dangly\.parts|
f60990dd 66 darkvapor\.nohost\.me|
67 daschauher\.aksel\.rocks|
68 digitalcourage\.video|
35d96982
C
69 displayeurope\.video|
70 ds106\.tv|
71 dud-video\.inf\.tu-dresden\.de|
72 dud175\.inf\.tu-dresden\.de|
73 dytube\.com|
74 ebildungslabor\.video|
f60990dd 75 evangelisch\.video|
f60990dd 76 fair\.tube|
35d96982
C
77 fedi\.video|
78 fedimovie\.com|
f60990dd 79 fediverse\.tv|
80 film\.k-prod\.fr|
35d96982
C
81 flipboard\.video|
82 foss\.video|
83 fossfarmers\.company|
f60990dd 84 fotogramas\.politicaconciencia\.org|
35d96982
C
85 freediverse\.com|
86 freesoto-u2151\.vm\.elestio\.app|
87 freesoto\.tv|
88 garr\.tv|
f60990dd 89 greatview\.video|
90 grypstube\.uni-greifswald\.de|
35d96982
C
91 habratube\.site|
92 ilbjach\.ru|
93 infothema\.net|
94 itvplus\.iiens\.net|
95 johnydeep\.net|
f60990dd 96 juggling\.digital|
35d96982
C
97 jupiter\.tube|
98 kadras\.live|
f60990dd 99 kino\.kompot\.si|
100 kino\.schuerz\.at|
101 kinowolnosc\.pl|
102 kirche\.peertube-host\.de|
35d96982 103 kiwi\.froggirl\.club|
f60990dd 104 kodcast\.com|
105 kolektiva\.media|
35d96982 106 kpop\.22x22\.ru|
f60990dd 107 kumi\.tube|
35d96982
C
108 la2\.peertube\.support|
109 la3\.peertube\.support|
110 la4\.peertube\.support|
f60990dd 111 lastbreach\.tv|
35d96982
C
112 lawsplaining\.peertube\.biz|
113 leopard\.tube|
114 live\.codinglab\.ch|
f60990dd 115 live\.libratoi\.org|
35d96982
C
116 live\.oldskool\.fi|
117 live\.solari\.com|
f60990dd 118 lucarne\.balsamine\.be|
35d96982
C
119 luxtube\.lu|
120 makertube\.net|
121 media\.econoalchemist\.com|
122 media\.exo\.cat|
a35155be 123 media\.fsfe\.org|
f60990dd 124 media\.gzevd\.de|
35d96982 125 media\.interior\.edu\.uy|
f60990dd 126 media\.krashboyz\.org|
35d96982
C
127 media\.mzhd\.de|
128 media\.smz-ma\.de|
129 media\.theplattform\.net|
f60990dd 130 media\.undeadnetwork\.de|
35d96982 131 medias\.debrouillonet\.org|
f60990dd 132 medias\.pingbase\.net|
35d96982 133 mediatube\.fermalo\.fr|
f60990dd 134 melsungen\.peertube-host\.de|
35d96982
C
135 merci-la-police\.fr|
136 mindlyvideos\.com|
137 mirror\.peertube\.metalbanana\.net|
138 mirrored\.rocks|
139 mix\.video|
f60990dd 140 mountaintown\.video|
35d96982
C
141 movies\.metricsmaster\.eu|
142 mtube\.mooo\.com|
f60990dd 143 mytube\.kn-cloud\.de|
35d96982 144 mytube\.le5emeaxe\.fr|
f60990dd 145 mytube\.madzel\.de|
35d96982 146 nadajemy\.com|
f60990dd 147 nanawel-peertube\.dyndns\.org|
35d96982
C
148 neat\.tube|
149 nethack\.tv|
150 nicecrew\.tv|
151 nightshift\.minnix\.dev|
152 nolog\.media|
153 nyltube\.nylarea\.com|
154 ocfedtest\.hosted\.spacebear\.ee|
155 openmedia\.edunova\.it|
f60990dd 156 p2ptv\.ru|
157 p\.eertu\.be|
158 p\.lu|
35d96982
C
159 pastafriday\.club|
160 patriottube\.sonsofliberty\.red|
161 pcbu\.nl|
f60990dd 162 peer\.azurs\.fr|
35d96982
C
163 peer\.d0g4\.me|
164 peer\.lukeog\.com|
165 peer\.madiator\.cloud|
166 peer\.raise-uav\.com|
167 peershare\.togart\.de|
168 peertube-blablalinux\.be|
169 peertube-demo\.learning-hub\.fr|
170 peertube-docker\.cpy\.re|
171 peertube-eu\.howlround\.com|
172 peertube-u5014\.vm\.elestio\.app|
173 peertube-us\.howlround\.com|
f60990dd 174 peertube\.020\.pl|
175 peertube\.0x5e\.eu|
35d96982
C
176 peertube\.1984\.cz|
177 peertube\.2i2l\.net|
178 peertube\.adjutor\.xyz|
179 peertube\.adresse\.data\.gouv\.fr|
f60990dd 180 peertube\.alpharius\.io|
181 peertube\.am-networks\.fr|
182 peertube\.anduin\.net|
35d96982
C
183 peertube\.anti-logic\.com|
184 peertube\.arch-linux\.cz|
f60990dd 185 peertube\.art3mis\.de|
35d96982
C
186 peertube\.artsrn\.ualberta\.ca|
187 peertube\.askan\.info|
188 peertube\.astral0pitek\.synology\.me|
f60990dd 189 peertube\.atsuchan\.page|
35d96982 190 peertube\.automat\.click|
f60990dd 191 peertube\.b38\.rural-it\.org|
f60990dd 192 peertube\.be|
35d96982 193 peertube\.beeldengeluid\.nl|
f60990dd 194 peertube\.bgzashtita\.es|
35d96982
C
195 peertube\.bike|
196 peertube\.bildung-ekhn\.de|
f60990dd 197 peertube\.biz|
f60990dd 198 peertube\.br0\.fr|
199 peertube\.bridaahost\.ynh\.fr|
200 peertube\.bubbletea\.dev|
201 peertube\.bubuit\.net|
202 peertube\.cabaal\.net|
35d96982
C
203 peertube\.chatinbit\.com|
204 peertube\.chaunchy\.com|
205 peertube\.chir\.rs|
206 peertube\.christianpacaud\.com|
f60990dd 207 peertube\.chtisurel\.net|
35d96982 208 peertube\.chuggybumba\.com|
f60990dd 209 peertube\.cipherbliss\.com|
35d96982
C
210 peertube\.cirkau\.art|
211 peertube\.cloud\.nerdraum\.de|
f60990dd 212 peertube\.cloud\.sans\.pub|
35d96982
C
213 peertube\.coko\.foundation|
214 peertube\.communecter\.org|
215 peertube\.concordia\.social|
216 peertube\.corrigan\.xyz|
f60990dd 217 peertube\.cpge-brizeux\.fr|
218 peertube\.ctseuro\.com|
219 peertube\.cuatrolibertades\.org|
35d96982
C
220 peertube\.cube4fun\.net|
221 peertube\.dair-institute\.org|
f60990dd 222 peertube\.davigge\.com|
223 peertube\.dc\.pini\.fr|
35d96982 224 peertube\.deadtom\.me|
f60990dd 225 peertube\.debian\.social|
35d96982 226 peertube\.delta0189\.xyz|
f60990dd 227 peertube\.demonix\.fr|
228 peertube\.designersethiques\.org|
229 peertube\.desmu\.fr|
f60990dd 230 peertube\.devol\.it|
35d96982
C
231 peertube\.dk|
232 peertube\.doesstuff\.social|
233 peertube\.eb8\.org|
234 peertube\.education-forum\.com|
235 peertube\.elforcer\.ru|
236 peertube\.em\.id\.lv|
237 peertube\.ethibox\.fr|
f60990dd 238 peertube\.eu\.org|
239 peertube\.european-pirates\.eu|
35d96982 240 peertube\.eus|
f60990dd 241 peertube\.euskarabildua\.eus|
35d96982
C
242 peertube\.expi\.studio|
243 peertube\.familie-berner\.de|
244 peertube\.familleboisteau\.fr|
245 peertube\.fedihost\.website|
f60990dd 246 peertube\.fenarinarsa\.com|
35d96982
C
247 peertube\.festnoz\.de|
248 peertube\.forteza\.fr|
249 peertube\.freestorm\.online|
f60990dd 250 peertube\.functional\.cafe|
35d96982 251 peertube\.gaminglinux\.fr|
f60990dd 252 peertube\.gargantia\.fr|
35d96982
C
253 peertube\.geekgalaxy\.fr|
254 peertube\.gemlog\.ca|
f60990dd 255 peertube\.genma\.fr|
256 peertube\.get-racing\.de|
35d96982 257 peertube\.ghis94\.ovh|
f60990dd 258 peertube\.gidikroon\.eu|
35d96982
C
259 peertube\.giftedmc\.com|
260 peertube\.grosist\.fr|
261 peertube\.gruntwerk\.org|
262 peertube\.gsugambit\.com|
263 peertube\.hackerfoo\.com|
264 peertube\.hellsite\.net|
265 peertube\.helvetet\.eu|
266 peertube\.histoirescrepues\.fr|
267 peertube\.home\.x0r\.fr|
268 peertube\.hyperfreedom\.org|
f60990dd 269 peertube\.ichigo\.everydayimshuflin\.com|
35d96982
C
270 peertube\.ifwo\.eu|
271 peertube\.in\.ua|
f60990dd 272 peertube\.inapurna\.org|
273 peertube\.informaction\.info|
274 peertube\.interhop\.org|
f60990dd 275 peertube\.it|
35d96982 276 peertube\.it-arts\.net|
f60990dd 277 peertube\.jensdiemer\.de|
35d96982
C
278 peertube\.johntheserg\.al|
279 peertube\.kaleidos\.net|
f60990dd 280 peertube\.kalua\.im|
35d96982 281 peertube\.kcore\.org|
f60990dd 282 peertube\.keazilla\.net|
283 peertube\.klaewyss\.fr|
35d96982
C
284 peertube\.kleph\.eu|
285 peertube\.kodein\.be|
286 peertube\.kooperatywa\.tech|
287 peertube\.kriom\.net|
f60990dd 288 peertube\.kx\.studio|
35d96982
C
289 peertube\.kyriog\.eu|
290 peertube\.la-famille-muller\.fr|
291 peertube\.labeuropereunion\.eu|
f60990dd 292 peertube\.lagvoid\.com|
35d96982
C
293 peertube\.lhc\.net\.br|
294 peertube\.libresolutions\.network|
295 peertube\.libretic\.fr|
296 peertube\.librosphere\.fr|
f60990dd 297 peertube\.logilab\.fr|
35d96982 298 peertube\.lon\.tv|
f60990dd 299 peertube\.louisematic\.site|
300 peertube\.luckow\.org|
301 peertube\.luga\.at|
302 peertube\.lyceeconnecte\.fr|
35d96982
C
303 peertube\.madixam\.xyz|
304 peertube\.magicstone\.dev|
305 peertube\.marienschule\.de|
f60990dd 306 peertube\.marud\.fr|
f60990dd 307 peertube\.maxweiss\.io|
35d96982
C
308 peertube\.miguelcr\.me|
309 peertube\.mikemestnik\.net|
310 peertube\.mobilsicher\.de|
f60990dd 311 peertube\.monlycee\.net|
312 peertube\.mxinfo\.fr|
35d96982 313 peertube\.naln1\.ca|
f60990dd 314 peertube\.netzbegruenung\.de|
f60990dd 315 peertube\.nicolastissot\.fr|
35d96982
C
316 peertube\.nogafam\.fr|
317 peertube\.normalgamingcommunity\.cz|
f60990dd 318 peertube\.nz|
319 peertube\.offerman\.com|
35d96982
C
320 peertube\.ohioskates\.com|
321 peertube\.onionstorm\.net|
f60990dd 322 peertube\.opencloud\.lu|
35d96982
C
323 peertube\.otakufarms\.com|
324 peertube\.paladyn\.org|
325 peertube\.pix-n-chill\.fr|
f60990dd 326 peertube\.r2\.enst\.fr|
327 peertube\.r5c3\.fr|
35d96982
C
328 peertube\.redpill-insight\.com|
329 peertube\.researchinstitute\.at|
330 peertube\.revelin\.fr|
331 peertube\.rlp\.schule|
332 peertube\.rokugan\.fr|
333 peertube\.rougevertbleu\.tv|
334 peertube\.roundpond\.net|
335 peertube\.rural-it\.org|
f60990dd 336 peertube\.satoshishop\.de|
35d96982 337 peertube\.scyldings\.com|
f60990dd 338 peertube\.securitymadein\.lu|
35d96982 339 peertube\.semperpax\.com|
f60990dd 340 peertube\.semweb\.pro|
35d96982
C
341 peertube\.sensin\.eu|
342 peertube\.sidh\.bzh|
343 peertube\.skorpil\.cz|
344 peertube\.smertrios\.com|
345 peertube\.sqweeb\.net|
346 peertube\.stattzeitung\.org|
f60990dd 347 peertube\.stream|
348 peertube\.su|
349 peertube\.swrs\.net|
350 peertube\.takeko\.cyou|
f60990dd 351 peertube\.taxinachtegel\.de|
35d96982
C
352 peertube\.teftera\.com|
353 peertube\.teutronic-services\.de|
f60990dd 354 peertube\.ti-fr\.com|
355 peertube\.tiennot\.net|
35d96982 356 peertube\.tmp\.rcp\.tf|
f60990dd 357 peertube\.tspu\.edu\.ru|
f60990dd 358 peertube\.tv|
359 peertube\.tweb\.tv|
f60990dd 360 peertube\.underworld\.fr|
35d96982
C
361 peertube\.vapronva\.pw|
362 peertube\.veen\.world|
363 peertube\.vesdia\.eu|
364 peertube\.virtual-assembly\.org|
365 peertube\.viviers-fibre\.net|
f60990dd 366 peertube\.vlaki\.cz|
35d96982
C
367 peertube\.wiesbaden\.social|
368 peertube\.wivodaim\.net|
369 peertube\.wtf|
370 peertube\.wtfayla\.net|
371 peertube\.xrcb\.cat|
f60990dd 372 peertube\.xwiki\.com|
35d96982
C
373 peertube\.zd\.do|
374 peertube\.zetamc\.net|
375 peertube\.zmuuf\.org|
f60990dd 376 peertube\.zoz-serv\.org|
35d96982 377 peertube\.zwindler\.fr|
f60990dd 378 peervideo\.ru|
379 periscope\.numenaute\.org|
35d96982 380 pete\.warpnine\.de|
f60990dd 381 petitlutinartube\.fr|
382 phijkchu\.com|
35d96982 383 phoenixproject\.group|
f60990dd 384 piraten\.space|
35d96982
C
385 pirtube\.calut\.fr|
386 pityu\.flaki\.hu|
387 play\.mittdata\.se|
f60990dd 388 player\.ojamajo\.moe|
35d96982
C
389 podlibre\.video|
390 portal\.digilab\.nfa\.cz|
391 private\.fedimovie\.com|
392 pt01\.lehrerfortbildung-bw\.de|
f60990dd 393 pt\.diaspodon\.fr|
35d96982
C
394 pt\.freedomwolf\.cc|
395 pt\.gordons\.gen\.nz|
396 pt\.ilyamikcoder\.com|
397 pt\.irnok\.net|
398 pt\.mezzo\.moe|
399 pt\.na4\.eu|
400 pt\.netcraft\.ch|
401 pt\.rwx\.ch|
402 pt\.sfunk1x\.com|
403 pt\.thishorsie\.rocks|
404 pt\.vern\.cc|
f60990dd 405 ptb\.lunarviews\.net|
35d96982
C
406 ptube\.de|
407 ptube\.ranranhome\.info|
408 puffy\.tube|
409 puppet\.zone|
410 qtube\.qlyoung\.net|
411 quantube\.win|
412 rankett\.net|
413 replay\.jres\.org|
414 review\.peertube\.biz|
f60990dd 415 sdmtube\.fr|
35d96982
C
416 secure\.direct-live\.net|
417 secure\.scanovid\.com|
418 seka\.pona\.la|
f60990dd 419 serv3\.wiki-tube\.de|
35d96982
C
420 skeptube\.fr|
421 social\.fedimovie\.com|
422 socpeertube\.ru|
f60990dd 423 sovran\.video|
35d96982 424 special\.videovortex\.tv|
f60990dd 425 spectra\.video|
35d96982
C
426 stl1988\.peertube-host\.de|
427 stream\.biovisata\.lt|
428 stream\.conesphere\.cloud|
f60990dd 429 stream\.elven\.pw|
35d96982 430 stream\.jurnalfm\.md|
f60990dd 431 stream\.k-prod\.fr|
35d96982
C
432 stream\.litera\.tools|
433 stream\.nuemedia\.se|
434 stream\.rlp-media\.de|
435 stream\.vrse\.be|
f60990dd 436 studios\.racer159\.com|
35d96982
C
437 styxhexenhammer666\.com|
438 syrteplay\.obspm\.fr|
439 t\.0x0\.st|
440 tbh\.co-shaoghal\.net|
441 test-fab\.ynh\.fr|
442 testube\.distrilab\.fr|
f60990dd 443 tgi\.hosted\.spacebear\.ee|
f60990dd 444 theater\.ethernia\.net|
445 thecool\.tube|
35d96982 446 thevideoverse\.com|
f60990dd 447 tilvids\.com|
35d96982
C
448 tinkerbetter\.tube|
449 tinsley\.video|
450 trailers\.ddigest\.com|
451 tube-action-educative\.apps\.education\.fr|
452 tube-arts-lettres-sciences-humaines\.apps\.education\.fr|
453 tube-cycle-2\.apps\.education\.fr|
454 tube-cycle-3\.apps\.education\.fr|
455 tube-education-physique-et-sportive\.apps\.education\.fr|
456 tube-enseignement-professionnel\.apps\.education\.fr|
457 tube-institutionnel\.apps\.education\.fr|
458 tube-langues-vivantes\.apps\.education\.fr|
459 tube-maternelle\.apps\.education\.fr|
460 tube-numerique-educatif\.apps\.education\.fr|
461 tube-sciences-technologies\.apps\.education\.fr|
462 tube-test\.apps\.education\.fr|
463 tube1\.perron-service\.de|
464 tube\.9minuti\.it|
f60990dd 465 tube\.abolivier\.bzh|
35d96982 466 tube\.alado\.space|
f60990dd 467 tube\.amic37\.fr|
35d96982 468 tube\.area404\.cloud|
f60990dd 469 tube\.arthack\.nz|
35d96982
C
470 tube\.asulia\.fr|
471 tube\.awkward\.company|
f60990dd 472 tube\.azbyka\.ru|
473 tube\.azkware\.net|
35d96982
C
474 tube\.bartrip\.me\.uk|
475 tube\.belowtoxic\.media|
476 tube\.bingle\.plus|
477 tube\.bit-friends\.de|
f60990dd 478 tube\.bstly\.de|
35d96982 479 tube\.chosto\.me|
f60990dd 480 tube\.cms\.garden|
35d96982
C
481 tube\.communia\.org|
482 tube\.cyberia\.club|
483 tube\.cybershock\.life|
484 tube\.dembased\.xyz|
485 tube\.dev\.displ\.eu|
486 tube\.digitalesozialearbeit\.de|
f60990dd 487 tube\.distrilab\.fr|
35d96982 488 tube\.doortofreedom\.org|
f60990dd 489 tube\.dsocialize\.net|
35d96982 490 tube\.e-jeremy\.com|
f60990dd 491 tube\.ebin\.club|
35d96982
C
492 tube\.elemac\.fr|
493 tube\.erzbistum-hamburg\.de|
494 tube\.exozy\.me|
f60990dd 495 tube\.fdn\.fr|
35d96982
C
496 tube\.fedi\.quebec|
497 tube\.fediverse\.at|
498 tube\.felinn\.org|
499 tube\.flokinet\.is|
500 tube\.foad\.me\.uk|
501 tube\.freepeople\.fr|
502 tube\.friloux\.me|
503 tube\.froth\.zone|
504 tube\.fulda\.social|
f60990dd 505 tube\.futuretic\.fr|
35d96982
C
506 tube\.g1zm0\.de|
507 tube\.g4rf\.net|
508 tube\.gaiac\.io|
509 tube\.geekyboo\.net|
510 tube\.genb\.de|
511 tube\.ghk-academy\.info|
512 tube\.gi-it\.de|
f60990dd 513 tube\.grap\.coop|
514 tube\.graz\.social|
515 tube\.grin\.hu|
35d96982
C
516 tube\.hokai\.lol|
517 tube\.int5\.net|
518 tube\.interhacker\.space|
519 tube\.invisible\.ch|
520 tube\.io18\.top|
521 tube\.itsg\.host|
f60990dd 522 tube\.jeena\.net|
35d96982 523 tube\.kh-berlin\.de|
f60990dd 524 tube\.kockatoo\.org|
525 tube\.kotur\.org|
35d96982
C
526 tube\.koweb\.fr|
527 tube\.la-dina\.net|
528 tube\.lab\.nrw|
f60990dd 529 tube\.lacaveatonton\.ovh|
35d96982
C
530 tube\.laurent-malys\.fr|
531 tube\.leetdreams\.ch|
f60990dd 532 tube\.linkse\.media|
533 tube\.lokad\.com|
534 tube\.lucie-philou\.com|
35d96982
C
535 tube\.media-techport\.de|
536 tube\.morozoff\.pro|
537 tube\.neshweb\.net|
538 tube\.nestor\.coop|
539 tube\.network\.europa\.eu|
540 tube\.nicfab\.eu|
541 tube\.nieuwwestbrabant\.nl|
542 tube\.nogafa\.org|
f60990dd 543 tube\.novg\.net|
544 tube\.nox-rhea\.org|
545 tube\.nuagelibre\.fr|
35d96982
C
546 tube\.numerique\.gouv\.fr|
547 tube\.nuxnik\.com|
f60990dd 548 tube\.nx12\.net|
549 tube\.octaplex\.net|
f60990dd 550 tube\.oisux\.org|
35d96982
C
551 tube\.okcinfo\.news|
552 tube\.onlinekirche\.net|
f60990dd 553 tube\.opportunis\.me|
35d96982 554 tube\.oraclefilms\.com|
f60990dd 555 tube\.org\.il|
35d96982
C
556 tube\.pacapime\.ovh|
557 tube\.parinux\.org|
558 tube\.pastwind\.top|
f60990dd 559 tube\.picasoft\.net|
35d96982 560 tube\.pilgerweg-21\.de|
f60990dd 561 tube\.pmj\.rocks|
35d96982
C
562 tube\.pol\.social|
563 tube\.ponsonaille\.fr|
f60990dd 564 tube\.portes-imaginaire\.org|
35d96982
C
565 tube\.public\.apolut\.net|
566 tube\.pustule\.org|
f60990dd 567 tube\.pyngu\.com|
35d96982 568 tube\.querdenken-711\.de|
f60990dd 569 tube\.rebellion\.global|
35d96982 570 tube\.reseau-canope\.fr|
f60990dd 571 tube\.rhythms-of-resistance\.org|
35d96982
C
572 tube\.risedsky\.ovh|
573 tube\.rooty\.fr|
f60990dd 574 tube\.rsi\.cnr\.it|
35d96982 575 tube\.ryne\.moe|
f60990dd 576 tube\.schleuss\.online|
577 tube\.schule\.social|
35d96982 578 tube\.sekretaerbaer\.net|
f60990dd 579 tube\.shanti\.cafe|
580 tube\.shela\.nu|
581 tube\.skrep\.in|
35d96982 582 tube\.sleeping\.town|
f60990dd 583 tube\.sp-codes\.de|
35d96982
C
584 tube\.spdns\.org|
585 tube\.systerserver\.net|
f60990dd 586 tube\.systest\.eu|
587 tube\.tappret\.fr|
35d96982
C
588 tube\.techeasy\.org|
589 tube\.thierrytalbert\.fr|
590 tube\.tinfoil-hat\.net|
591 tube\.toldi\.eu|
f60990dd 592 tube\.tpshd\.de|
35d96982 593 tube\.trax\.im|
f60990dd 594 tube\.troopers\.agency|
35d96982
C
595 tube\.ttk\.is|
596 tube\.tuxfriend\.fr|
f60990dd 597 tube\.tylerdavis\.xyz|
35d96982
C
598 tube\.ullihome\.de|
599 tube\.ulne\.be|
f60990dd 600 tube\.undernet\.uy|
35d96982 601 tube\.vrpnet\.org|
f60990dd 602 tube\.wolfe\.casa|
603 tube\.xd0\.de|
35d96982 604 tube\.xn--baw-joa\.social|
f60990dd 605 tube\.xy-space\.de|
606 tube\.yapbreak\.fr|
607 tubedu\.org|
35d96982
C
608 tubulus\.openlatin\.org|
609 turtleisland\.video|
f60990dd 610 tututu\.tube|
35d96982 611 tv\.adast\.dk|
f60990dd 612 tv\.adn\.life|
35d96982 613 tv\.arns\.lt|
f60990dd 614 tv\.atmx\.ca|
35d96982
C
615 tv\.based\.quest|
616 tv\.farewellutopia\.com|
617 tv\.filmfreedom\.net|
618 tv\.gravitons\.org|
619 tv\.io\.seg\.br|
f60990dd 620 tv\.lumbung\.space|
f60990dd 621 tv\.pirateradio\.social|
35d96982
C
622 tv\.pirati\.cz|
623 tv\.santic-zombie\.ru|
f60990dd 624 tv\.undersco\.re|
35d96982 625 tv\.zonepl\.net|
f60990dd 626 tvox\.ru|
627 twctube\.twc-zone\.eu|
35d96982
C
628 twobeek\.com|
629 urbanists\.video|
630 v\.9tail\.net|
f60990dd 631 v\.basspistol\.org|
35d96982 632 v\.j4\.lc|
f60990dd 633 v\.kisombrella\.top|
35d96982
C
634 v\.koa\.im|
635 v\.kyaru\.xyz|
f60990dd 636 v\.lor\.sh|
35d96982
C
637 v\.mkp\.ca|
638 v\.posm\.gay|
639 v\.slaycer\.top|
640 veedeo\.org|
641 vhs\.absturztau\.be|
642 vid\.cthos\.dev|
643 vid\.kinuseka\.us|
644 vid\.mkp\.ca|
645 vid\.nocogabriel\.fr|
646 vid\.norbipeti\.eu|
647 vid\.northbound\.online|
648 vid\.ohboii\.de|
649 vid\.plantplotting\.co\.uk|
650 vid\.pretok\.tv|
651 vid\.prometheus\.systems|
652 vid\.soafen\.love|
653 vid\.twhtv\.club|
f60990dd 654 vid\.wildeboer\.net|
655 video-cave-v2\.de|
35d96982 656 video-liberty\.com|
f60990dd 657 video\.076\.ne\.jp|
658 video\.1146\.nohost\.me|
35d96982
C
659 video\.9wd\.eu|
660 video\.abraum\.de|
661 video\.ados\.accoord\.fr|
662 video\.amiga-ng\.org|
f60990dd 663 video\.anartist\.org|
f60990dd 664 video\.asgardius\.company|
35d96982 665 video\.audiovisuel-participatif\.org|
f60990dd 666 video\.bards\.online|
35d96982
C
667 video\.barkoczy\.social|
668 video\.benetou\.fr|
669 video\.beyondwatts\.social|
670 video\.bgeneric\.net|
671 video\.bilecik\.edu\.tr|
f60990dd 672 video\.blast-info\.fr|
35d96982 673 video\.bmu\.cloud|
f60990dd 674 video\.catgirl\.biz|
35d96982
C
675 video\.causa-arcana\.com|
676 video\.chasmcity\.net|
677 video\.chbmeyer\.de|
f60990dd 678 video\.cigliola\.com|
35d96982
C
679 video\.citizen4\.eu|
680 video\.clumsy\.computer|
681 video\.cnnumerique\.fr|
682 video\.cnr\.it|
f60990dd 683 video\.cnt\.social|
684 video\.coales\.co|
f60990dd 685 video\.comune\.trento\.it|
35d96982 686 video\.coyp\.us|
f60990dd 687 video\.csc49\.fr|
35d96982
C
688 video\.davduf\.net|
689 video\.davejansen\.com|
690 video\.dlearning\.nl|
691 video\.dnfi\.no|
f60990dd 692 video\.dresden\.network|
35d96982
C
693 video\.drgnz\.club|
694 video\.dudenas\.lt|
695 video\.eientei\.org|
696 video\.ellijaymakerspace\.org|
f60990dd 697 video\.emergeheart\.info|
698 video\.eradicatinglove\.xyz|
35d96982
C
699 video\.everythingbagel\.me|
700 video\.extremelycorporate\.ca|
701 video\.fabiomanganiello\.com|
702 video\.fedi\.bzh|
f60990dd 703 video\.fhtagn\.org|
35d96982
C
704 video\.firehawk-systems\.com|
705 video\.fox-romka\.ru|
706 video\.fuss\.bz\.it|
707 video\.glassbeadcollective\.org|
708 video\.graine-pdl\.org|
f60990dd 709 video\.gyt\.is|
35d96982 710 video\.hainry\.fr|
f60990dd 711 video\.hardlimit\.com|
35d96982 712 video\.hostux\.net|
f60990dd 713 video\.igem\.org|
35d96982 714 video\.infojournal\.fr|
f60990dd 715 video\.internet-czas-dzialac\.pl|
35d96982
C
716 video\.interru\.io|
717 video\.ipng\.ch|
718 video\.ironsysadmin\.com|
f60990dd 719 video\.islameye\.com|
35d96982
C
720 video\.jacen\.moe|
721 video\.jadin\.me|
722 video\.jeffmcbride\.net|
723 video\.jigmedatse\.com|
f60990dd 724 video\.kuba-orlik\.name|
35d96982
C
725 video\.lacalligramme\.fr|
726 video\.lanceurs-alerte\.fr|
727 video\.laotra\.red|
728 video\.lapineige\.fr|
729 video\.laraffinerie\.re|
f60990dd 730 video\.lavolte\.net|
f60990dd 731 video\.liberta\.vip|
35d96982
C
732 video\.libreti\.net|
733 video\.licentia\.net|
f60990dd 734 video\.linc\.systems|
735 video\.linux\.it|
736 video\.linuxtrent\.it|
35d96982 737 video\.liveitlive\.show|
f60990dd 738 video\.lono\.space|
35d96982
C
739 video\.lrose\.de|
740 video\.lunago\.net|
f60990dd 741 video\.lundi\.am|
35d96982
C
742 video\.lycee-experimental\.org|
743 video\.maechler\.cloud|
f60990dd 744 video\.marcorennmaus\.de|
745 video\.mass-trespass\.uk|
35d96982
C
746 video\.matomocamp\.org|
747 video\.medienzentrum-harburg\.de|
748 video\.mentality\.rip|
749 video\.metaversum\.wtf|
750 video\.midreality\.com|
751 video\.mttv\.it|
f60990dd 752 video\.mugoreve\.fr|
35d96982 753 video\.mxtthxw\.art|
f60990dd 754 video\.mycrowd\.ca|
35d96982 755 video\.niboe\.info|
f60990dd 756 video\.nogafam\.es|
35d96982
C
757 video\.nstr\.no|
758 video\.occm\.cc|
759 video\.off-investigation\.fr|
760 video\.olos311\.org|
761 video\.ordinobsolete\.fr|
762 video\.osvoj\.ru|
763 video\.ourcommon\.cloud|
f60990dd 764 video\.ozgurkon\.org|
f60990dd 765 video\.pcf\.fr|
35d96982
C
766 video\.pcgaldo\.com|
767 video\.phyrone\.de|
768 video\.poul\.org|
769 video\.publicspaces\.net|
770 video\.pullopen\.xyz|
771 video\.r3s\.nrw|
772 video\.rainevixen\.com|
f60990dd 773 video\.resolutions\.it|
35d96982
C
774 video\.retroedge\.tech|
775 video\.rhizome\.org|
776 video\.rlp-media\.de|
777 video\.rs-einrich\.de|
778 video\.rubdos\.be|
779 video\.sadmin\.io|
f60990dd 780 video\.sftblw\.moe|
781 video\.shitposter\.club|
35d96982
C
782 video\.simplex-software\.ru|
783 video\.slipfox\.xyz|
784 video\.snug\.moe|
785 video\.software-fuer-engagierte\.de|
f60990dd 786 video\.soi\.ch|
35d96982
C
787 video\.sonet\.ws|
788 video\.surazal\.net|
789 video\.taskcards\.eu|
790 video\.team-lcbs\.eu|
791 video\.techforgood\.social|
792 video\.telemillevaches\.net|
793 video\.thepolarbear\.co\.uk|
f60990dd 794 video\.thinkof\.name|
35d96982
C
795 video\.tii\.space|
796 video\.tkz\.es|
797 video\.trankil\.info|
f60990dd 798 video\.triplea\.fr|
35d96982 799 video\.tum\.social|
f60990dd 800 video\.turbo\.chat|
35d96982
C
801 video\.uriopss-pdl\.fr|
802 video\.ustim\.ru|
803 video\.ut0pia\.org|
f60990dd 804 video\.vaku\.org\.ua|
35d96982 805 video\.vegafjord\.me|
f60990dd 806 video\.veloma\.org|
807 video\.violoncello\.ch|
35d96982
C
808 video\.voidconspiracy\.band|
809 video\.wakkeren\.nl|
810 video\.windfluechter\.org|
811 video\.ziez\.eu|
f60990dd 812 videos-passages\.huma-num\.fr|
35d96982 813 videos\.aadtp\.be|
f60990dd 814 videos\.ahp-numerique\.fr|
35d96982 815 videos\.alamaisondulibre\.org|
f60990dd 816 videos\.archigny\.net|
35d96982
C
817 videos\.aroaduntraveled\.com|
818 videos\.b4tech\.org|
f60990dd 819 videos\.benjaminbrady\.ie|
35d96982 820 videos\.bik\.opencloud\.lu|
f60990dd 821 videos\.cloudron\.io|
35d96982 822 videos\.codingotaku\.com|
f60990dd 823 videos\.coletivos\.org|
35d96982 824 videos\.collate\.social|
f60990dd 825 videos\.danksquad\.org|
35d96982
C
826 videos\.digitaldragons\.eu|
827 videos\.dromeadhere\.fr|
828 videos\.explain-it\.org|
829 videos\.factsonthegroundshow\.com|
830 videos\.foilen\.com|
f60990dd 831 videos\.fsci\.in|
35d96982
C
832 videos\.gamercast\.net|
833 videos\.gianmarco\.gg|
f60990dd 834 videos\.globenet\.org|
35d96982 835 videos\.grafo\.zone|
f60990dd 836 videos\.hauspie\.fr|
837 videos\.hush\.is|
35d96982
C
838 videos\.hyphalfusion\.network|
839 videos\.icum\.to|
840 videos\.im\.allmendenetz\.de|
841 videos\.jacksonchen666\.com|
f60990dd 842 videos\.john-livingston\.fr|
35d96982
C
843 videos\.knazarov\.com|
844 videos\.kuoushi\.com|
845 videos\.laliguepaysdelaloire\.org|
846 videos\.lemouvementassociatif-pdl\.org|
f60990dd 847 videos\.leslionsfloorball\.fr|
35d96982 848 videos\.librescrum\.org|
f60990dd 849 videos\.mastodont\.cat|
35d96982
C
850 videos\.metus\.ca|
851 videos\.miolo\.org|
852 videos\.offroad\.town|
853 videos\.openmandriva\.org|
854 videos\.parleur\.net|
855 videos\.pcorp\.us|
856 videos\.pop\.eu\.com|
f60990dd 857 videos\.rampin\.org|
35d96982
C
858 videos\.rauten\.co\.za|
859 videos\.ritimo\.org|
860 videos\.sarcasmstardust\.com|
f60990dd 861 videos\.scanlines\.xyz|
862 videos\.shmalls\.pw|
f60990dd 863 videos\.stadtfabrikanten\.org|
35d96982 864 videos\.supertuxkart\.net|
f60990dd 865 videos\.testimonia\.org|
35d96982
C
866 videos\.thinkerview\.com|
867 videos\.torrenezzi10\.xyz|
f60990dd 868 videos\.trom\.tf|
35d96982
C
869 videos\.utsukta\.org|
870 videos\.viorsan\.com|
871 videos\.wherelinux\.xyz|
872 videos\.wikilibriste\.fr|
f60990dd 873 videos\.yesil\.club|
35d96982
C
874 videos\.yeswiki\.net|
875 videotube\.duckdns\.org|
876 vids\.capypara\.de|
f60990dd 877 vids\.roshless\.me|
35d96982 878 vids\.stary\.pc\.pl|
f60990dd 879 vids\.tekdmn\.me|
35d96982
C
880 vidz\.julien\.ovh|
881 views\.southfox\.me|
882 virtual-girls-are\.definitely-for\.me|
883 viste\.pt|
884 vnchich\.com|
885 vnop\.org|
886 vod\.newellijay\.tv|
887 voluntarytube\.com|
888 vtr\.chikichiki\.tube|
f60990dd 889 vulgarisation-informatique\.fr|
35d96982
C
890 watch\.easya\.solutions|
891 watch\.goodluckgabe\.life|
f60990dd 892 watch\.ignorance\.eu|
35d96982 893 watch\.jimmydore\.com|
f60990dd 894 watch\.libertaria\.space|
35d96982
C
895 watch\.nuked\.social|
896 watch\.ocaml\.org|
897 watch\.thelema\.social|
f60990dd 898 watch\.tubelab\.video|
899 web-fellow\.de|
900 webtv\.vandoeuvre\.net|
35d96982 901 wetubevid\.online|
f60990dd 902 wikileaks\.video|
903 wiwi\.video|
35d96982
C
904 wow\.such\.disappointment\.fail|
905 www\.jvideos\.net|
906 www\.kotikoff\.net|
907 www\.makertube\.net|
908 www\.mypeer\.tube|
909 www\.nadajemy\.com|
910 www\.neptube\.io|
911 www\.rocaguinarda\.tv|
912 www\.vnshow\.net|
f60990dd 913 xxivproduction\.video|
35d96982
C
914 yt\.orokoro\.ru|
915 ytube\.retronerd\.at|
916 zumvideo\.de|
f60990dd 917
918 # from youtube-dl
b64045cd
AM
919 peertube\.rainbowswingers\.net|
920 tube\.stanisic\.nl|
921 peer\.suiri\.us|
922 medias\.libox\.fr|
923 videomensoif\.ynh\.fr|
924 peertube\.travelpandas\.eu|
925 peertube\.rachetjay\.fr|
926 peertube\.montecsys\.fr|
927 tube\.eskuero\.me|
928 peer\.tube|
929 peertube\.umeahackerspace\.se|
930 tube\.nx-pod\.de|
931 video\.monsieurbidouille\.fr|
c561b75c 932 tube\.openalgeria\.org|
b64045cd
AM
933 vid\.lelux\.fi|
934 video\.anormallostpod\.ovh|
935 tube\.crapaud-fou\.org|
936 peertube\.stemy\.me|
937 lostpod\.space|
938 exode\.me|
939 peertube\.snargol\.com|
940 vis\.ion\.ovh|
941 videosdulib\.re|
942 v\.mbius\.io|
943 videos\.judrey\.eu|
944 peertube\.osureplayviewer\.xyz|
945 peertube\.mathieufamily\.ovh|
946 www\.videos-libr\.es|
947 fightforinfo\.com|
948 peertube\.fediverse\.ru|
949 peertube\.oiseauroch\.fr|
950 video\.nesven\.eu|
951 v\.bearvideo\.win|
952 video\.qoto\.org|
953 justporn\.cc|
954 video\.vny\.fr|
955 peervideo\.club|
956 tube\.taker\.fr|
957 peertube\.chantierlibre\.org|
958 tube\.ipfixe\.info|
959 tube\.kicou\.info|
960 tube\.dodsorf\.as|
961 videobit\.cc|
962 video\.yukari\.moe|
963 videos\.elbinario\.net|
964 hkvideo\.live|
965 pt\.tux\.tf|
966 www\.hkvideo\.live|
967 FIGHTFORINFO\.com|
968 pt\.765racing\.com|
969 peertube\.gnumeria\.eu\.org|
970 nordenmedia\.com|
971 peertube\.co\.uk|
972 tube\.darfweb\.eu|
973 tube\.kalah-france\.org|
974 0ch\.in|
975 vod\.mochi\.academy|
976 film\.node9\.org|
977 peertube\.hatthieves\.es|
978 video\.fitchfamily\.org|
979 peertube\.ddns\.net|
980 video\.ifuncle\.kr|
981 video\.fdlibre\.eu|
982 tube\.22decembre\.eu|
983 peertube\.harmoniescreatives\.com|
984 tube\.fabrigli\.fr|
985 video\.thedwyers\.co|
986 video\.bruitbruit\.com|
987 peertube\.foxfam\.club|
988 peer\.philoxweb\.be|
989 videos\.bugs\.social|
990 peertube\.malbert\.xyz|
991 peertube\.bilange\.ca|
992 libretube\.net|
993 diytelevision\.com|
994 peertube\.fedilab\.app|
995 libre\.video|
996 video\.mstddntfdn\.online|
997 us\.tv|
998 peertube\.sl-network\.fr|
999 peertube\.dynlinux\.io|
1000 peertube\.david\.durieux\.family|
1001 peertube\.linuxrocks\.online|
1002 peerwatch\.xyz|
1003 v\.kretschmann\.social|
1004 tube\.otter\.sh|
1005 yt\.is\.nota\.live|
1006 tube\.dragonpsi\.xyz|
1007 peertube\.boneheadmedia\.com|
1008 videos\.funkwhale\.audio|
1009 watch\.44con\.com|
1010 peertube\.gcaillaut\.fr|
1011 peertube\.icu|
1012 pony\.tube|
1013 spacepub\.space|
1014 tube\.stbr\.io|
1015 v\.mom-gay\.faith|
1016 tube\.port0\.xyz|
1017 peertube\.simounet\.net|
1018 play\.jergefelt\.se|
1019 peertube\.zeteo\.me|
1020 tube\.danq\.me|
1021 peertube\.kerenon\.com|
1022 tube\.fab-l3\.org|
1023 tube\.calculate\.social|
1024 peertube\.mckillop\.org|
1025 tube\.netzspielplatz\.de|
1026 vod\.ksite\.de|
1027 peertube\.laas\.fr|
1028 tube\.govital\.net|
1029 peertube\.stephenson\.cc|
1030 bistule\.nohost\.me|
1031 peertube\.kajalinifi\.de|
1032 video\.ploud\.jp|
1033 video\.omniatv\.com|
1034 peertube\.ffs2play\.fr|
1035 peertube\.leboulaire\.ovh|
1036 peertube\.tronic-studio\.com|
1037 peertube\.public\.cat|
1038 peertube\.metalbanana\.net|
1039 video\.1000i100\.fr|
1040 peertube\.alter-nativ-voll\.de|
1041 tube\.pasa\.tf|
1042 tube\.worldofhauru\.xyz|
1043 pt\.kamp\.site|
1044 peertube\.teleassist\.fr|
1045 videos\.mleduc\.xyz|
1046 conf\.tube|
1047 media\.privacyinternational\.org|
1048 pt\.forty-two\.nl|
1049 video\.halle-leaks\.de|
1050 video\.grosskopfgames\.de|
1051 peertube\.schaeferit\.de|
1052 peertube\.jackbot\.fr|
1053 tube\.extinctionrebellion\.fr|
1054 peertube\.f-si\.org|
1055 video\.subak\.ovh|
1056 videos\.koweb\.fr|
1057 peertube\.zergy\.net|
1058 peertube\.roflcopter\.fr|
1059 peertube\.floss-marketing-school\.com|
1060 vloggers\.social|
1061 peertube\.iriseden\.eu|
1062 videos\.ubuntu-paris\.org|
1063 peertube\.mastodon\.host|
1064 armstube\.com|
1065 peertube\.s2s\.video|
1066 peertube\.lol|
1067 tube\.open-plug\.eu|
1068 open\.tube|
1069 peertube\.ch|
1070 peertube\.normandie-libre\.fr|
1071 peertube\.slat\.org|
1072 video\.lacaveatonton\.ovh|
1073 peertube\.uno|
1074 peertube\.servebeer\.com|
1075 peertube\.fedi\.quebec|
1076 tube\.h3z\.jp|
1077 tube\.plus200\.com|
1078 peertube\.eric\.ovh|
1079 tube\.metadocs\.cc|
1080 tube\.unmondemeilleur\.eu|
1081 gouttedeau\.space|
1082 video\.antirep\.net|
1083 nrop\.cant\.at|
1084 tube\.ksl-bmx\.de|
1085 tube\.plaf\.fr|
1086 tube\.tchncs\.de|
1087 video\.devinberg\.com|
1088 hitchtube\.fr|
1089 peertube\.kosebamse\.com|
1090 yunopeertube\.myddns\.me|
1091 peertube\.varney\.fr|
1092 peertube\.anon-kenkai\.com|
1093 tube\.maiti\.info|
1094 tubee\.fr|
1095 videos\.dinofly\.com|
1096 toobnix\.org|
1097 videotape\.me|
1098 voca\.tube|
1099 video\.heromuster\.com|
1100 video\.lemediatv\.fr|
1101 video\.up\.edu\.ph|
1102 balafon\.video|
1103 video\.ivel\.fr|
1104 thickrips\.cloud|
1105 pt\.laurentkruger\.fr|
1106 video\.monarch-pass\.net|
1107 peertube\.artica\.center|
1108 video\.alternanet\.fr|
1109 indymotion\.fr|
1110 fanvid\.stopthatimp\.net|
1111 video\.farci\.org|
1112 v\.lesterpig\.com|
1113 video\.okaris\.de|
1114 tube\.pawelko\.net|
1115 peertube\.mablr\.org|
1116 tube\.fede\.re|
1117 pytu\.be|
1118 evertron\.tv|
1119 devtube\.dev-wiki\.de|
1120 raptube\.antipub\.org|
1121 video\.selea\.se|
1122 peertube\.mygaia\.org|
1123 video\.oh14\.de|
1124 peertube\.livingutopia\.org|
1125 peertube\.the-penguin\.de|
1126 tube\.thechangebook\.org|
1127 tube\.anjara\.eu|
1128 pt\.pube\.tk|
1129 video\.samedi\.pm|
1130 mplayer\.demouliere\.eu|
1131 widemus\.de|
1132 peertube\.me|
1133 peertube\.zapashcanon\.fr|
1134 video\.latavernedejohnjohn\.fr|
1135 peertube\.pcservice46\.fr|
1136 peertube\.mazzonetto\.eu|
1137 video\.irem\.univ-paris-diderot\.fr|
1138 video\.livecchi\.cloud|
1139 alttube\.fr|
1140 video\.coop\.tools|
1141 video\.cabane-libre\.org|
1142 peertube\.openstreetmap\.fr|
1143 videos\.alolise\.org|
1144 irrsinn\.video|
1145 video\.antopie\.org|
1146 scitech\.video|
1147 tube2\.nemsia\.org|
1148 video\.amic37\.fr|
1149 peertube\.freeforge\.eu|
1150 video\.arbitrarion\.com|
1151 video\.datsemultimedia\.com|
1152 stoptrackingus\.tv|
1153 peertube\.ricostrongxxx\.com|
1154 docker\.videos\.lecygnenoir\.info|
1155 peertube\.togart\.de|
1156 tube\.postblue\.info|
1157 videos\.domainepublic\.net|
1158 peertube\.cyber-tribal\.com|
1159 video\.gresille\.org|
1160 peertube\.dsmouse\.net|
1161 cinema\.yunohost\.support|
1162 tube\.theocevaer\.fr|
1163 repro\.video|
1164 tube\.4aem\.com|
1165 quaziinc\.com|
1166 peertube\.metawurst\.space|
1167 videos\.wakapo\.com|
1168 video\.ploud\.fr|
1169 video\.freeradical\.zone|
1170 tube\.valinor\.fr|
1171 refuznik\.video|
1172 pt\.kircheneuenburg\.de|
1173 peertube\.asrun\.eu|
1174 peertube\.lagob\.fr|
1175 videos\.side-ways\.net|
1176 91video\.online|
1177 video\.valme\.io|
1178 video\.taboulisme\.com|
1179 videos-libr\.es|
1180 tv\.mooh\.fr|
1181 nuage\.acostey\.fr|
1182 video\.monsieur-a\.fr|
1183 peertube\.librelois\.fr|
1184 videos\.pair2jeux\.tube|
1185 videos\.pueseso\.club|
1186 peer\.mathdacloud\.ovh|
1187 media\.assassinate-you\.net|
1188 vidcommons\.org|
1189 ptube\.rousset\.nom\.fr|
1190 tube\.cyano\.at|
1191 videos\.squat\.net|
1192 video\.iphodase\.fr|
1193 peertube\.makotoworkshop\.org|
1194 peertube\.serveur\.slv-valbonne\.fr|
1195 vault\.mle\.party|
1196 hostyour\.tv|
1197 videos\.hack2g2\.fr|
1198 libre\.tube|
1199 pire\.artisanlogiciel\.net|
1200 videos\.numerique-en-commun\.fr|
1201 video\.netsyms\.com|
1202 video\.die-partei\.social|
1203 video\.writeas\.org|
1204 peertube\.swarm\.solvingmaz\.es|
1205 tube\.pericoloso\.ovh|
1206 watching\.cypherpunk\.observer|
1207 videos\.adhocmusic\.com|
1208 tube\.rfc1149\.net|
1209 peertube\.librelabucm\.org|
1210 videos\.numericoop\.fr|
1211 peertube\.koehn\.com|
1212 peertube\.anarchmusicall\.net|
1213 tube\.kampftoast\.de|
1214 vid\.y-y\.li|
1215 peertube\.xtenz\.xyz|
1216 diode\.zone|
1217 tube\.egf\.mn|
1218 peertube\.nomagic\.uk|
1219 visionon\.tv|
1220 videos\.koumoul\.com|
1221 video\.rastapuls\.com|
1222 video\.mantlepro\.com|
1223 video\.deadsuperhero\.com|
1224 peertube\.musicstudio\.pro|
1225 peertube\.we-keys\.fr|
1226 artitube\.artifaille\.fr|
1227 peertube\.ethernia\.net|
1228 tube\.midov\.pl|
1229 peertube\.fr|
1230 watch\.snoot\.tube|
1231 peertube\.donnadieu\.fr|
1232 argos\.aquilenet\.fr|
1233 tube\.nemsia\.org|
1234 tube\.bruniau\.net|
1235 videos\.darckoune\.moe|
1236 tube\.traydent\.info|
1237 dev\.videos\.lecygnenoir\.info|
1238 peertube\.nayya\.org|
1239 peertube\.live|
1240 peertube\.mofgao\.space|
1241 video\.lequerrec\.eu|
1242 peertube\.amicale\.net|
1243 aperi\.tube|
1244 tube\.ac-lyon\.fr|
1245 video\.lw1\.at|
1246 www\.yiny\.org|
1247 videos\.pofilo\.fr|
1248 tube\.lou\.lt|
1249 choob\.h\.etbus\.ch|
1250 tube\.hoga\.fr|
1251 peertube\.heberge\.fr|
1252 video\.obermui\.de|
1253 videos\.cloudfrancois\.fr|
1254 betamax\.video|
1255 video\.typica\.us|
1256 tube\.piweb\.be|
1257 video\.blender\.org|
1258 peertube\.cat|
1259 tube\.kdy\.ch|
1260 pe\.ertu\.be|
1261 peertube\.social|
1262 videos\.lescommuns\.org|
1263 tv\.datamol\.org|
1264 videonaute\.fr|
1265 dialup\.express|
c561b75c 1266 peertube\.nogafa\.org|
c561b75c
S
1267 megatube\.lilomoino\.fr|
1268 peertube\.tamanoir\.foucry\.net|
c561b75c
S
1269 peertube\.devosi\.org|
1270 peertube\.1312\.media|
c561b75c
S
1271 tube\.bootlicker\.party|
1272 skeptikon\.fr|
c561b75c
S
1273 video\.blueline\.mg|
1274 tube\.homecomputing\.fr|
c561b75c
S
1275 tube\.ouahpiti\.info|
1276 video\.tedomum\.net|
1277 video\.g3l\.org|
1278 fontube\.fr|
1279 peertube\.gaialabs\.ch|
c561b75c
S
1280 tube\.kher\.nl|
1281 peertube\.qtg\.fr|
c561b75c 1282 video\.migennes\.net|
c561b75c 1283 tube\.p2p\.legal|
c561b75c 1284 troll\.tv|
c561b75c
S
1285 videos\.iut-orsay\.fr|
1286 peertube\.solidev\.net|
c561b75c 1287 videos\.cemea\.org|
c561b75c
S
1288 video\.passageenseine\.fr|
1289 videos\.festivalparminous\.org|
1290 peertube\.touhoppai\.moe|
c561b75c 1291 sikke\.fi|
c561b75c
S
1292 peer\.hostux\.social|
1293 share\.tube|
1294 peertube\.walkingmountains\.fr|
c561b75c 1295 videos\.benpro\.fr|
c561b75c 1296 peertube\.parleur\.net|
c561b75c 1297 peertube\.heraut\.eu|
c561b75c
S
1298 tube\.aquilenet\.fr|
1299 peertube\.gegeweb\.eu|
1300 framatube\.org|
1301 thinkerview\.video|
1302 tube\.conferences-gesticulees\.net|
1303 peertube\.datagueule\.tv|
1304 video\.lqdn\.fr|
c561b75c 1305 tube\.mochi\.academy|
c561b75c 1306 media\.zat\.im|
c561b75c 1307 video\.colibris-outilslibres\.org|
c561b75c
S
1308 tube\.svnet\.fr|
1309 peertube\.video|
c561b75c 1310 peertube2\.cpy\.re|
71dd5d4a 1311 peertube3\.cpy\.re|
c561b75c 1312 videos\.tcit\.fr|
7c60c33e 1313 peertube\.cpy\.re|
1314 canard\.tube
6bd499e8 1315 )'''
71dd5d4a 1316 _UUID_RE = r'[\da-zA-Z]{22}|[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}'
1e1c1960 1317 _API_BASE = 'https://%s/api/v1/videos/%s/%s'
add96eb9 1318 _VALID_URL = rf'''(?x)
8b4b400a
S
1319 (?:
1320 peertube:(?P<host>[^:]+):|
add96eb9 1321 https?://(?P<host_2>{_INSTANCES_RE})/(?:videos/(?:watch|embed)|api/v\d/videos|w)/
8b4b400a 1322 )
add96eb9 1323 (?P<id>{_UUID_RE})
1324 '''
bfd973ec 1325 _EMBED_REGEX = [r'''(?x)<iframe[^>]+\bsrc=["\'](?P<url>(?:https?:)?//{_INSTANCES_RE}/videos/embed/{cls._UUID_RE})''']
c561b75c 1326 _TESTS = [{
ac379fa2 1327 'url': 'https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d',
bfd56b74 1328 'md5': '8563064d245a4be5705bddb22bb00a28',
c561b75c 1329 'info_dict': {
ac379fa2 1330 'id': '9c9de5e8-0a1e-484a-b099-e80766180a6d',
c561b75c 1331 'ext': 'mp4',
ac379fa2 1332 'title': 'What is PeerTube?',
1e1c1960 1333 'description': 'md5:3fefb8dde2b189186ce0719fda6f7b10',
c561b75c 1334 'thumbnail': r're:https?://.*\.(?:jpg|png)',
ac379fa2 1335 'timestamp': 1538391166,
1336 'upload_date': '20181001',
1337 'uploader': 'Framasoft',
1338 'uploader_id': '3',
1339 'uploader_url': 'https://framatube.org/accounts/framasoft',
e9a30b18 1340 'channel': 'A propos de PeerTube',
1341 'channel_id': '2215',
1342 'channel_url': 'https://framatube.org/video-channels/joinpeertube',
ac379fa2 1343 'language': 'en',
1344 'license': 'Attribution - Share Alike',
1345 'duration': 113,
c561b75c
S
1346 'view_count': int,
1347 'like_count': int,
1348 'dislike_count': int,
ac379fa2 1349 'tags': ['framasoft', 'peertube'],
1350 'categories': ['Science & Technology'],
add96eb9 1351 },
71dd5d4a 1352 }, {
1353 'url': 'https://peertube2.cpy.re/w/122d093a-1ede-43bd-bd34-59d2931ffc5e',
1354 'info_dict': {
1355 'id': '122d093a-1ede-43bd-bd34-59d2931ffc5e',
1356 'ext': 'mp4',
1357 'title': 'E2E tests',
1358 'uploader_id': '37855',
1359 'timestamp': 1589276219,
1360 'upload_date': '20200512',
1361 'uploader': 'chocobozzz',
add96eb9 1362 },
71dd5d4a 1363 }, {
1364 'url': 'https://peertube2.cpy.re/w/3fbif9S3WmtTP8gGsC5HBd',
1365 'info_dict': {
1366 'id': '3fbif9S3WmtTP8gGsC5HBd',
1367 'ext': 'mp4',
1368 'title': 'E2E tests',
1369 'uploader_id': '37855',
1370 'timestamp': 1589276219,
1371 'upload_date': '20200512',
1372 'uploader': 'chocobozzz',
1373 },
1374 }, {
1375 'url': 'https://peertube2.cpy.re/api/v1/videos/3fbif9S3WmtTP8gGsC5HBd',
1376 'info_dict': {
1377 'id': '3fbif9S3WmtTP8gGsC5HBd',
1378 'ext': 'mp4',
1379 'title': 'E2E tests',
1380 'uploader_id': '37855',
1381 'timestamp': 1589276219,
1382 'upload_date': '20200512',
1383 'uploader': 'chocobozzz',
1384 },
30a074c2 1385 }, {
1386 # Issue #26002
1387 'url': 'peertube:spacepub.space:d8943b2d-8280-497b-85ec-bc282ec2afdc',
1388 'info_dict': {
1389 'id': 'd8943b2d-8280-497b-85ec-bc282ec2afdc',
1390 'ext': 'mp4',
1391 'title': 'Dot matrix printer shell demo',
1392 'uploader_id': '3',
1393 'timestamp': 1587401293,
1394 'upload_date': '20200420',
1395 'uploader': 'Drew DeVault',
add96eb9 1396 },
c561b75c 1397 }, {
e9a30b18 1398 'url': 'https://peertube.debian.social/videos/watch/0b04f13d-1e18-4f1d-814e-4979aa7c9c44',
c561b75c
S
1399 'only_matching': True,
1400 }, {
1401 # nsfw
e9a30b18 1402 'url': 'https://vod.ksite.de/videos/watch/9bb88cd3-9959-46d9-9ab9-33d2bb704c39',
c561b75c 1403 'only_matching': True,
f2fc63a5 1404 }, {
e9a30b18 1405 'url': 'https://vod.ksite.de/videos/embed/fed67262-6edb-4d1c-833b-daa9085c71d7',
f2fc63a5
S
1406 'only_matching': True,
1407 }, {
e9a30b18 1408 'url': 'https://peertube.tv/api/v1/videos/c1875674-97d0-4c94-a058-3f7e64c962e8',
f2fc63a5 1409 'only_matching': True,
8b4b400a 1410 }, {
e9a30b18 1411 'url': 'peertube:framatube.org:b37a5b9f-e6b5-415c-b700-04a5cd6ec205',
8b4b400a 1412 'only_matching': True,
c561b75c
S
1413 }]
1414
6bd499e8 1415 @staticmethod
8b4b400a
S
1416 def _extract_peertube_url(webpage, source_url):
1417 mobj = re.match(
add96eb9 1418 rf'https?://(?P<host>[^/]+)/(?:videos/(?:watch|embed)|w)/(?P<id>{PeerTubeIE._UUID_RE})', source_url)
8b4b400a 1419 if mobj and any(p in webpage for p in (
71dd5d4a 1420 'meta property="og:platform" content="PeerTube"',
8b4b400a
S
1421 '<title>PeerTube<',
1422 'There will be other non JS-based clients to access PeerTube',
1423 '>We are sorry but it seems that PeerTube is not compatible with your web browser.<')):
add96eb9 1424 return 'peertube:{}:{}'.format(*mobj.group('host', 'id'))
8b4b400a 1425
bfd973ec 1426 @classmethod
1427 def _extract_embed_urls(cls, url, webpage):
1428 embeds = tuple(super()._extract_embed_urls(url, webpage))
1429 if embeds:
1430 return embeds
1431
1432 peertube_url = cls._extract_peertube_url(webpage, url)
1433 if peertube_url:
1434 return [peertube_url]
6bd499e8 1435
1e1c1960
S
1436 def _call_api(self, host, video_id, path, note=None, errnote=None, fatal=True):
1437 return self._download_json(
1438 self._API_BASE % (host, video_id, path), video_id,
1439 note=note, errnote=errnote, fatal=fatal)
ac379fa2 1440
1e1c1960
S
1441 def _get_subtitles(self, host, video_id):
1442 captions = self._call_api(
1443 host, video_id, 'captions', note='Downloading captions JSON',
1444 fatal=False)
1445 if not isinstance(captions, dict):
1446 return
1447 data = captions.get('data')
1448 if not isinstance(data, list):
1449 return
ac379fa2 1450 subtitles = {}
1e1c1960 1451 for e in data:
add96eb9 1452 language_id = try_get(e, lambda x: x['language']['id'], str)
1453 caption_url = urljoin(f'https://{host}', e.get('captionPath'))
1e1c1960
S
1454 if not caption_url:
1455 continue
1456 subtitles.setdefault(language_id or 'en', []).append({
1457 'url': caption_url,
1458 })
ac379fa2 1459 return subtitles
1460
c561b75c 1461 def _real_extract(self, url):
5ad28e7f 1462 mobj = self._match_valid_url(url)
8b4b400a
S
1463 host = mobj.group('host') or mobj.group('host_2')
1464 video_id = mobj.group('id')
c561b75c 1465
1e1c1960
S
1466 video = self._call_api(
1467 host, video_id, '', note='Downloading video JSON')
c561b75c
S
1468
1469 title = video['name']
1470
12b248ce 1471 formats, is_live = [], False
30a074c2 1472 files = video.get('files') or []
1473 for playlist in (video.get('streamingPlaylists') or []):
1474 if not isinstance(playlist, dict):
1475 continue
12b248ce 1476 if playlist_url := url_or_none(playlist.get('playlistUrl')):
1477 is_live = True
1478 formats.extend(self._extract_m3u8_formats(
1479 playlist_url, video_id, fatal=False, live=True))
30a074c2 1480 playlist_files = playlist.get('files')
1481 if not (playlist_files and isinstance(playlist_files, list)):
1482 continue
1483 files.extend(playlist_files)
1484 for file_ in files:
c561b75c
S
1485 if not isinstance(file_, dict):
1486 continue
3052a30d
S
1487 file_url = url_or_none(file_.get('fileUrl'))
1488 if not file_url:
c561b75c
S
1489 continue
1490 file_size = int_or_none(file_.get('size'))
1491 format_id = try_get(
add96eb9 1492 file_, lambda x: x['resolution']['label'], str)
c561b75c
S
1493 f = parse_resolution(format_id)
1494 f.update({
1495 'url': file_url,
1496 'format_id': format_id,
1497 'filesize': file_size,
1498 })
29f7c58a 1499 if format_id == '0p':
1500 f['vcodec'] = 'none'
1501 else:
1502 f['fps'] = int_or_none(file_.get('fps'))
12b248ce 1503 is_live = False
c561b75c 1504 formats.append(f)
c561b75c 1505
51f8a31d 1506 description = video.get('description')
bfd56b74 1507 if description and len(description) >= 250:
51f8a31d 1508 # description is shortened
1509 full_description = self._call_api(
1510 host, video_id, 'description', note='Downloading description JSON',
1511 fatal=False)
ac379fa2 1512
51f8a31d 1513 if isinstance(full_description, dict):
1514 description = str_or_none(full_description.get('description')) or description
ac379fa2 1515
1516 subtitles = self.extract_subtitles(host, video_id)
1517
1518 def data(section, field, type_):
1519 return try_get(video, lambda x: x[section][field], type_)
1520
1521 def account_data(field, type_):
1522 return data('account', field, type_)
1523
1524 def channel_data(field, type_):
1525 return data('channel', field, type_)
c561b75c 1526
add96eb9 1527 category = data('category', 'label', str)
c561b75c
S
1528 categories = [category] if category else None
1529
1530 nsfw = video.get('nsfw')
1531 if nsfw is bool:
1532 age_limit = 18 if nsfw else 0
1533 else:
1534 age_limit = None
1535
add96eb9 1536 webpage_url = f'https://{host}/videos/watch/{video_id}'
10db0d2f 1537
c561b75c
S
1538 return {
1539 'id': video_id,
1540 'title': title,
ac379fa2 1541 'description': description,
10db0d2f 1542 'thumbnail': urljoin(webpage_url, video.get('thumbnailPath')),
c561b75c 1543 'timestamp': unified_timestamp(video.get('publishedAt')),
add96eb9 1544 'uploader': account_data('displayName', str),
1e1c1960 1545 'uploader_id': str_or_none(account_data('id', int)),
add96eb9 1546 'uploader_url': url_or_none(account_data('url', str)),
1547 'channel': channel_data('displayName', str),
1e1c1960 1548 'channel_id': str_or_none(channel_data('id', int)),
add96eb9 1549 'channel_url': url_or_none(channel_data('url', str)),
1550 'language': data('language', 'id', str),
1551 'license': data('licence', 'label', str),
c561b75c
S
1552 'duration': int_or_none(video.get('duration')),
1553 'view_count': int_or_none(video.get('views')),
1554 'like_count': int_or_none(video.get('likes')),
1555 'dislike_count': int_or_none(video.get('dislikes')),
1556 'age_limit': age_limit,
1557 'tags': try_get(video, lambda x: x['tags'], list),
1558 'categories': categories,
1559 'formats': formats,
10db0d2f 1560 'subtitles': subtitles,
12b248ce 1561 'is_live': is_live,
10db0d2f 1562 'webpage_url': webpage_url,
c561b75c 1563 }
e9a30b18 1564
1565
1566class PeerTubePlaylistIE(InfoExtractor):
1567 IE_NAME = 'PeerTube:Playlist'
cb2ec90e 1568 _TYPES = {
1569 'a': 'accounts',
1570 'c': 'video-channels',
1571 'w/p': 'video-playlists',
1572 }
e9a30b18 1573 _VALID_URL = r'''(?x)
add96eb9 1574 https?://(?P<host>{})/(?P<type>(?:{}))/
cb2ec90e 1575 (?P<id>[^/]+)
add96eb9 1576 '''.format(PeerTubeIE._INSTANCES_RE, '|'.join(_TYPES.keys()))
e9a30b18 1577 _TESTS = [{
e9a30b18 1578 'url': 'https://peertube.debian.social/w/p/hFdJoTuyhNJVa1cDWd1d12',
1579 'info_dict': {
1580 'id': 'hFdJoTuyhNJVa1cDWd1d12',
1581 'description': 'Diversas palestras do Richard Stallman no Brasil.',
1582 'title': 'Richard Stallman no Brasil',
1583 'timestamp': 1599676222,
1584 },
1585 'playlist_mincount': 9,
cb2ec90e 1586 }, {
1587 'url': 'https://peertube2.cpy.re/a/chocobozzz/videos',
1588 'info_dict': {
1589 'id': 'chocobozzz',
1590 'timestamp': 1553874564,
1591 'title': 'chocobozzz',
1592 },
1593 'playlist_mincount': 2,
1594 }, {
1595 'url': 'https://framatube.org/c/bf54d359-cfad-4935-9d45-9d6be93f63e8/videos',
1596 'info_dict': {
1597 'id': 'bf54d359-cfad-4935-9d45-9d6be93f63e8',
1598 'timestamp': 1519917377,
1599 'title': 'Les vidéos de Framasoft',
1600 },
1601 'playlist_mincount': 345,
1602 }, {
1603 'url': 'https://peertube2.cpy.re/c/blender_open_movies@video.blender.org/videos',
1604 'info_dict': {
1605 'id': 'blender_open_movies@video.blender.org',
1606 'timestamp': 1542287810,
1607 'title': 'Official Blender Open Movies',
1608 },
1609 'playlist_mincount': 11,
e9a30b18 1610 }]
cb2ec90e 1611 _API_BASE = 'https://%s/api/v1/%s/%s%s'
e9a30b18 1612 _PAGE_SIZE = 30
1613
cb2ec90e 1614 def call_api(self, host, name, path, base, **kwargs):
e9a30b18 1615 return self._download_json(
cb2ec90e 1616 self._API_BASE % (host, base, name, path), name, **kwargs)
e9a30b18 1617
add96eb9 1618 def fetch_page(self, host, playlist_id, playlist_type, page):
e9a30b18 1619 page += 1
cb2ec90e 1620 video_data = self.call_api(
add96eb9 1621 host, playlist_id,
cb2ec90e 1622 f'/videos?sort=-createdAt&start={self._PAGE_SIZE * (page - 1)}&count={self._PAGE_SIZE}&nsfw=both',
add96eb9 1623 playlist_type, note=f'Downloading page {page}').get('data', [])
e9a30b18 1624 for video in video_data:
add96eb9 1625 short_uuid = video.get('shortUUID') or try_get(video, lambda x: x['video']['shortUUID'])
cb2ec90e 1626 video_title = video.get('name') or try_get(video, lambda x: x['video']['name'])
e9a30b18 1627 yield self.url_result(
add96eb9 1628 f'https://{host}/w/{short_uuid}', PeerTubeIE.ie_key(),
1629 video_id=short_uuid, video_title=video_title)
e9a30b18 1630
add96eb9 1631 def _extract_playlist(self, host, playlist_type, playlist_id):
1632 info = self.call_api(host, playlist_id, '', playlist_type, note='Downloading playlist information', fatal=False)
e9a30b18 1633
cb2ec90e 1634 playlist_title = info.get('displayName')
1635 playlist_description = info.get('description')
1636 playlist_timestamp = unified_timestamp(info.get('createdAt'))
1637 channel = try_get(info, lambda x: x['ownerAccount']['name']) or info.get('displayName')
1638 channel_id = try_get(info, lambda x: x['ownerAccount']['id']) or info.get('id')
e0ddbd02 1639 thumbnail = format_field(info, 'thumbnailPath', f'https://{host}%s')
e9a30b18 1640
1641 entries = OnDemandPagedList(functools.partial(
add96eb9 1642 self.fetch_page, host, playlist_id, playlist_type), self._PAGE_SIZE)
e9a30b18 1643
1644 return self.playlist_result(
add96eb9 1645 entries, playlist_id, playlist_title, playlist_description,
e9a30b18 1646 timestamp=playlist_timestamp, channel=channel, channel_id=channel_id, thumbnail=thumbnail)
cb2ec90e 1647
1648 def _real_extract(self, url):
add96eb9 1649 playlist_type, host, playlist_id = self._match_valid_url(url).group('type', 'host', 'id')
1650 return self._extract_playlist(host, self._TYPES[playlist_type], playlist_id)