2017-10-10 1 views
-1

YouTube-DL은 특별히 youtube-dl.conf 파일에서 별도로 지정하지 않는 한 작업 디렉토리에 기본적으로 저장됩니다. 그러나이 파일은 설치시 존재하지 않으므로 작성하는 데 많은 어려움을 겪고 있습니다.Python 스크립트에서 임베디드 용도로 YouTube-DL 기본 저장 위치 변경

저는 Digital Ocean에서 Ubuntu 16.04 LAMP 스택 서버를 실행하고 있습니다.

youtube-dl.conf/usr/local/etc 아래에 작성한 다음 이것을 추가했습니다 : --o ~/html/media/audio/%(title)s하지만 아무 것도 수행하지 않습니다.

나는 this 대답 해결책 시도 :

mkdir -p ~/.config/youtube-dl/ 
echo "-o ~/html/media/audio/%(title)s" > ~/.config/youtube-dl/config 

을 그리고 그것은 어떤 문제없이 작동하지만,이 디렉토리를 만든 어디서 찾을 수없고, 어느 쪽이든 작동하지 않습니다.

나는 youtube-dl을 사용하고 있기 때문에 단순히 명령 줄에서가 아니라 youtube-dl -o "~/Desktop/%(title)s.%(ext)s" 'youtube file url'과 같은 작업을 수행 할 수 없습니다. 위의 명령을 URL없이 실행하면 작동하지 않습니다. Related askubuntu question.

아무도 도와 줄 수 있습니까? 작업 디렉토리는 /var/www/html이지만, /var/www/html/media/audio에 저장해야합니다. 우분투는 아직 처음입니다. 고맙습니다!

Youtube-DL Github Configuration Section

편집 :

subprocess.check_call(['youtube-dl', '--output', '/var/www/html/media/audio/%(title)s.%(ext)s', url]) 

하지만이 mkv에 파일을 저장하고 나는 mp3 형식으로 필요합니다 아래 @phihag으로 대답을 사용하여, 나는이 추가되었습니다. 내가 좋아하는 뭔가를 시도했다 :

subprocess.check_call(['youtube-dl', '--audio-format', 'mp3', '--output', '/var/www/html/media/audio/%(title)s.%(ext)s', url]) 

그리고 다른 유사하지만,이 오류 같은 것을 얻을 :

subprocess.CalledProcessError: Command '['youtube-dl', '--extract-audio --audio-format mp3 --output '/var/www/html/media/audio/%(title)s', 'url']' returned non-zero exit status 2 

이 내가 이전에 내가 지금 사용하는 에뮬레이션하기 위해 노력하고있어 것을 사용 된 옵션은 the subprocess :

ydl_opts = { 
     'fixup': 'detect_or_warn', 
     'format': 'bestaudio/best', 
     'extractaudio': True, 
     'postprocessors': [{ 
      'key': 'FFmpegExtractAudio', 
      'preferredcodec': 'mp3', 
      'preferredquality': '320', 
     }], 
     'logger': MyLogger(), 
     'progress_hooks': [my_hook], 
    } 

위의 옵션을 사용하면 기본 위치를 변경할 수 없습니다. 그게 당신이 다운로드 할 때마다, 또는 커맨드 라인을 통해 상황에 따라 이루어져야 할 때마다, 또는 내 이해에 config 파일을 사용해야합니다. 내 검색에서 다른 사람을 볼 수있는 예제를 보지 못했어요. 스크립트의 API를 통해 기본 저장 위치 지정).

답변

1

구성 파일을 쓸 필요가 없습니다. 출력 템플릿을 파이썬에서도 설정할 수 있습니다 :

from __future__ import unicode_literals 
import youtube_dl 

ydl_opts = { 
    'outtmpl': '/var/www/html/media/audio/%(title)s.%(ext)s', 
    'extractaudio': True, 
    'postprocessors': [{ 
     'key': 'FFmpegExtractAudio', 
     'preferredcodec': 'mp3', 
     'preferredquality': '320', 
    }], 
} 
with youtube_dl.YoutubeDL(ydl_opts) as ydl: 
    ydl.download(['https://www.youtube.com/watch?v=BaW_jenozKc']) 
+0

그게 효과가 있습니다! 이 문제는 1) 현재 디렉토리에 파일을 저장하고 있으며, 2) 오디오 파일을 'mkv'로 저장하고 있습니다. 나는''subprocess.check_call ([ 'youtube-dl', '--audio-format', 'bestaudio/best', url])'을 시도했으나 경고 메시지가 나타납니다 : 요청한 형식은 병합 할 수 없으므로 병합됩니다. mkv.' 어떤 생각을 어떻게 바꿀 수 있습니까? – pez

+0

1)이 질문에서 정확한 코드를 실행하면 현재 디렉토리에 어떤 파일이 저장됩니까? 예를 들어, 나중에 게시하는 예제 코드는별로 의미가 없습니다. 뭔가를 실행하면 어딘가에서 실행중인 정확한 코드를 게시해야합니다. [요점] (https : // gist.github.com/)은 아주 잘 작동합니다. 전체 코드로 새로운 질문을하는 것도 정당화 될 수 있습니다. 2) 다시 테스트 URL을 포함하여 실제 재현 가능한 코드를 게시하십시오. '--format'을 사용하여 다운로드 형식을 선택할 수는 있지만 여기서 다른 점이있을 수 있습니다. – phihag

+0

고마워, 다른 저장 위치가 내 오류 였어. 현재 다른 명령을'subprocess.check_call'에 추가하려고하는데 작동하지 않습니다. 이전에 질문을 편집했습니다. 원하는 경우이 대답을 받아 들일 수 있고 새로운 질문을 시작할 수 있습니다. – pez