2014-09-09 2 views
0

저는 연결된 MP3 파일의 제목, 아티스트 및 길이 (그다지 중요하지 않음)를 가져와야하는 Python 2.7의 스크립트를 작성하고 있습니다. 나는이 일을 어떻게하는지에 대해 잘 모르겠다. 나는 urllib와 mutagen으로 몇 가지 접근법을 시도했지만 아무도 일하지 않았다. 글쎄, 하나는 효과가 있었지만, 웬일인지 작동을 멈췄다. urllib은 압축 할 값이 너무 많아서 왜 그런지 모르겠다 고 말하기 시작했습니다. 여기에 작동하는 데 사용되는 것입니다 : 잘 작동, 내가 변경 모르겠어요,하지만 난 이후 근무 아무것도 발견하지 않았습니다Python 2.7의 온라인 MP3 파일 제목 및 아티스트 가져 오기

from urllib import urlopen 
from mutagen.mp3 import MP3 

def getInfo(url): 
    filename, headers = urlopen(url) 
    audio = MP3(filename) 

. 나는 여기서 깨닫는 것보다 조금 애매한 것일 수 있으므로, 더 많은 정보가 필요하면 알려 주시기 바랍니다. 고맙습니다!

답변

1

생각해 보면, 당신은 임시 폴더에 mp3를 다운로드해야한다고 생각합니다. 그 후, xan은 정보를 읽습니다. 예 :

from urllib2 import Request, urlopen 
from mutagen.mp3 import MP3 

def getInfo(url): 
    start_byte = 0 
    end_byte = 5000 
    url = Request(url) 
    url.add_header('Range', 'bytes=' + str(start_byte) + '-' + str(end_byte)) 
    filename = urlopen(url) 

    output = open("test_file.mp3",'wb') 
    output.write(filename.read()) 
    output.close() 
    audio = MP3("test_file.mp3") 

    print audio.info.pprint() 

하지만 실제 해결책이 아닙니다. 왜냐하면, 나는 어떤 바이트가 id3 헤더를 반환 mp3 파일 구조에 대해 아무것도 몰라. 이것은 이것을 구현할 수있는 방법의 예입니다.

+0

내가이 고려 볼 수 있지만, 그것을 다운로드하는 데 시간이 오래 걸리고, 나는 바로 ID3 태그를 다운로드 할 수있는 방법이 있는지 당신은 알고 계십니까 꽤 빨리해야합니까? – JuniorGenius

+0

아, 내가 말했듯이; 나는이 같은 1 개 값으로 변경하면 너무 많은 값이 을 unpack'하고 : '파일 이름 = urlopen (URL)' 9 호선주는 최근의 같은 라인 5 는'ValueError를이 오류가 작동하지 않습니다 오류 : 'TypeError : 유니 코드로 강제 변환 중 : 문자열 또는 버퍼가 필요합니다. 인스턴스를 찾았습니다 .' – JuniorGenius

+1

오류가 발생했습니다. 어쩌면 당신은 HTTP 범위 헤더로 mp3 파일 헤더 만 읽을 수 있습니다. 그리고 그것을 파싱 할 수 있습니다. – hkulekci

1

파이썬 3을 사용하는 경우 mutagen 대신 mutagenx을 사용해야합니다. here

import mutagenx 
import mutagenx.id3 
audio = mutagenx.id3.ID3(filename, translate=False) 
print(audio["title"], audio["artist"], audio["length"]) 
+0

아니요, 파이썬 2.7을 사용하고 있습니다. 나는 아마 지정해야했다, 나의 나쁜 – JuniorGenius

관련 문제