2
2
#include "containerfiles.h"
3
3
#include "selectformat.h"
4
4
#include "download.h"
5
- #include "ign.h"
6
5
#include "youtube.h"
7
6
#include "settings.h"
8
7
@@ -18,7 +17,7 @@ Then site specific
18
17
19
18
20
19
//Site type names used at the command line etc
21
- char * DownloadTypes []= {"none" ,"generic" ,"youtube" ,"youtu.be" ,"metacafe" ,"dailymotion" ,"break" ,"ehow" , " vimeo" ,"ted" ,"reuters" ,"liveleak" ,"photobucket" ,"washingtonpost" ,"cbsnews" ,"france24" ,"euronews" ,"metatube" ,"guardian" ,"redorbit" ,"uctv.tv" ,"dotsub" ,"astronomy.com" ,"discovery" ,"bloomberg" ,"nationalgeographic" ,"videobash" , " smh" ,"funnyordie" , "ign" , " ebaumsworld" ,"gamestar" , " imdb" ,"charlierose" ,"stanfordoc" ,"screencast.com" ,"royalsociety.tv" ,NULL };
20
+ char * DownloadTypes []= {"none" ,"generic" ,"youtube" ,"youtu.be" ,"metacafe" ,"dailymotion" ,"break" ,"vimeo" ,"ted" ,"reuters" ,"liveleak" ,"photobucket" ,"washingtonpost" ,"cbsnews" ,"france24" ,"euronews" ,"metatube" ,"guardian" ,"redorbit" ,"uctv.tv" ,"dotsub" ,"astronomy.com" ,"discovery" ,"bloomberg" ,"nationalgeographic" ,"smh" ,"ebaumsworld" ,"imdb" ,"charlierose" ,"stanfordoc" ,"screencast.com" ,"royalsociety.tv" , "bitchute " ,NULL };
22
21
23
22
//Longer names used in display
24
23
char * DownloadNames []= {"none" ,
@@ -28,7 +27,6 @@ char *DownloadNames[]={"none",
28
27
"Metacafe: http://www.metacafe.com" ,
29
28
"Daily Motion: http://www.dailymotion.com" ,
30
29
"www.break.com" ,
31
- "www.ehow.com" ,
32
30
"www.vimeo.com" ,
33
31
"www.ted.com" ,
34
32
"Reuters: http://www.reuters.com/" ,
@@ -47,29 +45,25 @@ char *DownloadNames[]={"none",
47
45
"dsc.discovery.com" ,
48
46
"www.bloomberg.com (not bloomberg.tv)" ,
49
47
"National Geographic (http://video.nationalgeographic.com)" ,
50
- "videobash" ,
51
48
"Sidney Morning Herald" ,
52
- "Funny or Die (http://www.funnyordie.com)" ,
53
- "IGN" ,
54
49
"Ebaums World" ,
55
- "www.gamestar.de" ,
56
50
"www.imdb.com" ,
57
51
"Charlie Rose" ,
58
52
"Stanford Open Classroom" ,
59
53
"UDemy" ,
60
54
"http://royalsociety.org/" ,
55
+ "BitChute" ,
61
56
NULL };
62
57
63
58
//"http://vimeo.com/33204284",
64
59
//links used by the -test-sites feature to test if a download site still
65
60
//works with movgrab
66
61
char * TestLinks []= {"" , "" ,
67
- "http ://www.youtube.com/watch?v=Vxp3seoRNgY " ,
68
- "http://youtu.be/OdrEId7YI1k " ,
62
+ "https ://www.youtube.com/watch?v=GrK9EaQRp2I " ,
63
+ "http://youtu.be/mvEPnhmtXY0 " ,
69
64
"http://metacafe.com/watch/11419763/super-blood-moon-eclipse-2015/" ,
70
65
"http://www.dailymotion.com/video/x5790e_hubblecast-16-galaxies-gone-wild_tech" ,
71
66
"http://www.break.com/video/break-compilations-2591623/cats-vs-the-world-iii-breaking-videos-3075295" ,
72
- "http://www.ehow.com/video_6819748_creamy-thyme-scrambled-eggs-recipe.html" ,
73
67
"broken" ,
74
68
"http://www.ted.com/talks/janine_benyus_shares_nature_s_designs.html" ,
75
69
"http://www.reuters.com/video/2016/05/02/foam-swords-drawn-in-mass-play-fight-in?videoId=368328211" ,
@@ -78,8 +72,8 @@ char *TestLinks[]={"", "",
78
72
"http://www.washingtonpost.com/video/politics/tom-prices-tense-senate-finance-hearing/2017/01/24/f0c35346-e282-11e6-a419-eefe8eff0835_video.html" ,
79
73
"http://www.cbsnews.com/video/watch/?id=7357739n" ,
80
74
"http://www.france24.com/en/20160430-down-earth-fast-fashion-pollution-environment-ethical-consumption" ,
81
- "http ://www.euronews.com/news/bulletin/ " ,
82
- "http ://www.metatube.com/en/videos/cid2/Funny-Videos/53210/Rail-Jump-Fail /" ,
75
+ "https ://www.euronews.com/2019/06/27/astronaut-luca-parmitano-chronicles-his-mission-for-euronews " ,
76
+ "https ://www.metatube.com/en/videos/266906/Ex-Machina-Movie-TRAILER-2-2015 /" ,
83
77
"http://www.guardian.co.uk/world/video/2011/may/13/fukushima-radiation-dairy-farmers-video" ,
84
78
"http://www.redorbit.com/video/using-f1-technology-to-transform-healthcare-012016/" ,
85
79
"http://www.uctv.tv/search-details.aspx?showID=20888" ,
@@ -88,18 +82,15 @@ char *TestLinks[]={"", "",
88
82
"http://dsc.discovery.com/videos/how-the-universe-works-birth-of-a-black-hole.html" ,
89
83
"http://www.bloomberg.com/video/72477250/" ,
90
84
"http://video.nationalgeographic.com/video/environment/environment-natural-disasters/earthquakes/earthquake-101/" ,
91
- "http://www.videobash.com/video_show/wing-suit-amazing-footage-6086" ,
92
85
"http://www.smh.com.au/technology/sci-tech/newly-discovered-planets-include-superearth-20110913-1k7tl.html" ,
93
- "http://www.funnyordie.com/videos/032785be3a/genie-on-hard-times-with-parker-posey?playlist=featured_videos" ,
94
- "http://www.ign.com/videos/2013/06/05/the-last-of-us-review" ,
95
- "http://www.ebaumsworld.com/videos/a-giant-python-opens-the-door/83367677/" ,
96
- "http://www.gamestar.de/videos/trailer,3/hobbit-3-die-schlacht-der-fuenf-heere,76110.html" ,
86
+ "https://www.ebaumsworld.com/videos/spacex-released-a-blooper-reel-of-all-their-failed-flights-and-landings/85465411/" ,
97
87
"http://www.imdb.com/video/imdb/vi3832131865" ,
98
88
"https://charlierose.com/videos/27996" ,
99
89
"http://openclassroom.stanford.edu/MainFolder/VideoPage.php?course=PracticalUnix&video=wget&speed=100" ,
100
90
"http://www.brainstuffshow.com/videos/how-gps-coordinates-work-video.htm" ,
101
91
//"http://royalsociety.tv/rsPlayer.aspx?presentationid=474",
102
92
"broken" ,
93
+ "https://www.bitchute.com/video/v_UdkNgeuRY/" ,
103
94
NULL };
104
95
105
96
@@ -138,10 +129,6 @@ else if (strcmp(Server,"www.break.com")==0)
138
129
{
139
130
Type = TYPE_BREAK_COM ;
140
131
}
141
- else if (strstr (Server ,".ehow." ))
142
- {
143
- Type = TYPE_EHOW ;
144
- }
145
132
else if (strcmp (Server ,"www.dailymotion.com" )== 0 )
146
133
{
147
134
Type = TYPE_DAILYMOTION ;
@@ -234,18 +221,6 @@ else if (strstr(Server,"bloomberg.com"))
234
221
{
235
222
Type = TYPE_BLOOMBERG ;
236
223
}
237
- else if (strstr (Server ,"www.videobash.com" ))
238
- {
239
- Type = TYPE_VIDEOBASH ;
240
- }
241
- else if (strstr (Server ,"funnyordie.com" ))
242
- {
243
- Type = TYPE_FUNNYORDIE ;
244
- }
245
- else if (strstr (Server ,".ign." ))
246
- {
247
- Type = TYPE_IGN ;
248
- }
249
224
else if (strstr (Server ,".imdb.com" ))
250
225
{
251
226
Type = TYPE_IMDB ;
@@ -254,10 +229,6 @@ else if (strstr(Server,".ebaumsworld.com"))
254
229
{
255
230
Type = TYPE_EBAUMSWORLD ;
256
231
}
257
- else if (strstr (Server ,".gamestar.de" ))
258
- {
259
- Type = TYPE_GAMESTAR ;
260
- }
261
232
else if (strstr (Server ,"charlierose.com" ))
262
233
{
263
234
Type = TYPE_CHARLIEROSE ;
@@ -274,6 +245,10 @@ else if (strstr(Server,"screencast.com"))
274
245
{
275
246
Type = TYPE_SCREENCAST_COM ;
276
247
}
248
+ else if (strstr (Server ,"bitchute.com" ))
249
+ {
250
+ Type = TYPE_BITCHUTE ;
251
+ }
277
252
278
253
279
254
@@ -548,6 +523,7 @@ case TYPE_BREAK_COM:
548
523
RetVal = DownloadPage (Tempstr ,TYPE_BREAK_STAGE2 ,Title ,Flags );
549
524
break ;
550
525
526
+
551
527
case TYPE_VIMEO :
552
528
RetVal = DownloadPage (GetVar (Vars ,"ID" ),TYPE_VIMEO_STAGE2 ,Title ,Flags );
553
529
break ;
@@ -584,11 +560,6 @@ case TYPE_BLOOMBERG:
584
560
RetVal = DownloadItem (Tempstr , Title , Fmt , Flags );
585
561
break ;
586
562
587
- case TYPE_IGN :
588
- Tempstr = SubstituteVarsInString (Tempstr ,"http://apis.ign.com/video/v3/videos/$(ID)" ,Vars ,0 );
589
- RetVal = DownloadPage (Tempstr ,TYPE_IGN_STAGE2 , Title ,Flags );
590
- break ;
591
-
592
563
case TYPE_IMDB :
593
564
Tempstr = SubstituteVarsInString (Tempstr ,"http://www.imdb.com/video/imdb/vi$(ID)/imdb/single" ,Vars ,0 );
594
565
RetVal = DownloadPage (Tempstr ,TYPE_IMDB_STAGE2 , Title ,Flags );
@@ -601,20 +572,14 @@ case TYPE_REUTERS:
601
572
break ;
602
573
603
574
604
- case TYPE_GAMESTAR :
605
- Tempstr = SubstituteVarsInString (Tempstr ,"http://gamestar.de/_misc/videos/portal/getVideoUrl.cfm?premium=0&videoId=$(ID)" ,Vars ,0 );
606
- RetVal = DownloadItem (Tempstr , Title , Fmt , Flags );
607
- break ;
608
-
609
-
610
575
case TYPE_STANFORD_OPENCLASS :
611
576
Tempstr = SubstituteVarsInString (Tempstr ,"http://openclassroom.stanford.edu/MainFolder/courses/$(course)/videos/$(ID).xml" ,Vars ,0 );
612
577
Title = SubstituteVarsInString (Title ,"$(course)-$(ID)" ,Vars ,0 );
613
578
614
579
RetVal = DownloadPage (Tempstr ,TYPE_STANFORD_STAGE2 , Title ,Flags );
615
580
break ;
616
581
617
-
582
+ case TYPE_BITCHUTE :
618
583
case TYPE_DOTSUB :
619
584
case TYPE_GENERIC :
620
585
case TYPE_TED :
@@ -634,23 +599,23 @@ case TYPE_DISCOVERY:
634
599
case TYPE_REDORBIT_STAGE2 :
635
600
case TYPE_ASTRONOMYCOM_STAGE2 :
636
601
case TYPE_BREAK_STAGE2 :
637
- case TYPE_IGN_STAGE2 :
638
602
case TYPE_IMDB_STAGE2 :
639
603
case TYPE_STANFORD_STAGE2 :
640
604
case TYPE_REUTERS_STAGE2 :
641
- case TYPE_FUNNYORDIE :
642
605
case TYPE_EBAUMSWORLD :
643
606
case TYPE_DAILYMOTION :
644
- case TYPE_VIDEOBASH :
645
607
case TYPE_SCREENCAST_COM :
646
- case TYPE_EHOW :
647
608
case TYPE_CHARLIEROSE :
648
609
case TYPE_CONTAINERFILE_PLS :
649
610
case TYPE_CONTAINERFILE_ASX :
650
611
case TYPE_CONTAINERFILE_M3U8 :
651
612
Tempstr = CopyStr (Tempstr , GetVar (Vars ,"ID" ));
613
+ if (strncmp (Tempstr , "https://www.youtube.com/" ,24 )== 0 ) RetVal = GrabMovie (Tempstr , TYPE_YOUTUBE );
614
+ else
615
+ {
652
616
if ((strncmp (Tempstr ,"icy:" ,4 )!= 0 ) && (strncmp (Tempstr ,"http:" ,5 )!= 0 ) && (strncmp (Tempstr ,"https:" ,6 )!= 0 )) Tempstr = MCopyStr (Tempstr ,"http:" ,GetVar (Vars ,"ID" ),NULL );
653
617
RetVal = DownloadItem (Tempstr , Title , Fmt , Flags );
618
+ }
654
619
break ;
655
620
}
656
621
@@ -891,25 +856,6 @@ case TYPE_BREAK_STAGE2:
891
856
}
892
857
break ;
893
858
894
- case TYPE_EHOW :
895
- #define EHOW_LINE "property=\"og:video\""
896
- #define EHOW_ITEM "source="
897
- #define EHOW_ITEM_END "&"
898
- #define EHOW_TITLE "<h1 class=\"Heading1a\">"
899
- #define EHOW_TITLE_END "</h1>"
900
-
901
- if (strstr (Tempstr ,EHOW_LINE ))
902
- {
903
- GenericExtractFromLine (Tempstr , "item:flv" ,EHOW_ITEM ,EHOW_ITEM_END ,Vars ,EXTRACT_DEQUOTE | EXTRACT_NOSPACES );
904
- }
905
-
906
- ptr = strstr (Tempstr ,EHOW_TITLE );
907
- if (ptr )
908
- {
909
- GenericExtractFromLine (Tempstr , "Title" ,EHOW_TITLE ,EHOW_TITLE_END ,Vars ,EXTRACT_DEQUOTE );
910
- }
911
- break ;
912
-
913
859
914
860
915
861
case TYPE_VIMEO :
@@ -1235,6 +1181,20 @@ case TYPE_BLOOMBERG:
1235
1181
}
1236
1182
break ;
1237
1183
1184
+ case TYPE_BITCHUTE :
1185
+ #define BITCHUTE_ITEMSTART "<source src=\""
1186
+ #define BITCHUTE_ITEMEND "\""
1187
+ #define BITCHUTE_TITLE_START "<h1 id=\"video-title\" class=\"page-title\">"
1188
+ #define BITCHUTE_TITLE_END "</h1"
1189
+
1190
+ if (strstr (Tempstr , BITCHUTE_TITLE_START )) GenericExtractFromLine (Tempstr , "Title:html" , BITCHUTE_TITLE_START , BITCHUTE_TITLE_END ,Vars ,EXTRACT_DESLASHQUOTE | EXTRACT_NOSPACES );
1191
+ if (strstr (Tempstr ,BITCHUTE_ITEMSTART ))
1192
+ {
1193
+ GenericExtractFromLine (Tempstr , "item:mp4" ,BITCHUTE_ITEMSTART ,BITCHUTE_ITEMEND ,Vars ,EXTRACT_DESLASHQUOTE | EXTRACT_NOSPACES );
1194
+ }
1195
+ break ;
1196
+
1197
+
1238
1198
case TYPE_NATGEO :
1239
1199
#define NATGEO_ITEM_START "HTML5src:'"
1240
1200
#define NATGEO_ITEM_END "\'"
@@ -1256,32 +1216,6 @@ case TYPE_NATGEO:
1256
1216
}
1257
1217
break ;
1258
1218
1259
- case TYPE_VIDEOBASH :
1260
- #define VIDEOBASH_ITEMSTART "&file=\" + 'http://' + '"
1261
- #define VIDEOBASH_ITEMEND "\'"
1262
-
1263
- GenericTitleExtract (Tempstr , Vars );
1264
- if (strstr (Tempstr ,VIDEOBASH_ITEMSTART ))
1265
- {
1266
- GenericExtractFromLine (Tempstr , "item:mp4" ,VIDEOBASH_ITEMSTART ,VIDEOBASH_ITEMEND ,Vars ,EXTRACT_DEQUOTE | EXTRACT_NOSPACES );
1267
- }
1268
- break ;
1269
-
1270
-
1271
- case TYPE_IGN :
1272
- #define IGN_ITEMSTART "video_id\":\""
1273
- #define IGN_ITEMEND "\""
1274
-
1275
- GenericTitleExtract (Tempstr , Vars );
1276
- if (strstr (Tempstr ,IGN_ITEMSTART ))
1277
- {
1278
- GenericExtractFromLine (Tempstr , "ID" ,IGN_ITEMSTART ,IGN_ITEMEND ,Vars ,EXTRACT_DEQUOTE | EXTRACT_NOSPACES );
1279
- }
1280
- break ;
1281
-
1282
- case TYPE_IGN_STAGE2 :
1283
- IGN_DecodeFormats (Tempstr , Vars );
1284
- break ;
1285
1219
1286
1220
case TYPE_IMDB :
1287
1221
#define IMDB_ITEMSTART "://www.imdb.com/video/imdb/vi"
@@ -1316,31 +1250,21 @@ break;
1316
1250
1317
1251
1318
1252
case TYPE_EBAUMSWORLD :
1319
- #define EBAUMSWORLD_ITEMSTART "params.file = '"
1253
+ #define EBAUMSWORLD_ITEMSTART "'file': '"
1254
+ #define EBAUMSWORLD_ITEMSTART2 "params.file = '"
1320
1255
#define EBAUMSWORLD_ITEMEND "'"
1321
1256
1322
1257
GenericTitleExtract (Tempstr , Vars );
1323
1258
if (strstr (Tempstr ,EBAUMSWORLD_ITEMSTART ))
1324
1259
{
1325
- GenericExtractFromLine (Tempstr , "ID" ,EBAUMSWORLD_ITEMSTART ,EBAUMSWORLD_ITEMEND ,Vars ,EXTRACT_DEQUOTE | EXTRACT_NOSPACES );
1260
+ GenericExtractFromLine (Tempstr , "ID" , EBAUMSWORLD_ITEMSTART , EBAUMSWORLD_ITEMEND , Vars , EXTRACT_DEQUOTE | EXTRACT_NOSPACES );
1326
1261
}
1327
- break ;
1328
1262
1329
- case TYPE_GAMESTAR :
1330
- #define GAMESTAR_ITEMSTART "var iVideoId ="
1331
- #define GAMESTAR_ITEMEND ";"
1332
- #define GAMESTAR2_ITEMSTART "ga('set', 'dimension4', '"
1333
- #define GAMESTAR2_ITEMEND "'"
1334
-
1335
- GenericTitleExtract (Tempstr , Vars );
1336
- if (strstr (Tempstr ,GAMESTAR_ITEMSTART ))
1263
+ if (strstr (Tempstr ,EBAUMSWORLD_ITEMSTART2 ))
1337
1264
{
1338
- GenericExtractFromLine (Tempstr , "ID" ,GAMESTAR_ITEMSTART ,GAMESTAR_ITEMEND ,Vars ,EXTRACT_DEQUOTE | EXTRACT_NOSPACES );
1339
- }
1340
- if (strstr (Tempstr ,GAMESTAR2_ITEMSTART ))
1341
- {
1342
- GenericExtractFromLine (Tempstr , "ID" ,GAMESTAR2_ITEMSTART ,GAMESTAR2_ITEMEND ,Vars ,EXTRACT_DEQUOTE | EXTRACT_NOSPACES );
1265
+ GenericExtractFromLine (Tempstr , "ID" , EBAUMSWORLD_ITEMSTART2 , EBAUMSWORLD_ITEMEND , Vars , EXTRACT_DEQUOTE | EXTRACT_NOSPACES );
1343
1266
}
1267
+
1344
1268
break ;
1345
1269
1346
1270
case TYPE_SCREENCAST_COM :
@@ -1476,7 +1400,6 @@ case TYPE_REDORBIT:
1476
1400
case TYPE_GUARDIAN :
1477
1401
case TYPE_LIVELEAK :
1478
1402
case TYPE_DOTSUB :
1479
- case TYPE_FUNNYORDIE :
1480
1403
case TYPE_CHARLIEROSE :
1481
1404
GenericTitleExtract (Tempstr , Vars );
1482
1405
ptr = strstr (Tempstr ,HTML5_ITEM_START );
@@ -1516,15 +1439,16 @@ break;
1516
1439
1517
1440
case TYPE_EURONEWS :
1518
1441
case TYPE_DISCOVERY :
1442
+
1519
1443
#define OG_URL "<meta property=\"og:video:url\" content=\""
1520
1444
#define OG2_URL "<meta property=\"og:video\" content=\""
1521
1445
#define TWITTER_URL "<meta name=\"twitter:player:stream\" content=\""
1522
1446
#define OG_END "\""
1523
1447
1524
1448
GenericTitleExtract (Tempstr , Vars );
1525
- if (strstr (Tempstr , OG_URL )) GenericExtractFromLine (Tempstr , "ID" ,OG_URL ,OG_END ,Vars ,EXTRACT_GUESSTYPE );
1526
- if (strstr (Tempstr , OG2_URL )) GenericExtractFromLine (Tempstr , "ID" ,OG2_URL ,OG_END ,Vars ,EXTRACT_GUESSTYPE );
1527
- if (strstr (Tempstr , TWITTER_URL )) GenericExtractFromLine (Tempstr , "ID" ,TWITTER_URL ,OG_END ,Vars ,EXTRACT_GUESSTYPE );
1449
+ if (strstr (Tempstr , OG_URL )) GenericExtractFromLine (Tempstr , "ID" , OG_URL ,OG_END ,Vars ,EXTRACT_GUESSTYPE );
1450
+ if (strstr (Tempstr , OG2_URL )) GenericExtractFromLine (Tempstr , "ID" , OG2_URL ,OG_END ,Vars ,EXTRACT_GUESSTYPE );
1451
+ if (strstr (Tempstr , TWITTER_URL )) GenericExtractFromLine (Tempstr , "ID" , TWITTER_URL ,OG_END ,Vars ,EXTRACT_GUESSTYPE );
1528
1452
break ;
1529
1453
}
1530
1454
@@ -1550,7 +1474,7 @@ else
1550
1474
{
1551
1475
if (! StrValid (GetVar (Vars ,"ID" )))
1552
1476
{
1553
- Type = SelectDownloadFormat (Vars ,Type ,TRUE );
1477
+ Type = SelectDownloadFormat (Vars ,Type );
1554
1478
}
1555
1479
1556
1480
ptr = GetVar (Vars ,"ID" );
0 commit comments