python 으로 음악 다운로드 기 만 들 기
어느 밤,나 는 자신의 폴 더 를 열 고 지루 해 보 이 는 코드 를 많이 쓴 것 을 발견 했다.그래서 한 가지 생각 이 저절로 생 겼 다."생활 이 이미 지루 해 졌 으 니 좀 더 지루 한 것 이 낫 겠 다."
하 겠 다 면 하 겠 습 니 다.그럼 주 제 를 열 겠 습 니 다.우 리 는 kimol 군의 지루 한 발명 이 라 고 부 릅 니 다.
묘..아~~
바로 주제 로!본 논문 의 주 제 는 python 으로 음악 다운로드 기(MusicLover)를 만 드 는 것 입 니 다.바로 위의 그림 입 니 다.
이곳 을 보 실 수 있 을 것 입 니 다.여러분 의 머 릿 속 에는 이미 각종 JS 복호화,파라미터 분석 등 초보 자 들 을 골 치 아 프 게 하 는 것 이 머 릿 속 에 있 습 니 다.
하지만 그 럴 생각 은 없습니다.
본 고 는 매우 우호 적 이 고 초보 자 에 게 도 적합 하 며 기능 도 여전히 강하 다!
후 사 를 알 고 싶 으 시 면,손님 께 서 는 다음 에 오 십시오~
1.기술 실현
1.앞 사람 이 나 무 를 심 으 면 뒷사람 이 더 위 를 식 힌 다
복잡 한 분석 과 해석 과정 을 피하 기 위해 저 는 특정한 클 라 우 드 음악,특정한 Q 음악 이 바로 간 입 니 다.인터넷 검색 을 통 해 나 는 웹 사 이 트 를 찾 았 다.
테스트 를 통 해 나 는 그것 이 여러 음악 플랫폼 의 음악 다운 로드 를 지원 할 수 있다 는 것 을 발견 했다.그렇다면 내 가 왜 그 기초 위 에서 개발 을 하지 않 겠 는가?이른바'선인 이 나 무 를 심 으 면 후세 사람들 이 더 위 를 식 힌 다'는 것 이 어찌 좋 지 않 겠 는가?
2.앞으로 오 는 사람 이 상승한다
브 라 우 저 를 통 해 자체 적 으로 가 져 온 도구(F12 누 르 기)를 통 해 네트워크 캡 처 를 차단 하면 POST 요청 을 알 수 있 고 4 개의 인자 만 있 습 니 다.
그러면 requests 라 이브 러 리 를 통 해 이 요 구 를 잘 실현 할 수 있 습 니 다.
#
url = 'https://music.sonimei.cn' #
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0',
'Accept':'application/json, text/javascript, */*; q=0.01',
'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Accept-Encoding':'gzip, deflate, br',
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With':'XMLHttpRequest',
'Content-Length':'53',
'Connection':'keep-alive'} #
data = {'input':' ',
'filter':'name',
'type':'qq',
'page':1} #
res = requests.post(url,headers=headers,data=data)
돌아 오 는 데 이 터 는 제 이 슨 형식 으로 음악의 이름,작가,음악 다운로드 주소 등 정 보 를 포함한다.주 소 를 받 은 후에 우 리 는 그것 을 로 컬 에 다운로드 하면 된다.
with open('test.m4a','wb') as f:
res = requests.get('http://dl.stream.qqmusic.qq.com/C1000045NGM43ZAUXG.m4a?fromtag=38')
f.write(res.content)
여기까지 기본 기능 은 이미 실현 되 었 다.우 리 는 선인 의 어깨 위 에 서서 이미'후임자 가 위 를 차지한다'는 것 을 실현 했다.다음은 그것들 에 대해 포장 과 집적 만 하면 된다.3.집대성 자
포장 방식 은 여러 가지 일 수 있 습 니 다.여기 서 제 생각 을 제공 합 니 다.참고 하 시기 바 랍 니 다.전체 코드 는 다음 과 같 습 니 다.
# =============================================================================
# MusicLover by kimol
# =============================================================================
import os
import requests
from tqdm import tqdm
#
url = 'https://music.sonimei.cn' #
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0',
'Accept':'application/json, text/javascript, */*; q=0.01',
'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Accept-Encoding':'gzip, deflate, br',
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With':'XMLHttpRequest',
'Content-Length':'53',
'Connection':'keep-alive'} #
data = {'input':'',
'filter':'name',
'type':'qq',
'page':1} #
savePath = './musics' #
#
if not os.path.exists(savePath):
os.mkdir(savePath)
#
welcome = '''
__ ___ _ __
/ |/ /_ _______(_)____/ / ____ _ _____ _____
/ /|_/ / / / / ___/ / ___/ / / __ \ | / / _ \/ ___/
/ / / / /_/ (__ ) / /__/ /___/ /_/ / |/ / __/ /
/_/ /_/\__,_/____/_/\___/_____/\____/|___/\___/_/
'''
os.system('cls')
os.system('mode con cols=85 lines=25')
print(welcome)
#
while True:
choice = input('>>> ( ):')
if choice == 'quit':
print(' ~')
break
data['input'] = choice
res = requests.post(url,headers=headers,data=data)
d_json = res.json() #
musics = d_json['data']
if d_json['code'] != 200:
print(' , ')
continue
else:
print('*'*45)
print('{0:{3}<4}{1:{3}<10}{2:{3}^10}{3}'.format(' ',' ',' ',chr(12288)))
print('*'*45)
N = 1 #
for m in musics:
print('{0:{3}<4}{1:{3}<10}{2:{3}^10}{3}'.format(N,m['title'],m['author'],chr(12288)))
N += 1
print('*'*45)
choice = input('>>> :')
n = int(choice)
name = musics[n-1]['title'] #
url_download = musics[n-1]['url'] #
bar = tqdm(range(1),ncols=60) #
for b in bar:
res = requests.get(url_download)
with open('%s/%s.m4a'%(savePath,name),'wb') as f:
f.write(res.content)
bar.set_description(' ')
테스트 해 보 니 다운로드 에 성 공 했 습 니 다.2.후속 개선
분명히 내 가 제공 한 코드 는 아주 기본 적 인 demo 일 뿐 이 고 보완 할 수 있 는 부분 이 많다.예 를 들 어:
이상 은 python 으로 음악 다운로드 기 를 만 드 는 상세 한 내용 입 니 다.python 음악 다운로드 기 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.