forked from Ethanscharlie/Happy-Ripper
Downloaded m4as
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
from flask import Flask, render_template, request, jsonify
|
||||
from threading import Thread
|
||||
import time
|
||||
from yt_dlp import YoutubeDL
|
||||
from yt_dlp.utils import DownloadError
|
||||
import pathlib
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
||||
def rip_worker(rip_queue: list[str]):
|
||||
project_root_path = pathlib.Path(__file__).parent.resolve()
|
||||
tmp_path = f"{project_root_path}/tmp"
|
||||
|
||||
while True:
|
||||
queue_is_empty = len(rip_queue) == 0
|
||||
if queue_is_empty:
|
||||
continue
|
||||
|
||||
# Creates tmp directory, if it already exists, it clears it, and makes a new one.
|
||||
if not os.path.isdir(tmp_path):
|
||||
os.mkdir(tmp_path)
|
||||
else:
|
||||
shutil.rmtree(tmp_path)
|
||||
os.mkdir(tmp_path)
|
||||
|
||||
current_url = rip_queue[0]
|
||||
|
||||
try:
|
||||
with YoutubeDL(
|
||||
{
|
||||
"format": "m4a/bestaudio/best",
|
||||
"postprocessors": [
|
||||
{
|
||||
"key": "FFmpegExtractAudio",
|
||||
"preferredcodec": "m4a",
|
||||
}
|
||||
],
|
||||
"outtmpl": f"{tmp_path}/%(title)s.%(ext)s",
|
||||
}
|
||||
) as ydl:
|
||||
error_code = ydl.download([current_url])
|
||||
|
||||
except DownloadError:
|
||||
print("Download Error")
|
||||
|
||||
rip_queue.pop(0)
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
app = Flask(__name__)
|
||||
rip_queue = []
|
||||
ripping_thread = Thread(target=rip_worker, args=(rip_queue,), daemon=True).start()
|
||||
|
||||
|
||||
@app.route("/")
|
||||
def index():
|
||||
return render_template("index.html")
|
||||
|
||||
|
||||
@app.route("/rip", methods=["POST"])
|
||||
def rip():
|
||||
url = request.form.get("url")
|
||||
rip_queue.append(url)
|
||||
return jsonify({"success": True, "message": f"Added, {url}!"})
|
||||
Reference in New Issue
Block a user