mirror of
https://github.com/l1ving/youtube-dl
synced 2026-06-07 17:33:33 +08:00
Added a Python plugin to continously monitor our clipboard to start the download automatically
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user