Browse Source

Added support for both version of python

master
Maxim Stewart 1 year ago
parent
commit
53adcfaf1e
  1. 50
      app/youtube-dl-bridge.py

50
app/youtube-dl-bridge.py

@ -1,23 +1,51 @@
#!/usr/bin/env python
#!/usr/sbin/python
import sys
import json
import struct
import subprocess
import os, sys, json, struct, threading, subprocess
# Python 2.x version (if sys.stdin.buffer is not defined)
DLPATH = os.path.expanduser("~") + "/Downloads"
MAJOR_VERSION = sys.version_info[0]
def threaded(fn):
def wrapper(*args, **kwargs):
threading.Thread(target=fn, args=args, kwargs=kwargs).start()
return wrapper
# Python 2.x and 3.x read version
# Read a message from stdin and decode it.
def getMessage():
rawLength = sys.stdin.read(4)
message = None
rawLength = None
if MAJOR_VERSION == 2: # py2
rawLength = sys.stdin.read(4)
else: # py3
rawLength = sys.stdin.buffer.read(4)
if len(rawLength) == 0:
sys.exit(0)
messageLength = struct.unpack('@I', rawLength)[0]
message = sys.stdin.read(messageLength)
if MAJOR_VERSION == 2: # py2
message = sys.stdin.read(messageLength)
else: # py3
message = sys.stdin.buffer.read(messageLength).decode("utf-8")
return json.loads(message)
@threaded
def downloadVideo(command):
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
while True:
receivedMessage = getMessage()
if receivedMessage:
command = "cd ~/Downloads && youtube-dl " + receivedMessage;
subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
outputFile = DLPATH + "/%\(title\)s.%\(ext\)s "
command = "youtube-dl --no-playlist -o " + outputFile + receivedMessage;
downloadVideo(command)

Loading…
Cancel
Save