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

Commit 7423e00

Browse files
committed
Add download video in youtube
1 parent aaec895 commit 7423e00

File tree

4 files changed

+213
-181
lines changed

4 files changed

+213
-181
lines changed

extension/background.js

+34-21
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,14 @@
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";
2223
var interruptDownloads = true;
2324
var ugetWrapperNotFound = true;
2425
var disposition = '';
2526
var hostName;
2627
var ugetChromeWrapperVersion;
27-
var ugetVersion;
28+
var ugetVersion = '';
2829
var chromeVersion;
2930
var firefoxVersion;
3031
var minFileSizeToInterrupt = 300 * 1024; // 300 kb
@@ -35,15 +36,15 @@ var keywordsToInclude = [];
3536
var cookies = '';
3637
var 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
}];
4950
var currRequest = 0;
@@ -78,7 +79,7 @@ current_browser.commands.onCommand.addListener(function(command) {
7879

7980
chromeVersion = parseInt(chromeVersion);
8081
sendMessageToHost({
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
128129
current_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+
140148
current_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

198211
current_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(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/)[1];
284-
message.filename = unescape(message.filename).replace(/\"/g, "");
296+
message.fileName = disposition.match(/filename[^;=\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 = /^https/.test(details.url) ? 'https' : 'http';
@@ -387,7 +400,7 @@ function sendMessageToHost(message) {
387400
function 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() {
400413
function 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;

extension/manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,5 @@
4949
"cookies",
5050
"activeTab"
5151
],
52-
"version": "2.1.0"
52+
"version": "2.1.1"
5353
}

extension/popup.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<body>
2929
<div id="parent-container">
3030
<div id="title-container">
31-
<img id="img-icon" src="icon_32.png" /> <span>uGet Integration 2.1.0</span>
31+
<img id="img-icon" src="icon_32.png" /> <span>uGet Integration 2.1.1</span>
3232
</div>
3333
<hr>
3434
<label id="info">Info: Found uGet and uget-chrome-wrapper</label><label id="error">Error: Unable to connect to the uget-chrome-wrapper</label><label id="warn">Warning: Please upgrade uget-chrome-wrapper to the latest version</label>
@@ -49,7 +49,7 @@
4949
<div id="controls-container">
5050
<label id="label" for="keywords">Minimum file size (in KB) required to interrupt the download:</label>
5151
<br>
52-
<input title="File size in KB" type="text" id="fileSize" name="fileSize" size="50" value=""/>
52+
<input title="File size in KB" type="text" id="fileSize" name="fileSize" size="50" value="" />
5353
</div>
5454
<div id="controls-container">
5555
<label id="label" for="keywords">Interrupt URLs containing these keywords, regardless of the file size:</label>
@@ -64,4 +64,4 @@
6464
</div>
6565
</body>
6666

67-
</html>
67+
</html>

0 commit comments

Comments
 (0)