18
18
* along with this program. If not, see <http://www.gnu.org/licenses/>.
19
19
*/
20
20
21
-
21
+ var EXTENSION_VERSION = "2.1.1" ;
22
+ var REQUIRED_WRAPPER_VERSION = "2.0.7" ;
22
23
var interruptDownloads = true ;
23
24
var ugetWrapperNotFound = true ;
24
25
var disposition = '' ;
25
26
var hostName ;
26
27
var ugetChromeWrapperVersion ;
27
- var ugetVersion ;
28
+ var ugetVersion = '' ;
28
29
var chromeVersion ;
29
30
var firefoxVersion ;
30
31
var minFileSizeToInterrupt = 300 * 1024 ; // 300 kb
@@ -35,15 +36,15 @@ var keywordsToInclude = [];
35
36
var cookies = '' ;
36
37
var requestList = [ {
37
38
cookies : '' ,
38
- postdata : '' ,
39
+ postData : '' ,
39
40
id : ''
40
41
} , {
41
42
cookies : '' ,
42
- postdata : '' ,
43
+ postData : '' ,
43
44
id : ''
44
45
} , {
45
46
cookies : '' ,
46
- postdata : '' ,
47
+ postData : '' ,
47
48
id : ''
48
49
} ] ;
49
50
var currRequest = 0 ;
@@ -78,7 +79,7 @@ current_browser.commands.onCommand.addListener(function(command) {
78
79
79
80
chromeVersion = parseInt ( chromeVersion ) ;
80
81
sendMessageToHost ( {
81
- version : "2.1.0"
82
+ version : EXTENSION_VERSION
82
83
} ) ;
83
84
84
85
// Read the storage for excluded keywords
@@ -117,14 +118,14 @@ var message = {
117
118
url : '' ,
118
119
cookies : '' ,
119
120
useragent : '' ,
120
- filename : '' ,
121
- filesize : '' ,
121
+ fileName : '' ,
122
+ fileSize : '' ,
122
123
referrer : '' ,
123
- postdata : '' ,
124
+ postData : '' ,
124
125
batch : false
125
126
} ;
126
127
127
- // Add to Chrome context menu
128
+ // Create context menu items
128
129
current_browser . contextMenus . create ( {
129
130
title : 'Download with uGet' ,
130
131
id : "download_with_uget" ,
@@ -137,6 +138,13 @@ current_browser.contextMenus.create({
137
138
contexts : [ 'page' ]
138
139
} ) ;
139
140
141
+ current_browser . contextMenus . create ( {
142
+ title : 'Download video with uGet' ,
143
+ id : "download_video_with_uget" ,
144
+ documentUrlPatterns : [ '*://www.youtube.com/watch?v=*' ] ,
145
+ contexts : [ 'page' ]
146
+ } ) ;
147
+
140
148
current_browser . contextMenus . onClicked . addListener ( function ( info , tab ) {
141
149
"use strict" ;
142
150
if ( info . menuItemId === "download_with_uget" ) {
@@ -153,6 +161,11 @@ current_browser.contextMenus.onClicked.addListener(function(info, tab) {
153
161
current_browser . cookies . getAll ( { 'url' : extractRootURL ( info . pageUrl ) } , parseCookies ) ;
154
162
}
155
163
} ) ;
164
+ } else if ( info . menuItemId === "download_video_with_uget" ) {
165
+ // Youtube
166
+ message . url = info [ 'pageUrl' ] ;
167
+ message . referrer = info [ 'pageUrl' ] ;
168
+ current_browser . cookies . getAll ( { 'url' : extractRootURL ( info . pageUrl ) } , parseCookies ) ;
156
169
}
157
170
} ) ;
158
171
@@ -189,15 +202,15 @@ current_browser.downloads.onCreated.addListener(function(downloadItem) {
189
202
} ) ;
190
203
191
204
message . url = url ;
192
- message . filename = unescape ( downloadItem [ 'filename' ] ) . replace ( / \" / g, "" ) ;
193
- message . filesize = fileSize ;
205
+ message . fileName = unescape ( downloadItem [ 'filename' ] ) . replace ( / \" / g, "" ) ;
206
+ message . fileSize = fileSize ;
194
207
message . referrer = downloadItem [ 'referrer' ] ;
195
208
current_browser . cookies . getAll ( { 'url' : extractRootURL ( url ) } , parseCookies ) ;
196
209
} ) ;
197
210
198
211
current_browser . webRequest . onBeforeRequest . addListener ( function ( details ) {
199
212
if ( details . method === 'POST' ) {
200
- message . postdata = postParams ( details . requestBody . formData ) ;
213
+ message . postData = postParams ( details . requestBody . formData ) ;
201
214
}
202
215
return {
203
216
requestHeaders : details . requestHeaders
@@ -270,8 +283,8 @@ current_browser.webRequest.onHeadersReceived.addListener(function(details) {
270
283
271
284
for ( var i = 0 ; i < details . responseHeaders . length ; ++ i ) {
272
285
if ( details . responseHeaders [ i ] . name . toLowerCase ( ) == 'content-length' ) {
273
- message . filesize = details . responseHeaders [ i ] . value ;
274
- var fileSize = parseInt ( message . filesize ) ;
286
+ message . fileSize = details . responseHeaders [ i ] . value ;
287
+ var fileSize = parseInt ( message . fileSize ) ;
275
288
if ( fileSize < minFileSizeToInterrupt && ! isWhiteListed ( message . url ) ) {
276
289
return {
277
290
responseHeaders : details . responseHeaders
@@ -280,8 +293,8 @@ current_browser.webRequest.onHeadersReceived.addListener(function(details) {
280
293
} else if ( details . responseHeaders [ i ] . name . toLowerCase ( ) == 'content-disposition' ) {
281
294
disposition = details . responseHeaders [ i ] . value ;
282
295
if ( disposition . lastIndexOf ( 'filename' ) != - 1 ) {
283
- message . filename = disposition . match ( / f i l e n a m e [ ^ ; = \n ] * = ( ( [ ' " ] ) .* ?\2| [ ^ ; \n ] * ) / ) [ 1 ] ;
284
- message . filename = unescape ( message . filename ) . replace ( / \" / g, "" ) ;
296
+ message . fileName = disposition . match ( / f i l e n a m e [ ^ ; = \n ] * = ( ( [ ' " ] ) .* ?\2| [ ^ ; \n ] * ) / ) [ 1 ] ;
297
+ message . fileName = unescape ( message . fileName ) . replace ( / \" / g, "" ) ;
285
298
interruptDownload = true ;
286
299
}
287
300
} else if ( details . responseHeaders [ i ] . name . toLowerCase ( ) == 'content-type' ) {
@@ -316,7 +329,7 @@ current_browser.webRequest.onHeadersReceived.addListener(function(details) {
316
329
}
317
330
}
318
331
if ( details . method != "POST" ) {
319
- message . postdata = '' ;
332
+ message . postData = '' ;
320
333
}
321
334
current_browser . cookies . getAll ( { 'url' : extractRootURL ( message . url ) } , parseCookies ) ;
322
335
var scheme = / ^ h t t p s / . test ( details . url ) ? 'https' : 'http' ;
@@ -387,7 +400,7 @@ function sendMessageToHost(message) {
387
400
function getState ( ) {
388
401
if ( ugetWrapperNotFound || ! ugetChromeWrapperVersion ) {
389
402
return 2 ;
390
- } else if ( ! ugetChromeWrapperVersion . startsWith ( "2.0.6" ) ) {
403
+ } else if ( ! ugetChromeWrapperVersion . startsWith ( REQUIRED_WRAPPER_VERSION ) ) {
391
404
return 1 ;
392
405
} else {
393
406
return 0 ;
@@ -400,8 +413,8 @@ function getState() {
400
413
function clearMessage ( ) {
401
414
message . url = '' ;
402
415
message . cookies = '' ;
403
- message . filename = '' ;
404
- message . filesize = '' ;
416
+ message . fileName = '' ;
417
+ message . fileSize = '' ;
405
418
message . referrer = '' ;
406
419
message . useragent = '' ;
407
420
message . batch = false ;
0 commit comments