make downloader pure

This commit is contained in:
zuckerberg 2021-05-25 08:28:49 -04:00
parent 494822935b
commit 8416bd0702
3 changed files with 22 additions and 11 deletions

View File

@ -13,26 +13,26 @@
# youtube_dl = import_from_pip('youtube_dl') # youtube_dl = import_from_pip('youtube_dl')
import tempfile import tempfile
import pip
import sys import sys
import youtube_dl
import subprocess import subprocess
dirpath = tempfile.mkdtemp() youtube_dl = None
sys.path.append(dirpath)
BUFFER_SIZE = 1024
def execute(cmd): def execute(cmd):
popen = subprocess.Popen(cmd, stdout=subprocess.PIPE) popen = subprocess.Popen(cmd, stdout=subprocess.PIPE)
# monitor the stdout # monitor the stdout
BUFFER_SIZE = 1024
for chunk in iter(lambda: popen.stdout.read(BUFFER_SIZE), b''): for chunk in iter(lambda: popen.stdout.read(BUFFER_SIZE), b''):
yield chunk yield chunk
popen.stdout.close() popen.stdout.close()
popen.wait() popen.wait()
def updateYoutubeDL(): def updateYoutubeDL():
pip.main(['install', '--target=' + dirpath, '--upgrade', package]) pip.main(['install', '--target=' + dirpath, '--upgrade', 'youtube_dl'])
def importYoutubeDL():
global youtube_dl
youtube_dl = __import__('youtube_dl')
def download(url): def download(url):
# update youtube-dl # update youtube-dl
@ -40,7 +40,7 @@ def download(url):
#updateYoutubeDL() #updateYoutubeDL()
# start downloader so that it's stdout (with fragments) may be captured # start downloader so that it's stdout (with fragments) may be captured
for s in execute(["python3","downloader.py",url]): for s in execute([sys.executable,"downloader.py",dirpath,url]):
print(s) print(s)
def runYoutubeDL(url): def runYoutubeDL(url):
@ -53,4 +53,12 @@ def runYoutubeDL(url):
ydl.download([url]) ydl.download([url])
if __name__ == "__main__": if __name__ == "__main__":
runYoutubeDL(sys.argv[1]) dirpath = sys.argv[1]
sys.path.append(dirpath)
importYoutubeDL()
runYoutubeDL(sys.argv[2])
else:
import pip
dirpath = tempfile.mkdtemp()
sys.path.append(dirpath)
updateYoutubeDL()

View File

@ -1,8 +1,9 @@
import pip
import downloader import downloader
def run(): def run():
downloader.download('https://www.youtube.com/watch?v=BaW_jenozKc') downloader.download('https://www.youtube.com/watch?v=BaW_jenozKc')
downloader.download('https://www.youtube.com/watch?v=kgBcg4uBd9Q') # downloader.download('https://www.youtube.com/watch?v=kgBcg4uBd9Q')
if __name__ == "__main__": if __name__ == "__main__":
run() run()

View File

@ -1,9 +1,11 @@
from setuptools import setup from setuptools import setup
requires = ["pip"]
setup( setup(
name='radio', name='radio',
version='0.1', version='0.1',
py_modules=['radio'], py_modules=['radio','downloader'],
entry_points={ entry_points={
'console_scripts': ['radio = radio:run'] 'console_scripts': ['radio = radio:run']
}, },