@@ -36,14 +36,15 @@ var keywordsToInclude = [];
36
36
mediasInTab = { } ;
37
37
var cookies = '' ;
38
38
var message = {
39
- url : '' ,
40
- cookies : '' ,
41
- useragent : '' ,
42
- fileName : '' ,
43
- fileSize : '' ,
44
- referrer : '' ,
45
- postData : '' ,
46
- batch : false
39
+ URL : '' ,
40
+ Cookies : '' ,
41
+ UserAgent : '' ,
42
+ FileName : '' ,
43
+ FileSize : '' ,
44
+ Referer : '' ,
45
+ PostData : '' ,
46
+ Batch : false ,
47
+ Version : EXTENSION_VERSION
47
48
} ;
48
49
var requestList = [ {
49
50
cookies : '' ,
@@ -100,9 +101,7 @@ function initialize() {
100
101
}
101
102
} ) ;
102
103
chromeVersion = parseInt ( chromeVersion ) ;
103
- sendMessageToHost ( {
104
- version : EXTENSION_VERSION
105
- } ) ;
104
+ sendMessageToHost ( message ) ;
106
105
createContextMenus ( ) ;
107
106
}
108
107
@@ -171,24 +170,24 @@ function createContextMenus() {
171
170
"use strict" ;
172
171
var page_url = info . pageUrl ;
173
172
if ( info . menuItemId === "download_with_uget" ) {
174
- message . url = info [ 'linkUrl' ] ;
175
- message . referrer = page_url ;
173
+ message . URL = info [ 'linkUrl' ] ;
174
+ message . Referer = page_url ;
176
175
current_browser . cookies . getAll ( { 'url' : extractRootURL ( page_url ) } , parseCookies ) ;
177
176
} else if ( info . menuItemId === "download_all_links_with_uget" ) {
178
177
current_browser . tabs . executeScript ( null , { file : 'extract.js' } , function ( results ) {
179
178
// Do nothing
180
179
if ( results [ 0 ] . success ) {
181
- message . url = results [ 0 ] . urls ;
182
- message . referrer = page_url ;
183
- message . batch = true ;
180
+ message . URL = results [ 0 ] . urls ;
181
+ message . Referer = page_url ;
182
+ message . Batch = true ;
184
183
current_browser . cookies . getAll ( { 'url' : extractRootURL ( page_url ) } , parseCookies ) ;
185
184
}
186
185
} ) ;
187
186
} else if ( info . menuItemId === "download_media_with_uget" ) {
188
187
if ( page_url . includes ( '/www.youtube.com/watch?v=' ) ) {
189
188
// Youtube
190
- message . url = page_url ;
191
- message . referrer = page_url ;
189
+ message . URL = page_url ;
190
+ message . Referer = page_url ;
192
191
current_browser . cookies . getAll ( { 'url' : extractRootURL ( page_url ) } , parseCookies ) ;
193
192
} else {
194
193
// Other videos
@@ -197,13 +196,13 @@ function createContextMenus() {
197
196
var urls = Array . from ( media_set ) ;
198
197
var no_or_urls = urls . length ;
199
198
if ( no_or_urls == 1 ) {
200
- message . url = urls [ 0 ] ;
201
- message . referrer = page_url ;
199
+ message . URL = urls [ 0 ] ;
200
+ message . Referer = page_url ;
202
201
current_browser . cookies . getAll ( { 'url' : extractRootURL ( page_url ) } , parseCookies ) ;
203
202
} else if ( no_or_urls > 1 ) {
204
- message . url = urls . join ( '\n' ) ;
205
- message . referrer = page_url ;
206
- message . batch = true ;
203
+ message . URL = urls . join ( '\n' ) ;
204
+ message . Referer = page_url ;
205
+ message . Batch = true ;
207
206
current_browser . cookies . getAll ( { 'url' : extractRootURL ( page_url ) } , parseCookies ) ;
208
207
}
209
208
}
@@ -249,16 +248,16 @@ function setDownloadHooks() {
249
248
id : downloadItem . id
250
249
} ) ;
251
250
252
- message . url = url ;
253
- message . fileName = unescape ( downloadItem [ 'filename' ] ) . replace ( / \" / g, "" ) ;
251
+ message . URL = url ;
252
+ message . FileName = unescape ( downloadItem [ 'filename' ] ) . replace ( / \" / g, "" ) ;
254
253
message . fileSize = fileSize ;
255
- message . referrer = downloadItem [ 'referrer' ] ;
254
+ message . Referer = downloadItem [ 'referrer' ] ;
256
255
current_browser . cookies . getAll ( { 'url' : extractRootURL ( url ) } , parseCookies ) ;
257
256
} ) ;
258
257
259
258
current_browser . webRequest . onBeforeRequest . addListener ( function ( details ) {
260
259
if ( details . method === 'POST' ) {
261
- message . postData = postParams ( details . requestBody . formData ) ;
260
+ message . PostData = postParams ( details . requestBody . formData ) ;
262
261
}
263
262
return {
264
263
requestHeaders : details . requestHeaders
@@ -282,7 +281,7 @@ function setDownloadHooks() {
282
281
requestList [ currRequest ] . id = details . requestId ;
283
282
for ( var i = 0 ; i < details . requestHeaders . length ; ++ i ) {
284
283
if ( details . requestHeaders [ i ] . name . toLowerCase ( ) === 'user-agent' ) {
285
- message . useragent = details . requestHeaders [ i ] . value ;
284
+ message . UserAgent = details . requestHeaders [ i ] . value ;
286
285
} else if ( details . requestHeaders [ i ] . name . toLowerCase ( ) === 'referer' ) {
287
286
requestList [ currRequest ] . referrer = details . requestHeaders [ i ] . value ;
288
287
} else if ( details . requestHeaders [ i ] . name . toLowerCase ( ) === 'cookie' ) {
@@ -307,6 +306,7 @@ function setDownloadHooks() {
307
306
] ) ;
308
307
current_browser . webRequest . onHeadersReceived . addListener ( function ( details ) {
309
308
309
+
310
310
if ( ugetWrapperNotFound ) { // uget-chrome-wrapper not installed
311
311
return {
312
312
responseHeaders : details . responseHeaders
@@ -326,23 +326,23 @@ function setDownloadHooks() {
326
326
}
327
327
328
328
var interruptDownload = false ;
329
- message . url = details . url ;
329
+ message . URL = details . url ;
330
330
var contentType = "" ;
331
331
332
332
for ( var i = 0 ; i < details . responseHeaders . length ; ++ i ) {
333
333
if ( details . responseHeaders [ i ] . name . toLowerCase ( ) == 'content-length' ) {
334
334
message . fileSize = details . responseHeaders [ i ] . value ;
335
335
var fileSize = parseInt ( message . fileSize ) ;
336
- if ( fileSize < minFileSizeToInterrupt && ! isWhiteListed ( message . url ) ) {
336
+ if ( fileSize < minFileSizeToInterrupt && ! isWhiteListed ( message . URL ) ) {
337
337
return {
338
338
responseHeaders : details . responseHeaders
339
339
} ;
340
340
}
341
341
} else if ( details . responseHeaders [ i ] . name . toLowerCase ( ) == 'content-disposition' ) {
342
342
disposition = details . responseHeaders [ i ] . value ;
343
343
if ( disposition . lastIndexOf ( 'filename' ) != - 1 ) {
344
- message . fileName = disposition . match ( / f i l e n a m e [ ^ ; = \n ] * = ( ( [ ' " ] ) .* ?\2| [ ^ ; \n ] * ) / ) [ 1 ] ;
345
- message . fileName = unescape ( message . fileName ) . replace ( / \" / g, "" ) ;
344
+ message . FileName = disposition . match ( / f i l e n a m e [ ^ ; = \n ] * = ( ( [ ' " ] ) .* ?\2| [ ^ ; \n ] * ) / ) [ 1 ] ;
345
+ message . FileName = unescape ( message . FileName ) . replace ( / \" / g, "" ) ;
346
346
interruptDownload = true ;
347
347
}
348
348
} else if ( details . responseHeaders [ i ] . name . toLowerCase ( ) == 'content-type' ) {
@@ -371,15 +371,15 @@ function setDownloadHooks() {
371
371
}
372
372
for ( var j = 0 ; j < 3 ; j ++ ) {
373
373
if ( details . requestId == requestList [ j ] . id && requestList [ j ] . id != "" ) {
374
- message . referrer = requestList [ j ] . referrer ;
375
- message . cookies = requestList [ j ] . cookies ;
374
+ message . Referer = requestList [ j ] . referrer ;
375
+ message . Cookies = requestList [ j ] . cookies ;
376
376
break ;
377
377
}
378
378
}
379
379
if ( details . method != "POST" ) {
380
- message . postData = '' ;
380
+ message . PostData = '' ;
381
381
}
382
- current_browser . cookies . getAll ( { 'url' : extractRootURL ( message . url ) } , parseCookies ) ;
382
+ current_browser . cookies . getAll ( { 'url' : extractRootURL ( message . URL ) } , parseCookies ) ;
383
383
var scheme = / ^ h t t p s / . test ( details . url ) ? 'https' : 'http' ;
384
384
if ( chromeVersion >= 35 || firefoxVersion >= 51 ) {
385
385
return {
@@ -428,13 +428,33 @@ function setDownloadHooks() {
428
428
] ) ;
429
429
}
430
430
431
+ /**
432
+ * Check the TAB URL and enable download_media_with_uget if the page is Youtube
433
+ * @param {*int } tabId
434
+ */
435
+ function checkForYoutube ( tabId , disableIfNot ) {
436
+ current_browser . tabs . get ( tabId , function ( tab ) {
437
+ isYoutube = tab [ 'url' ] && tab [ 'url' ] . includes ( '/www.youtube.com/watch?v=' )
438
+ if ( isYoutube ) {
439
+ current_browser . contextMenus . update ( "download_media_with_uget" , { enabled : true } ) ;
440
+ } else if ( disableIfNot ) {
441
+ current_browser . contextMenus . update ( "download_media_with_uget" , { enabled : false } ) ;
442
+ }
443
+ } ) ;
444
+ }
431
445
432
446
/**
433
447
* Grab videos and add them to mediasInTab.
434
448
*/
435
449
function enableVideoGrabber ( ) {
436
450
current_browser . tabs . onActivated . addListener ( function ( activeInfo ) {
437
- current_browser . contextMenus . update ( "download_media_with_uget" , { enabled : mediasInTab [ activeInfo [ 'tabId' ] ] != undefined } ) ;
451
+ if ( mediasInTab [ activeInfo [ 'tabId' ] ] != undefined ) {
452
+ // Media already detected
453
+ current_browser . contextMenus . update ( "download_media_with_uget" , { enabled : true } ) ;
454
+ } else {
455
+ // Check for Youtube
456
+ checkForYoutube ( activeInfo [ 'tabId' ] , true ) ;
457
+ }
438
458
} ) ;
439
459
440
460
current_browser . tabs . onRemoved . addListener ( function ( tabId , removeInfo ) {
@@ -448,12 +468,14 @@ function enableVideoGrabber() {
448
468
// Loading a new page
449
469
delete mediasInTab [ tabId ] ;
450
470
}
471
+ // Check for Youtube
472
+ checkForYoutube ( tabId , false ) ;
451
473
} ) ;
452
474
453
475
current_browser . webRequest . onResponseStarted . addListener ( function ( details ) {
454
476
content_url = details [ 'url' ] ;
455
477
type = details [ 'type' ] ;
456
- if ( type === 'media' || content_url . includes ( 'mp4' ) || content_url . includes ( 'www.youtube.com/watch?v=' ) ) {
478
+ if ( type === 'media' || content_url . includes ( 'mp4' ) ) {
457
479
tabId = details [ 'tabId' ] ;
458
480
mediaSet = mediasInTab [ tabId ] ;
459
481
if ( mediaSet == undefined ) {
@@ -468,7 +490,6 @@ function enableVideoGrabber() {
468
490
'<all_urls>'
469
491
] ,
470
492
types : [
471
- 'main_frame' ,
472
493
'media' ,
473
494
'object'
474
495
]
@@ -484,8 +505,8 @@ function sendMessageToHost(message) {
484
505
clearMessage ( ) ;
485
506
ugetWrapperNotFound = ( response == null ) ;
486
507
if ( ! ugetWrapperNotFound && ! ugetChromeWrapperVersion ) {
487
- ugetChromeWrapperVersion = response . version ;
488
- ugetVersion = response . uget ;
508
+ ugetChromeWrapperVersion = response . Version ;
509
+ ugetVersion = response . Uget ;
489
510
}
490
511
} ) ;
491
512
}
@@ -507,13 +528,13 @@ function getState() {
507
528
* Clear the message.
508
529
*/
509
530
function clearMessage ( ) {
510
- message . url = '' ;
511
- message . cookies = '' ;
512
- message . fileName = '' ;
531
+ message . URL = '' ;
532
+ message . Cookies = '' ;
533
+ message . FileName = '' ;
513
534
message . fileSize = '' ;
514
- message . referrer = '' ;
515
- message . useragent = '' ;
516
- message . batch = false ;
535
+ message . Referer = '' ;
536
+ message . UserAgent = '' ;
537
+ message . Batch = false ;
517
538
}
518
539
519
540
/**
@@ -555,7 +576,7 @@ function parseCookies(cookies_arr) {
555
576
cookies += cookies_arr [ i ] . value ;
556
577
cookies += '\n' ;
557
578
}
558
- message . cookies = cookies ;
579
+ message . Cookies = cookies ;
559
580
sendMessageToHost ( message ) ;
560
581
}
561
582
0 commit comments