Savify는 선택한 공급자(기본적으로 YouTube)에서 노래를 다운로드한 다음 Spotify에서 메타 정보를 스크랩하는 Python 라이브러리입니다. 쿼리가 주어지면 Savify는 최대 320kb/s 의 품질로 mp3 형식으로 노래를 찾아 다운로드합니다! 이 응용 프로그램은 또한 모든 노래에 id3v2 태그를 긁어 작성합니다. 태그에는 제목, 아티스트, 연도, 앨범, 표지 아트까지 포함됩니다!
Savify는 모든 Spotify 트랙, 앨범 및 재생 목록 링크를 지원합니다. 또한 통합 검색 기능이 있어 Spotify 링크가 없더라도 노래 이름만 입력하면 Savify가 다운로드할 수 있습니다!
mp3뿐만 아니라 Savify는 다른 파일 형식을 다운로드하고 변환할 수도 있습니다. 응용 프로그램 내에서 모든 장치에서 최대의 호환성을 위해 노래를 다운로드할 형식과 품질을 지정할 수 있습니다. 사용 가능한 형식: mp3, aac, flac, m4a, opus, vorbis 및 wav. 태그와 커버 아트는 mp3 형식으로 다운로드한 노래에만 적용됩니다.
이 라이브러리는 어떤 식으로든 Spotify TOS에 위배되지 않습니다. 노래는 Spotify에서 직접 추출되지 않고 대신 youtube-dl Python 라이브러리를 사용하여 YouTube 및 Soundcloud와 같은 다른 소스에서 다운로드됩니다. Spotify는 다운로드한 노래 파일에 포함될 정확한 메타 정보를 수집하는 데에만 사용됩니다.
공식 Docker Hub 이미지 저장소를 방문하여 최신 Docker 이미지를 받으세요: https://hub.docker.com/repository/docker/laurencerawlings/savify
질문이나 피드백이 있으면 Discord Server에 참여하세요
Savify는 오픈 소스 FFmpeg 라이브러리를 사용하여 다운로드한 노래에 메타데이터를 변환하고 기록합니다. FFmpeg가 컴퓨터에 설치되어 있고 시스템 PATH에 추가되어 있는지 확인하세요. 여기 튜토리얼을 따르세요.
Savify를 사용하여 개인 Spotify 재생 목록을 다운로드하려면 가시성이 '공개'로 설정되어 있는지 확인하세요. 이는 Savify가 Spotify API를 사용하여 재생 목록에서 노래 세부 정보를 검색할 수 있도록 하기 위한 것입니다.
Windows를 사용하는 경우 미리 포장된 최신 실행 패키지(Savify API 키를 제공할 필요가 없으므로 권장)를 다운로드하거나 Python 라이브러리를 다운로드하고 CLI를 사용하여 모듈을 직접 실행할 수 있습니다.
여기로 이동하여 최신 Savify.exe를 다운로드한 후 다음 사항을 확인하세요.
FFmpeg가 다운로드되어 경로에 추가되었습니다.
환경 변수에 Spotify API 자격 증명이 추가되었습니다.
그게 다입니다. 가셔도 좋습니다! 아래의 몇 가지 사용 예를 참조하세요.
$ pip install -U savify
저장소를 복제하고 루트 디렉터리에 있는지 확인하세요. 다음 빌드 명령을 실행합니다.
$ docker build -t savify:dev .
현재 Savify는 Spotify URL과 검색어만 지원하지만 Spotify URI에 대한 지원은 향후 추가될 예정입니다.
릴리스 페이지에서 최신 Savify.exe를 다운로드한 경우 터미널을 열고 바이너리와 동일한 디렉터리로 이동한 후 다음을 실행할 수 있습니다.
$ Savify.exe
Python 패키지를 사용 중이고 savify가 사이트 패키지에 설치되어 있고 pip 폴더가 PATH(기본적으로 있어야 함)에 있는 경우 어디에서나 간단하게 다음을 실행할 수 있습니다.
$ savify
도움을 받으려면 다음을 실행하세요.
$ savify --help
위의 기본값 사용:
$ savify "https://open.spotify.com/track/4Dju9g4NCz0LDxwcjonSvI"
자신만의 옵션 지정:
$ savify "https://open.spotify.com/track/4Dju9g4NCz0LDxwcjonSvI" -q best -f mp3 -o "/path/to/downloads" -g "%artist%/%album%"
검색어 사용:
$ savify "You & I - Bru-C" -t track -q best -f mp3 -o "/path/to/downloads" -g "%artist%/%album%"
사용 가능한 변수: %artist%, %album%, %playlist%
예를 들어:
$ savify "You & I - Bru-C" -o /path/to/downloads -g "%artist%/%album%"
다음 디렉토리 구조로 다운로드합니다.
/경로/대상/다운로드 | |- /브루-C | |- /오리지널 사운드 | |- 브루씨 - 너와 나.mp3
쿼리 유형: | 길 |
---|---|
품질: | 최상의 |
체재: | mp3 |
길: | Windows: 홈/AppData/로밍/저장/다운로드 리눅스: HOME/.local/share/Savify/downloads MacOS: 홈/라이브러리/응용 프로그램 지원/Savify/다운로드 |
그룹화: | 그룹화 없음 |
더 많은 사용 예를 보려면 문서를 읽어보세요.
다른 컨테이너의 네트워크에도 연결할 수 있는 컨테이너 내에서 savify를 실행하세요. 이는 여러 개의 savify 인스턴스를 실행하거나 다운로드를 위해 VPN을 사용하려는 경우에 유용합니다. 자체 빌드된 Docker 이미지나 공식 이미지를 사용할 수 있습니다. 올바른 Docker 이미지 이름과 태그를 사용해야 합니다.
$ docker run laurencerawlings/savify:latest
인수가 지정되지 않으면 컨테이너는 도움말 페이지를 인쇄합니다. 인수를 추가하기만 하면 다운로드가 지속되도록 호스트에서 폴더를 마운트해야 합니다( -v
). pwd
현재 있는 디렉터리를 마운트하는 데 사용되며 완료되면 컨테이너를 제거합니다( --rm
). 환경 변수( -e
)를 사용하여 Spotify 클라이언트 ID와 비밀번호를 지정해야 합니다.
$ docker run --rm -v "`pwd`:/root/.local/share/Savify/downloads" -e SPOTIPY_CLIENT_ID=클라이언트_ID -e SPOTIPY_CLIENT_SECRET=client_secret laurencerawlings/savify:최신 "https://open.spotify.com/playlist/..."
로그를 보존하려면 docker run 명령에 -v "./logs:/root/.local/share/Savify/logs"
인수를 추가하여 로깅 디렉터리를 마운트하면 됩니다.
쉘 스크립트로 자동화:
$ nano savify.sh
#!/bin/bashdocker run --rm -v "`pwd`:/root/.local/share/Savify/downloads" -e SPOTIPY_CLIENT_ID=클라이언트_ID -e SPOTIPY_CLIENT_SECRET=client_secret Laurencerawlings/savify:최신 $1
그런 다음 다음을 실행하십시오.
$ sh savify.sh "https://open.spotify.com/track/4Dju9g4NCz0LDxwcjonSvI"
또한 스크립트가 연결할 수 있는 VPN 컨테이너가 있는지 확인하기 위한 VPN 검사가 통합된 Docker 스크립트를 사용하여 빠르게 시작할 수 있는 옵션도 있습니다. 이 스크립트는 cron으로 예약하는 데 적합합니다.
$ wget https://github.com/laurencerawlings/savify/latest/download/savify-docker-scripts.zip $ 압축 해제 savify-docker-scripts.zip && rm savify-docker-scripts.zip $ cd savify-docker-스크립트/
그런 다음 원하는 텍스트 편집기(nano 선호)를 사용하여 구성 파일을 편집하고 저장한 다음(nano의 변경 사항을 저장하려면 Ctrl + X, Y) 이름을 config.sh
로 바꿔야 합니다.
$ 나노 template.config.sh $ mv template.config.sh config.sh
그런 다음 스크립트를 실행할 수 있습니다.
$ bash 대량 다운로드.sh
Savify Python 모듈을 사용하려면 API에 액세스할 수 있는 자체 Spotify 개발자 애플리케이션이 필요합니다. 이를 수행하려면 여기에서 가입하세요. 새 애플리케이션을 작성한 후에는 클라이언트 ID와 비밀번호를 기록해 두십시오. 다음 두 가지 방법으로 ID와 비밀번호를 Savify에 전달할 수 있습니다.
이제 시스템에 2개의 환경 변수를 추가해야 합니다.
SPOTIPY_CLIENT_ID
SPOTIPY_CLIENT_SECRET
이를 수행하는 방법을 알아 보려면 특정 운영 체제에 대한 온라인 튜토리얼을 찾으십시오. 이 작업을 완료한 후에는 쉘을 다시 시작하십시오.
Savify 객체를 생성할 때 튜플을 사용하여 ID와 비밀번호를 전달할 수 있습니다.
s = Savify(api_credentials=("CLIENT_ID","CLIENT_SECRET"))
환경에 패키지를 설치합니다.
$ pip install savify
Savify 가져오기 및 사용:
from savify import Savifyfrom savify.types import Type, Format, Qualitys = Savify()# Spotify URLs.download("SPOTIFY URL")# 검색 쿼리# 유형: TRACK, ALBUM, PLAYLISTs.download("QUERY", query_type=Type. 길)
선택적 생성자 인수를 저장합니다(기본값은 위 참조).
수입 로깅 savify 가져오기에서 Savify savify.types에서 유형, 형식, 품질 가져오기 savify.utils에서 PathHolder 가져오기 # 품질 옵션: 최악, Q32K, Q96K, Q128K, Q192K, Q256K, Q320K, 최고 # 형식 옵션: MP3, AAC, FLAC, M4A, OPUS, VORBIS, WAV Savify(api_credentials=None, quality=Quality.BEST, download_format=Format.MP3, path_holder=PathHolder(downloads_path='path/for/downloads'), group='%artist%/%album%', Quiet=False, Skip_cover_art =거짓, log_level=logging.INFO)
youtube-dl 옵션을 수동으로 사용자 정의:
from savify import Savifyoptions = {'cookiefile': 'cookies.txt'}Savify(ydl_options=options)
자신의 로거에 전달:
from savify import Savifyfrom savify.logger import Loggerlogger = Logger(log_location='path/for/logs', log_level=None) # 자동 출력Savify(logger=logger)
그룹 인수는 출력 경로 내에서 다운로드한 노래를 정렬하는 데 사용됩니다. 경로 문자열에 가능한 변수는 %artist%, %album% 및 %playlist%입니다. 변수는 노래 메타데이터로 대체됩니다. 예를 들어 위의 Savify 개체를 사용하여 다운로드한 노래는 path/for/downloads/Example Artist/Example Album/Example Song.mp3와 같은 경로에 저장됩니다.
Savify에 직접 추가하려면 여기 지침을 사용하세요. 거기에서 Savify를 더 좋게 만들 것이라고 생각되는 추가 사항을 만들 수 있습니다.
Savify를 개발하는 경우 pip 패키지를 로컬로 설치하여 변경 사항을 적용하고 테스트할 수 있습니다. 루트 디렉터리에서 다음을 실행합니다.
$ pip install -e .
그런 다음 Python 모듈을 실행할 수 있습니다.
$ savify
이 패키지는 Cookiecutter 및 audreyr/cookiecutter-pypackage 프로젝트 템플릿을 사용하여 생성되었습니다.