diff --git a/python_plugin/README.md b/python_plugin/README.md new file mode 100644 index 000000000..118ffa9da --- /dev/null +++ b/python_plugin/README.md @@ -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! diff --git a/python_plugin/screenshot.png b/python_plugin/screenshot.png new file mode 100644 index 000000000..68a9eeaf0 Binary files /dev/null and b/python_plugin/screenshot.png differ diff --git a/python_plugin/youtube.py b/python_plugin/youtube.py new file mode 100644 index 000000000..925ec62e4 --- /dev/null +++ b/python_plugin/youtube.py @@ -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()