Added a Python plugin to continously monitor our clipboard to start the download automatically

This commit is contained in:
Meliodas 2016-03-16 15:49:59 +05:30
parent 23edc49509
commit 039a74b984
3 changed files with 82 additions and 0 deletions

23
python_plugin/README.md Normal file
View File

@ -0,0 +1,23 @@
# Youtube-dl plugin to automatically start your download:
A Python script to constantly watch your clipboard content, and download if its a youtube link!
#Python Libraries you might need to install:
-> Pyperclip
#Steps to setup:
1. Install Pyperclip python plugin
2. Place youtube.py in the same folder where your youtube-dl executable(by rg3) is there
3. Make sure the name of the downloader executable is youtube.exe
4. Run Youtube.py
#Screenshot:
![alt tag](https://raw.githubusercontent.com/vishnugt/youtube_dl-plugin/master/screenshot.png)
# You are good to go!
So from now on, if you copy a youtube link it will automatically start to download the video!
Cheers :)
Thanks rg3 for youtube-dl and making it as open source!

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

59
python_plugin/youtube.py Normal file
View File

@ -0,0 +1,59 @@
import time
import threading
import os
import subprocess
import sys
import pyperclip
def is_url_but_not_bitly(url):
if url.startswith("https://www.youtube.com"):
return True
return False
def print_to_stdout(clipboard_content):
print " Yosh! Found an URL"
tempstring = str(clipboard_content)
pyperclip.copy('')
print " Launching youtube-dl to download"
with open(os.devnull, "w") as fnull:
subprocess.call("start youtube "+tempstring, stdout = fnull, stderr = fnull, shell = True)
class ClipboardWatcher(threading.Thread):
def __init__(self, predicate, callback, pause=5.):
super(ClipboardWatcher, self).__init__()
self._predicate = predicate
self._callback = callback
self._pause = 5
self._stopping = False
def run(self):
recent_value = ""
while not self._stopping:
tmp_value = pyperclip.paste()
if tmp_value != recent_value:
recent_value = tmp_value
if self._predicate(recent_value):
self._callback(recent_value)
time.sleep(self._pause)
def stop(self):
self._stopping = True
def main():
watcher = ClipboardWatcher(is_url_but_not_bitly,
print_to_stdout,
5.)
watcher.start()
while True:
try:
print "Waiting for a youtube URL..."
time.sleep(10)
except KeyboardInterrupt:
watcher.stop()
break
if __name__ == "__main__":
main()