Skip to content
Snippets Groups Projects
Forked from funkwhale / funkwhale
6073 commits behind the upstream repository.
downloader.py 566 B
import os

import youtube_dl
from django.conf import settings


def download(
    url, target_directory=settings.MEDIA_ROOT, name="%(id)s.%(ext)s", bitrate=192
):
    target_path = os.path.join(target_directory, name)
    ydl_opts = {
        "quiet": True,
        "outtmpl": target_path,
        "postprocessors": [{"key": "FFmpegExtractAudio", "preferredcodec": "vorbis"}],
    }
    _downloader = youtube_dl.YoutubeDL(ydl_opts)
    info = _downloader.extract_info(url)
    info["audio_file_path"] = target_path % {"id": info["id"], "ext": "ogg"}
    return info