Skip to content
Snippets Groups Projects
Commit c6de0539 authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Should now download org vorbis files

parent e6058a32
No related branches found
No related tags found
No related merge requests found
...@@ -3,26 +3,26 @@ import requests ...@@ -3,26 +3,26 @@ import requests
import json import json
from urllib.parse import quote_plus from urllib.parse import quote_plus
import youtube_dl import youtube_dl
from django.conf import settings
import glob
def download( def download(
url, url,
target_directory, target_directory=settings.MEDIA_ROOT,
name="%(id)s", name="%(id)s.%(ext)s",
extension='vorbis', extension='vorbis',
bitrate=192): bitrate=192):
target_path = os.path.join(target_directory, '{}.ogg'.format(name)) target_path = os.path.join(target_directory, name)
ydl_opts = { ydl_opts = {
'format': 'bestaudio/best',
'quiet': True, 'quiet': True,
'outtmpl': target_path, 'outtmpl': target_path,
'postprocessors': [{ 'postprocessors': [{
'key': 'FFmpegExtractAudio', 'key': 'FFmpegExtractAudio',
'preferredcodec': extension, 'preferredcodec': extension,
'preferredquality': str(bitrate),
}], }],
} }
_downloader = youtube_dl.YoutubeDL(ydl_opts) _downloader = youtube_dl.YoutubeDL(ydl_opts)
info = _downloader.extract_info(url) info = _downloader.extract_info(url)
info['audio_file_path'] = target_path % {'id': info['id']} info['audio_file_path'] = target_path.format(**info)
return info return info
...@@ -3,8 +3,11 @@ from test_plus.test import TestCase ...@@ -3,8 +3,11 @@ from test_plus.test import TestCase
from .. import downloader from .. import downloader
from funkwhale_api.utils.tests import TMPDirTestCaseMixin from funkwhale_api.utils.tests import TMPDirTestCaseMixin
class TestDownloader(TMPDirTestCaseMixin, TestCase): class TestDownloader(TMPDirTestCaseMixin, TestCase):
def test_can_download_audio_from_youtube_url(self): def test_can_download_audio_from_youtube_url_to_vorbis(self):
data = downloader.download('https://www.youtube.com/watch?v=tPEE9ZwTmy0', target_directory=self.download_dir) data = downloader.download('https://www.youtube.com/watch?v=tPEE9ZwTmy0', target_directory=self.download_dir)
self.assertTrue(os.path.exists(data['audio_file_path'])) self.assertTrue(
os.path.exists(os.path.join(self.download_dir, 'tPEE9ZwTmy0.ogg'))
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment