Skip to content
This repository was archived by the owner on Mar 22, 2018. It is now read-only.

Commit 7c08e5e

Browse files
committed
Refactor message format
1 parent be83196 commit 7c08e5e

File tree

2 files changed

+80
-59
lines changed

2 files changed

+80
-59
lines changed

extension/background.js

Lines changed: 69 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,15 @@ var keywordsToInclude = [];
3636
mediasInTab = {};
3737
var cookies = '';
3838
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
4748
};
4849
var requestList = [{
4950
cookies: '',
@@ -100,9 +101,7 @@ function initialize() {
100101
}
101102
});
102103
chromeVersion = parseInt(chromeVersion);
103-
sendMessageToHost({
104-
version: EXTENSION_VERSION
105-
});
104+
sendMessageToHost(message);
106105
createContextMenus();
107106
}
108107

@@ -171,24 +170,24 @@ function createContextMenus() {
171170
"use strict";
172171
var page_url = info.pageUrl;
173172
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;
176175
current_browser.cookies.getAll({ 'url': extractRootURL(page_url) }, parseCookies);
177176
} else if (info.menuItemId === "download_all_links_with_uget") {
178177
current_browser.tabs.executeScript(null, { file: 'extract.js' }, function(results) {
179178
// Do nothing
180179
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;
184183
current_browser.cookies.getAll({ 'url': extractRootURL(page_url) }, parseCookies);
185184
}
186185
});
187186
} else if (info.menuItemId === "download_media_with_uget") {
188187
if (page_url.includes('/www.youtube.com/watch?v=')) {
189188
// Youtube
190-
message.url = page_url;
191-
message.referrer = page_url;
189+
message.URL = page_url;
190+
message.Referer = page_url;
192191
current_browser.cookies.getAll({ 'url': extractRootURL(page_url) }, parseCookies);
193192
} else {
194193
// Other videos
@@ -197,13 +196,13 @@ function createContextMenus() {
197196
var urls = Array.from(media_set);
198197
var no_or_urls = urls.length;
199198
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;
202201
current_browser.cookies.getAll({ 'url': extractRootURL(page_url) }, parseCookies);
203202
} 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;
207206
current_browser.cookies.getAll({ 'url': extractRootURL(page_url) }, parseCookies);
208207
}
209208
}
@@ -249,16 +248,16 @@ function setDownloadHooks() {
249248
id: downloadItem.id
250249
});
251250

252-
message.url = url;
253-
message.fileName = unescape(downloadItem['filename']).replace(/\"/g, "");
251+
message.URL = url;
252+
message.FileName = unescape(downloadItem['filename']).replace(/\"/g, "");
254253
message.fileSize = fileSize;
255-
message.referrer = downloadItem['referrer'];
254+
message.Referer = downloadItem['referrer'];
256255
current_browser.cookies.getAll({ 'url': extractRootURL(url) }, parseCookies);
257256
});
258257

259258
current_browser.webRequest.onBeforeRequest.addListener(function(details) {
260259
if (details.method === 'POST') {
261-
message.postData = postParams(details.requestBody.formData);
260+
message.PostData = postParams(details.requestBody.formData);
262261
}
263262
return {
264263
requestHeaders: details.requestHeaders
@@ -282,7 +281,7 @@ function setDownloadHooks() {
282281
requestList[currRequest].id = details.requestId;
283282
for (var i = 0; i < details.requestHeaders.length; ++i) {
284283
if (details.requestHeaders[i].name.toLowerCase() === 'user-agent') {
285-
message.useragent = details.requestHeaders[i].value;
284+
message.UserAgent = details.requestHeaders[i].value;
286285
} else if (details.requestHeaders[i].name.toLowerCase() === 'referer') {
287286
requestList[currRequest].referrer = details.requestHeaders[i].value;
288287
} else if (details.requestHeaders[i].name.toLowerCase() === 'cookie') {
@@ -307,6 +306,7 @@ function setDownloadHooks() {
307306
]);
308307
current_browser.webRequest.onHeadersReceived.addListener(function(details) {
309308

309+
310310
if (ugetWrapperNotFound) { // uget-chrome-wrapper not installed
311311
return {
312312
responseHeaders: details.responseHeaders
@@ -326,23 +326,23 @@ function setDownloadHooks() {
326326
}
327327

328328
var interruptDownload = false;
329-
message.url = details.url;
329+
message.URL = details.url;
330330
var contentType = "";
331331

332332
for (var i = 0; i < details.responseHeaders.length; ++i) {
333333
if (details.responseHeaders[i].name.toLowerCase() == 'content-length') {
334334
message.fileSize = details.responseHeaders[i].value;
335335
var fileSize = parseInt(message.fileSize);
336-
if (fileSize < minFileSizeToInterrupt && !isWhiteListed(message.url)) {
336+
if (fileSize < minFileSizeToInterrupt && !isWhiteListed(message.URL)) {
337337
return {
338338
responseHeaders: details.responseHeaders
339339
};
340340
}
341341
} else if (details.responseHeaders[i].name.toLowerCase() == 'content-disposition') {
342342
disposition = details.responseHeaders[i].value;
343343
if (disposition.lastIndexOf('filename') != -1) {
344-
message.fileName = disposition.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/)[1];
345-
message.fileName = unescape(message.fileName).replace(/\"/g, "");
344+
message.FileName = disposition.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/)[1];
345+
message.FileName = unescape(message.FileName).replace(/\"/g, "");
346346
interruptDownload = true;
347347
}
348348
} else if (details.responseHeaders[i].name.toLowerCase() == 'content-type') {
@@ -371,15 +371,15 @@ function setDownloadHooks() {
371371
}
372372
for (var j = 0; j < 3; j++) {
373373
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;
376376
break;
377377
}
378378
}
379379
if (details.method != "POST") {
380-
message.postData = '';
380+
message.PostData = '';
381381
}
382-
current_browser.cookies.getAll({ 'url': extractRootURL(message.url) }, parseCookies);
382+
current_browser.cookies.getAll({ 'url': extractRootURL(message.URL) }, parseCookies);
383383
var scheme = /^https/.test(details.url) ? 'https' : 'http';
384384
if (chromeVersion >= 35 || firefoxVersion >= 51) {
385385
return {
@@ -428,13 +428,33 @@ function setDownloadHooks() {
428428
]);
429429
}
430430

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+
}
431445

432446
/**
433447
* Grab videos and add them to mediasInTab.
434448
*/
435449
function enableVideoGrabber() {
436450
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+
}
438458
});
439459

440460
current_browser.tabs.onRemoved.addListener(function(tabId, removeInfo) {
@@ -448,12 +468,14 @@ function enableVideoGrabber() {
448468
// Loading a new page
449469
delete mediasInTab[tabId];
450470
}
471+
// Check for Youtube
472+
checkForYoutube(tabId, false);
451473
});
452474

453475
current_browser.webRequest.onResponseStarted.addListener(function(details) {
454476
content_url = details['url'];
455477
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')) {
457479
tabId = details['tabId'];
458480
mediaSet = mediasInTab[tabId];
459481
if (mediaSet == undefined) {
@@ -468,7 +490,6 @@ function enableVideoGrabber() {
468490
'<all_urls>'
469491
],
470492
types: [
471-
'main_frame',
472493
'media',
473494
'object'
474495
]
@@ -484,8 +505,8 @@ function sendMessageToHost(message) {
484505
clearMessage();
485506
ugetWrapperNotFound = (response == null);
486507
if (!ugetWrapperNotFound && !ugetChromeWrapperVersion) {
487-
ugetChromeWrapperVersion = response.version;
488-
ugetVersion = response.uget;
508+
ugetChromeWrapperVersion = response.Version;
509+
ugetVersion = response.Uget;
489510
}
490511
});
491512
}
@@ -507,13 +528,13 @@ function getState() {
507528
* Clear the message.
508529
*/
509530
function clearMessage() {
510-
message.url = '';
511-
message.cookies = '';
512-
message.fileName = '';
531+
message.URL = '';
532+
message.Cookies = '';
533+
message.FileName = '';
513534
message.fileSize = '';
514-
message.referrer = '';
515-
message.useragent = '';
516-
message.batch = false;
535+
message.Referer = '';
536+
message.UserAgent = '';
537+
message.Batch = false;
517538
}
518539

519540
/**
@@ -555,7 +576,7 @@ function parseCookies(cookies_arr) {
555576
cookies += cookies_arr[i].value;
556577
cookies += '\n';
557578
}
558-
message.cookies = cookies;
579+
message.Cookies = cookies;
559580
sendMessageToHost(message);
560581
}
561582

uget-chrome-wrapper/bin/uget-chrome-wrapper

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ def download_all_links(data):
101101
"""
102102
Extract all links from the html page and download them.
103103
"""
104-
urls = data['url']
105-
cookie = data['cookies']
104+
urls = data['URL']
105+
cookie = data['Cookies']
106106
try:
107107
logger.debug('Writing links to file')
108108
with open(urls_filepath, 'w') as url_file:
@@ -158,28 +158,28 @@ def read_message():
158158
logger.debug('Received message: ' + str(text))
159159

160160
if text:
161-
if not 'url' in text:
161+
if not 'URL' in text:
162162
uget_version = subprocess.Popen(
163163
[UGET_COMMAND + " --version"], shell=True, stdout=subprocess.PIPE, universal_newlines=True).communicate()[0]
164164
uget_version = uget_version.replace(
165165
'uGet', '').replace('for GTK+', '').strip()
166166
logger.debug('uGet version: ' + uget_version)
167-
send_message('{"enable": true, "version": "' +
168-
VERSION + '", "uget": "' + uget_version + '"}')
167+
send_message('{"Status": "Available", "Version": "' +
168+
VERSION + '", "Uget": "' + uget_version + '"}')
169169
return
170170

171-
send_message('{"state": "accepted"}')
171+
send_message('{"Status": "Available", "Version": "' + VERSION + '", "Uget": ""}')
172172
data = json.loads(text)
173-
url = data['url']
173+
url = data['URL']
174174

175175
if url != "":
176-
if data['batch']:
176+
if data['Batch']:
177177
download_all_links(data)
178178
return
179179
use_cookie_file = False
180-
fileName = data['fileName']
181-
cookie = data['cookies']
182-
referer = data['referrer']
180+
fileName = data['FileName']
181+
cookie = data['Cookies']
182+
referer = data['Referer']
183183
command = [UGET_COMMAND]
184184
if cookie:
185185
try:

0 commit comments

Comments
 (0)