1818 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1919 */
2020
21-
21+ var EXTENSION_VERSION = "2.1.1" ;
22+ var REQUIRED_WRAPPER_VERSION = "2.0.7" ;
2223var interruptDownloads = true ;
2324var ugetWrapperNotFound = true ;
2425var disposition = '' ;
2526var hostName ;
2627var ugetChromeWrapperVersion ;
27- var ugetVersion ;
28+ var ugetVersion = '' ;
2829var chromeVersion ;
2930var firefoxVersion ;
3031var minFileSizeToInterrupt = 300 * 1024 ; // 300 kb
@@ -35,15 +36,15 @@ var keywordsToInclude = [];
3536var cookies = '' ;
3637var requestList = [ {
3738 cookies : '' ,
38- postdata : '' ,
39+ postData : '' ,
3940 id : ''
4041} , {
4142 cookies : '' ,
42- postdata : '' ,
43+ postData : '' ,
4344 id : ''
4445} , {
4546 cookies : '' ,
46- postdata : '' ,
47+ postData : '' ,
4748 id : ''
4849} ] ;
4950var currRequest = 0 ;
@@ -78,7 +79,7 @@ current_browser.commands.onCommand.addListener(function(command) {
7879
7980chromeVersion = parseInt ( chromeVersion ) ;
8081sendMessageToHost ( {
81- version : "2.1.0"
82+ version : EXTENSION_VERSION
8283} ) ;
8384
8485// Read the storage for excluded keywords
@@ -117,14 +118,14 @@ var message = {
117118 url : '' ,
118119 cookies : '' ,
119120 useragent : '' ,
120- filename : '' ,
121- filesize : '' ,
121+ fileName : '' ,
122+ fileSize : '' ,
122123 referrer : '' ,
123- postdata : '' ,
124+ postData : '' ,
124125 batch : false
125126} ;
126127
127- // Add to Chrome context menu
128+ // Create context menu items
128129current_browser . contextMenus . create ( {
129130 title : 'Download with uGet' ,
130131 id : "download_with_uget" ,
@@ -137,6 +138,13 @@ current_browser.contextMenus.create({
137138 contexts : [ 'page' ]
138139} ) ;
139140
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+
140148current_browser . contextMenus . onClicked . addListener ( function ( info , tab ) {
141149 "use strict" ;
142150 if ( info . menuItemId === "download_with_uget" ) {
@@ -153,6 +161,11 @@ current_browser.contextMenus.onClicked.addListener(function(info, tab) {
153161 current_browser . cookies . getAll ( { 'url' : extractRootURL ( info . pageUrl ) } , parseCookies ) ;
154162 }
155163 } ) ;
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 ) ;
156169 }
157170} ) ;
158171
@@ -189,15 +202,15 @@ current_browser.downloads.onCreated.addListener(function(downloadItem) {
189202 } ) ;
190203
191204 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 ;
194207 message . referrer = downloadItem [ 'referrer' ] ;
195208 current_browser . cookies . getAll ( { 'url' : extractRootURL ( url ) } , parseCookies ) ;
196209} ) ;
197210
198211current_browser . webRequest . onBeforeRequest . addListener ( function ( details ) {
199212 if ( details . method === 'POST' ) {
200- message . postdata = postParams ( details . requestBody . formData ) ;
213+ message . postData = postParams ( details . requestBody . formData ) ;
201214 }
202215 return {
203216 requestHeaders : details . requestHeaders
@@ -270,8 +283,8 @@ current_browser.webRequest.onHeadersReceived.addListener(function(details) {
270283
271284 for ( var i = 0 ; i < details . responseHeaders . length ; ++ i ) {
272285 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 ) ;
275288 if ( fileSize < minFileSizeToInterrupt && ! isWhiteListed ( message . url ) ) {
276289 return {
277290 responseHeaders : details . responseHeaders
@@ -280,8 +293,8 @@ current_browser.webRequest.onHeadersReceived.addListener(function(details) {
280293 } else if ( details . responseHeaders [ i ] . name . toLowerCase ( ) == 'content-disposition' ) {
281294 disposition = details . responseHeaders [ i ] . value ;
282295 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, "" ) ;
285298 interruptDownload = true ;
286299 }
287300 } else if ( details . responseHeaders [ i ] . name . toLowerCase ( ) == 'content-type' ) {
@@ -316,7 +329,7 @@ current_browser.webRequest.onHeadersReceived.addListener(function(details) {
316329 }
317330 }
318331 if ( details . method != "POST" ) {
319- message . postdata = '' ;
332+ message . postData = '' ;
320333 }
321334 current_browser . cookies . getAll ( { 'url' : extractRootURL ( message . url ) } , parseCookies ) ;
322335 var scheme = / ^ h t t p s / . test ( details . url ) ? 'https' : 'http' ;
@@ -387,7 +400,7 @@ function sendMessageToHost(message) {
387400function getState ( ) {
388401 if ( ugetWrapperNotFound || ! ugetChromeWrapperVersion ) {
389402 return 2 ;
390- } else if ( ! ugetChromeWrapperVersion . startsWith ( "2.0.6" ) ) {
403+ } else if ( ! ugetChromeWrapperVersion . startsWith ( REQUIRED_WRAPPER_VERSION ) ) {
391404 return 1 ;
392405 } else {
393406 return 0 ;
@@ -400,8 +413,8 @@ function getState() {
400413function clearMessage ( ) {
401414 message . url = '' ;
402415 message . cookies = '' ;
403- message . filename = '' ;
404- message . filesize = '' ;
416+ message . fileName = '' ;
417+ message . fileSize = '' ;
405418 message . referrer = '' ;
406419 message . useragent = '' ;
407420 message . batch = false ;
0 commit comments