Initial code commit
This commit is contained in:
parent
031c4a2661
commit
ab016cd7bf
14
README.md
Normal file
14
README.md
Normal file
@ -0,0 +1,14 @@
|
||||
### Note ###
|
||||
The WebExtension, which can be found under "add-on", connects to the native application and downloads the video using youtube-dl
|
||||
|
||||
The native application, which can be found under "app", listens for messages from the WebExtension. When it receives a message, the native application runs youtube-dl in the Downloads folder for the passed url from the WebExtension.
|
||||
|
||||
*** Look in your Downloads folder to find your video. ***
|
||||
|
||||
### Mac OS/Linux Setup ###
|
||||
To get this working do the following:
|
||||
|
||||
1. Check that the [file permissions](https://en.wikipedia.org/wiki/File_system_permissions) for "youtube-dl-bridge.py" include the `execute` permission.
|
||||
2. Edit the "path" property of "web_video_dl.json" to point to the location of "youtube-dl-bridge.py" on your computer.
|
||||
3. copy "web_video_dl.json" to the correct location on your computer. See [App manifest location ](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Native_manifests#Manifest_location) to find the correct location for your OS.
|
||||
4. Install the webextension and enjoy!
|
10
add-on/background.js
Normal file
10
add-on/background.js
Normal file
@ -0,0 +1,10 @@
|
||||
// On a click on the browser action, send the app a message.
|
||||
browser.browserAction.onClicked.addListener(() => {
|
||||
// Create new connect to the app so we can dl multiple stuff at same time.
|
||||
let port = browser.runtime.connectNative("web_video_dl");
|
||||
browser.tabs.query({currentWindow: true, active: true}).then((tab) => {
|
||||
tab = tab[0];
|
||||
console.log("Downloding: " + tab.url);
|
||||
port.postMessage(tab.url);
|
||||
});
|
||||
});
|
BIN
add-on/icons/video.png
Normal file
BIN
add-on/icons/video.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
19
add-on/manifest.json
Normal file
19
add-on/manifest.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "Web Video Downloader",
|
||||
"description": "Use youtube-dl to download videos from the web.",
|
||||
"manifest_version": 2,
|
||||
"version": "1.0",
|
||||
"icons": { "64": "icons/video.png" },
|
||||
|
||||
"applications": {
|
||||
"gecko": {
|
||||
"id": "1itdominator@gmail.com",
|
||||
"strict_min_version": "50.0"
|
||||
}
|
||||
},
|
||||
|
||||
"permissions": ["nativeMessaging", "activeTab"],
|
||||
"background": { "scripts": ["background.js"] },
|
||||
"browser_action": { "default_icon": "icons/video.png" }
|
||||
|
||||
}
|
7
app/web_video_dl.json
Normal file
7
app/web_video_dl.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"name": "web_video_dl",
|
||||
"description": "Video downloader using youtube-dl",
|
||||
"path": "/insert/your/path/here/to/youtube-dl-bridge.py",
|
||||
"type": "stdio",
|
||||
"allowed_extensions": [ "1itdominator@gmail.com" ]
|
||||
}
|
23
app/youtube-dl-bridge.py
Executable file
23
app/youtube-dl-bridge.py
Executable file
@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import json
|
||||
import struct
|
||||
import subprocess
|
||||
|
||||
# Python 2.x version (if sys.stdin.buffer is not defined)
|
||||
# Read a message from stdin and decode it.
|
||||
def getMessage():
|
||||
rawLength = sys.stdin.read(4)
|
||||
if len(rawLength) == 0:
|
||||
sys.exit(0)
|
||||
messageLength = struct.unpack('@I', rawLength)[0]
|
||||
message = sys.stdin.read(messageLength)
|
||||
return json.loads(message)
|
||||
|
||||
while True:
|
||||
receivedMessage = getMessage()
|
||||
|
||||
if receivedMessage:
|
||||
command = "cd ~/Downloads && youtube-dl " + receivedMessage;
|
||||
subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
|
Loading…
Reference in New Issue
Block a user