복붙노트

[PYTHON] 파이썬으로 mp3 메타 데이터에 접근하기

PYTHON

파이썬으로 mp3 메타 데이터에 접근하기

파이썬에서 mp3 메타 데이터를 검색하는 가장 좋은 방법은 무엇입니까? 나는 몇 가지 프레임 워크를 보았지만 어떤 것이 가장 좋을지는 확신 할 수 없다.

해결법

  1. ==============================

    1.요즘에는 많은 성공을 거두고 eye3를 사용했습니다. 나는 내가 보았던 다른 모듈들이 볼 수 없었던 ID3 태그에 삽화를 추가 할 수 있다는 것을 발견했다. tar를 다운로드하고 소스 폴더에서 python setup.py install을 실행해야합니다.

    요즘에는 많은 성공을 거두고 eye3를 사용했습니다. 나는 내가 보았던 다른 모듈들이 볼 수 없었던 ID3 태그에 삽화를 추가 할 수 있다는 것을 발견했다. tar를 다운로드하고 소스 폴더에서 python setup.py install을 실행해야합니다.

    웹 사이트의 관련 예제는 다음과 같습니다.

    v1 또는 v2 태그 정보가 포함 된 mp3 파일의 내용 읽기 :

     import eyeD3
     tag = eyeD3.Tag()
     tag.link("/some/file.mp3")
     print tag.getArtist()
     print tag.getAlbum()
     print tag.getTitle()
    

    mp3 파일 (트랙 길이, 비트 전송률 등)을 읽고 태그에 액세스하십시오.

    if eyeD3.isMp3File(f):
         audioFile = eyeD3.Mp3AudioFile(f)
         tag = audioFile.getTag()
    

    특정 태그 버전을 선택할 수 있습니다.

     tag.link("/some/file.mp3", eyeD3.ID3_V2)
     tag.link("/some/file.mp3", eyeD3.ID3_V1)
     tag.link("/some/file.mp3", eyeD3.ID3_ANY_VERSION)  # The default.
    

    또는 원시 프레임을 반복 할 수 있습니다.

     tag = eyeD3.Tag()
     tag.link("/some/file.mp3")
     for frame in tag.frames:
        print frame
    

    태그가 파일에 링크되면 수정하고 저장할 수 있습니다.

     tag.setArtist(u"Cro-Mags")
     tag.setAlbum(u"Age of Quarrel")
     tag.update()
    

    링크 된 태그가 v2이고 v1로 저장하려면 다음과 같이하십시오.

     tag.update(eyeD3.ID3_V1_1)
    

    태그를 읽고 파일에서 태그를 제거하십시오.

     tag.link("/some/file.mp3")
     tag.remove()
     tag.update()
    

    새 태그 추가 :

     tag = eyeD3.Tag()
     tag.link('/some/file.mp3')    # no tag in this file, link returned False
     tag.header.setVersion(eyeD3.ID3_V2_3)
     tag.setArtist('Fugazi')
     tag.update()
    
  2. ==============================

    2.전에는 미디어 파일의 태그를 편집하기 위해 mutagen을 사용했습니다. mutagen에 대한 좋은 점은 mp4, FLAC 등과 같은 다른 형식을 처리 할 수 ​​있다는 것입니다.이 API를 사용하여 여러 스크립트를 작성했으며 많은 성공을 거두었습니다.

    전에는 미디어 파일의 태그를 편집하기 위해 mutagen을 사용했습니다. mutagen에 대한 좋은 점은 mp4, FLAC 등과 같은 다른 형식을 처리 할 수 ​​있다는 것입니다.이 API를 사용하여 여러 스크립트를 작성했으며 많은 성공을 거두었습니다.

  3. ==============================

    3.당신이 겪은 것은 ID3 모듈입니다. 그것은 매우 간단하며 필요한 것을 정확하게 줄 것입니다. ID3.py 파일을 사이트 패키지 디렉토리에 복사하면 다음과 같은 작업을 수행 할 수 있습니다.

    당신이 겪은 것은 ID3 모듈입니다. 그것은 매우 간단하며 필요한 것을 정확하게 줄 것입니다. ID3.py 파일을 사이트 패키지 디렉토리에 복사하면 다음과 같은 작업을 수행 할 수 있습니다.

    from ID3 import *
    try:
      id3info = ID3('file.mp3')
      print id3info
      # Change the tags
      id3info['TITLE'] = "Green Eggs and Ham"
      id3info['ARTIST'] = "Dr. Seuss"
      for k, v in id3info.items():
        print k, ":", v
    except InvalidTagError, message:
      print "Invalid ID3 tag:", message
    
  4. ==============================

    4.eyed3의 문제점은 일반 MP3 파일에 대해 NotImplementedError ( "ID3 v2.2를 쓸 수 없음")를 발생시킵니다.

    eyed3의 문제점은 일반 MP3 파일에 대해 NotImplementedError ( "ID3 v2.2를 쓸 수 없음")를 발생시킵니다.

    내 경험상, mutagen 클래스 EasyID3은보다 안정적으로 작동합니다. 예:

    from mutagen.easyid3 import EasyID3
    
    audio = EasyID3("example.mp3")
    audio['title'] = u"Example Title"
    audio['artist'] = u"Me"
    audio['album'] = u"My album"
    audio['composer'] = u"" # clear
    audio.save()
    

    다른 모든 태그는이 방법으로 액세스하여 저장할 수 있으므로 대부분의 용도에 도움이됩니다. 자세한 내용은 Mutagen Tutorial에서 확인할 수 있습니다.

  5. ==============================

    5.이것을 체크 아웃하십시오.

    이것을 체크 아웃하십시오.

    https://github.com/Ciantic/songdetails

    사용 예 :

    >>> import songdetails
    >>> song = songdetails.scan("data/song.mp3")
    >>> print song.duration
    0:03:12
    

    변경 사항 저장 중 :

    >>> import songdetails
    >>> song = songdetails.scan("data/commit.mp3")
    >>> song.artist = "Great artist"
    >>> song.save()
    
  6. ==============================

    6.이 책의 간단한 예제 인 Python으로 다이브가 나에게 잘 돌아 간다. 다운로드 링크이다. 예제는 fileinfo.py이다. 그것이 최선인지 모릅니다. 그러나 기본적인 일을 할 수 있습니다.

    이 책의 간단한 예제 인 Python으로 다이브가 나에게 잘 돌아 간다. 다운로드 링크이다. 예제는 fileinfo.py이다. 그것이 최선인지 모릅니다. 그러나 기본적인 일을 할 수 있습니다.

    전체 책은 여기에서 온라인으로 볼 수 있습니다.

  7. ==============================

    7.위의 답변을 살펴본 결과 GPL에 대한 라이센스 문제로 인해 내 프로젝트에 좋지 않다는 사실을 알게되었습니다.

    위의 답변을 살펴본 결과 GPL에 대한 라이센스 문제로 인해 내 프로젝트에 좋지 않다는 사실을 알게되었습니다.

    그리고 나는 이것을 알아 냈습니다 : PyID3Lib, 특정 파이썬 바인딩 출시 날짜가 오래되었지만 ID3Lib가 사용되었습니다.이 ID3Lib는 최신 버전입니다.

    언급할만한 점은 둘 다 LGPL이며, 갈 수 있다는 것입니다.

  8. ==============================

    8.너희들에게 단지 추가 정보 :

    너희들에게 단지 추가 정보 :

    PythonInMusic 페이지에서 "MP3 stuff and Metadata editors"섹션을 살펴보십시오.

  9. ==============================

    9.가장 쉬운 방법은 songdetails입니다.

    가장 쉬운 방법은 songdetails입니다.

    데이터 읽기

    import songdetails
    song = songdetails.scan("blah.mp3")
    if song is not None:
        print song.artist
    

    편집과 마찬가지로

    import songdetails
    song = songdetails.scan("blah.mp3")
    if song is not None:
        song.artist = u"The Great Blah"
        song.save()
    

    중국어를 알기 전까지 이름 앞에 u를 추가하는 것을 잊지 마십시오.

    u는 파이썬 글로브 모듈을 사용하여 대량으로 읽고 편집 할 수 있습니다.

    전의.

    import glob
    songs = glob.glob('*')   // script should be in directory of songs.
    for song in songs:
        // do the above work.
    
  10. ==============================

    10.이 툴킷은 필요한 것을 할 수 있습니다. 나는 그것이 "최고"라고 말할 수는 없지만, 정말로 그것이 당신이 필요로하는 것을한다면 그것은 중요합니다.

    이 툴킷은 필요한 것을 할 수 있습니다. 나는 그것이 "최고"라고 말할 수는 없지만, 정말로 그것이 당신이 필요로하는 것을한다면 그것은 중요합니다.

    HTH

  11. ==============================

    11.메타 데이터를 읽는 것 외에도 원하는 작업을 정확하게 수행 할 수 있습니다. 만약 당신이 필요로하는 bitrate / name 등등 아무것도 아니라면, 가벼운 것이 가장 좋습니다.

    메타 데이터를 읽는 것 외에도 원하는 작업을 정확하게 수행 할 수 있습니다. 만약 당신이 필요로하는 bitrate / name 등등 아무것도 아니라면, 가벼운 것이 가장 좋습니다.

    mp3 과거를 조작하는 경우 PyMedia가 적합 할 수 있습니다.

    꽤 많은 것들이 있습니다. 당신이 무엇을 하든지, 샘플 미디어를 충분히 확인하고 테스트하십시오. 특히 ID3 태그에는 몇 가지 버전이 있으므로 너무 오래된 버전이 아닌지 확인하십시오.

    개인적으로이 작은 MP3Info 클래스를 운이 좋게 사용했습니다. 그래도 꽤 오래되었습니다.

    http://www.omniscia.org/~vivake/python/MP3Info.py

  12. ==============================

    12.eyeD3, pytaglib 및 ID3 모듈에 대한 간단한 pip install route를 시도한 후에이 네 번째 옵션이 작동한다는 것을 알았습니다. 나머지는 C ++에서 빠진 의존성이나 마술 또는 pip가 놓친 다른 라이브러리와 함께 가져 오기 오류가있었습니다. ID3 태그 (모든 버전)의 기본 읽기에 대해서는이 태그를 사용하십시오.

    eyeD3, pytaglib 및 ID3 모듈에 대한 간단한 pip install route를 시도한 후에이 네 번째 옵션이 작동한다는 것을 알았습니다. 나머지는 C ++에서 빠진 의존성이나 마술 또는 pip가 놓친 다른 라이브러리와 함께 가져 오기 오류가있었습니다. ID3 태그 (모든 버전)의 기본 읽기에 대해서는이 태그를 사용하십시오.

    https://pypi.python.org/pypi/tinytag/0.18.0

    from tinytag import TinyTag
    tag = TinyTag.get('/some/music.mp3')
    

    TinyTag로 얻을 수있는 속성 목록 :

    tag.album         # album as string
    tag.albumartist   # album artist as string
    tag.artist        # artist name as string
    tag.audio_offset  # number of bytes before audio data begins
    tag.bitrate       # bitrate in kBits/s
    tag.disc          # disc number
    tag.disc_total    # the total number of discs
    tag.duration      # duration of the song in seconds
    tag.filesize      # file size in bytes
    tag.genre         # genre as string
    tag.samplerate    # samples per second
    tag.title         # title of the song
    tag.track         # track number as string
    tag.track_total   # total number of tracks as string
    tag.year          # year or data as string
    

    광고 된대로 작고 자급했습니다.

  13. ==============================

    13.IronPython을 사용할 수 있다면, TagLibSharp가 있습니다. 모든 .NET 언어에서 사용할 수 있습니다.

    IronPython을 사용할 수 있다면, TagLibSharp가 있습니다. 모든 .NET 언어에서 사용할 수 있습니다.

  14. ==============================

    14.초기 연구 끝에 songdetails가 내 유스 케이스에 맞을 수도 있다고 생각했지만 .m4b 파일은 처리하지 못했습니다. 돌연변이 원은 않습니다. 일부는 (합리적으로) Mutagen의 형식 고유 키의 출현과 관련이 있지만 형식에 따라 다릅니다 (mp3의 경우 TIT2, ogg의 경우 제목, mp4의 경우 \ xa9nam, WMA의 제목 등), mutagen.File ( )에는 일관된 키가 있지만 EasyMP3 / EasyID3 태그를 제공하는 (new?) easy = True 매개 변수가 있습니다. 지금까지 제한된 테스트 만 수행했지만 앨범, 아티스트, 앨범 아트, 장르, 트랙 번호, 디스크 번호 등과 같은 공통 키는 easy = True를 사용하면 .mb4 및 .mp3 파일에 모두 나타나며 동일하게 만듭니다 내 목적에 매우 편리합니다.

    초기 연구 끝에 songdetails가 내 유스 케이스에 맞을 수도 있다고 생각했지만 .m4b 파일은 처리하지 못했습니다. 돌연변이 원은 않습니다. 일부는 (합리적으로) Mutagen의 형식 고유 키의 출현과 관련이 있지만 형식에 따라 다릅니다 (mp3의 경우 TIT2, ogg의 경우 제목, mp4의 경우 \ xa9nam, WMA의 제목 등), mutagen.File ( )에는 일관된 키가 있지만 EasyMP3 / EasyID3 태그를 제공하는 (new?) easy = True 매개 변수가 있습니다. 지금까지 제한된 테스트 만 수행했지만 앨범, 아티스트, 앨범 아트, 장르, 트랙 번호, 디스크 번호 등과 같은 공통 키는 easy = True를 사용하면 .mb4 및 .mp3 파일에 모두 나타나며 동일하게 만듭니다 내 목적에 매우 편리합니다.

  15. ==============================

    15.eyed3을 사용하는 첫 번째 대답은 구식이므로 업데이트 된 버전이 있습니다.

    eyed3을 사용하는 첫 번째 대답은 구식이므로 업데이트 된 버전이 있습니다.

    mp3 파일에서 태그 읽기 :

     import eyed3
    
     audiofile = eyed3.load("some/file.mp3")
     print(audiofile.tag.artist)
     print(audiofile.tag.album)
     print(audiofile.tag.album_artist)
     print(audiofile.tag.title)
     print(audiofile.tag.track_num)
    

    태그 수정을위한 웹 사이트의 예 :

     import eyed3
    
     audiofile = eyed3.load("some/file.mp3")
     audiofile.tag.artist = u"Integrity"
     audiofile.tag.album = u"Humanity Is The Devil"
     audiofile.tag.album_artist = u"Integrity"
     audiofile.tag.title = u"Hollow"
     audiofile.tag.track_num = 2
    

    처음으로 eyed3을 사용하려고 할 때 발생한 문제는 libmagic이 설치되어 있어도 가져 오기 오류와 관련이있었습니다. 이 문제를 해결하려면 여기에서 magic-bin whl을 설치하십시오.

  16. ==============================

    16.나는 mp3-tagger를 제안 할 것이다. 이것에 대한 가장 좋은 점은 MIT 라이센스에 따라 배포되며 모든 필수 속성을 지원한다는 것입니다.

    나는 mp3-tagger를 제안 할 것이다. 이것에 대한 가장 좋은 점은 MIT 라이센스에 따라 배포되며 모든 필수 속성을 지원한다는 것입니다.

    - artist;
    - album;
    - song;
    - track;
    - comment;
    - year;
    - genre;
    - band;
    - composer;
    - copyright;
    - url;
    - publisher.
    

    예:

    from mp3_tagger import MP3File
    
    # Create MP3File instance.
    mp3 = MP3File('File_Name.mp3')
    
    # Get all tags.
    tags = mp3.get_tags()
    print(tags)
    

    mp3 파일의 설정, 가져 오기, 업데이트 및 삭제 속성을 지원합니다.

  17. from https://stackoverflow.com/questions/8948/accessing-mp3-meta-data-with-python by cc-by-sa and MIT license