Ищет функцию, которая может получить название файла в * правом щелчке файла * & gt; свойства & gt; details & gt; title [duplicate]

Другая ситуация, в которой эта ошибка может возникнуть, находится в SQL Server Management Studio. Если в вашей таблице есть поля «text» или «ntext», независимо от того, какое поле вы обновляете (например, бит или целое число). Похоже, что Studio не загружает все поля «ntext», а также обновляет ВСЕ поля вместо измененного. Чтобы решить проблему, исключите поля «текст» или «текст» из запроса в Management Studio

99
задан Daniel Hedberg 8 February 2013 в 18:33
поделиться

16 ответов

Самый простой способ - 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()

Don Не забудьте добавить u до имени, пока не узнаете китайский язык.

u может читать и редактировать в массовом порядке с помощью модуля python glob

ex.

import glob
songs = glob.glob('*')   // script should be in directory of songs.
for song in songs:
    // do the above work.
4
ответ дан Abhijeet Deshani 25 August 2018 в 16:54
поделиться

Я бы предложил mp3-tagger .

- 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)

Он поддерживает атрибуты set, get, update и delete, а также поддерживает все необходимые атрибуты. mp3-файлов.

0
ответ дан Ashish Shirodkar 25 August 2018 в 16:54
поделиться

Проблема с eyed3 заключается в том, что она будет бросать NotImplementedError("Unable to write ID3 v2.2") для обычных файлов MP3.

По моему опыту класс 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 .

11
ответ дан Chris Redford 25 August 2018 в 16:54
поделиться

Я просмотрел приведенные выше ответы и выяснил, что они не подходят для моего проекта из-за проблем с лицензированием с GPL.

И я узнал об этом: PyID3Lib , тогда как особенно дата релиза python устарела, она использует ID3Lib , которая сама по себе актуальна.

Примечательно, что оба являются LGPL, и хорошо идти.

5
ответ дан Ciantic 25 August 2018 в 16:54
поделиться

Если вы можете использовать IronPython, есть TagLibSharp. Он может использоваться с любого языка .NET .

0
ответ дан Community 25 August 2018 в 16:54
поделиться

проверьте это:

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()
8
ответ дан Corey Goldberg 25 August 2018 в 16:54
поделиться

Первый ответ, который использует 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, даже если она была установлена. Чтобы исправить эту установку, выберите здесь [bg] []

0
ответ дан Eli Lopez 25 August 2018 в 16:54
поделиться

Что вам нужно, это модуль 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
12
ответ дан Harley Holcombe 25 August 2018 в 16:54
поделиться

После некоторых начальных исследований я думал, что songdetails может соответствовать моему варианту использования, но он не обрабатывает файлы .m4b. Мутаген. Обратите внимание, что, хотя некоторые из них имеют (разумно) проблему с наложением Mutagen на встроенные в формат ключи, которые варьируются от формата к формату (TIT2 для mp3, название для ogg, \ xa9nam для mp4, Title for WMA и т. Д.), Mutagen.File ( ) имеет (новый?) параметр easy = True, который обеспечивает теги EasyMP3 / EasyID3, которые имеют последовательный, хотя и ограниченный набор ключей. Пока что я провел ограниченное тестирование, но общие ключи, такие как альбом, исполнитель, альбом, жанр, дорожка, диск и т. Д., Все присутствуют и идентичны для файлов .mb4 и .mp3 при использовании easy = True, что делает его очень удобен для моих целей.

0
ответ дан larryy 25 August 2018 в 16:54
поделиться

Попробовав простой pip install маршрут для модулей eyeD3, pytaglib и ID3, рекомендованных здесь, я нашел, что этот четвертый вариант был единственным, кто работал. Остальные были ошибки импорта с отсутствующими зависимостями в 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

Это было мало и самодостаточно, как было объявлено.

1
ответ дан Marc Maxson 25 August 2018 в 16:54
поделиться

На днях я использовал eyeD3 с большим успехом. Я обнаружил, что он может добавлять иллюстрации к тегу ID3, который другие модули, на которые я смотрел, не могли. Вам придется загрузить tar и выполнить python setup.py install из исходной папки.

Ниже приведены соответствующие примеры с сайта.

Чтение содержимого mp3-файла, содержащего информацию о тегах v1 или v2:

 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()
91
ответ дан Owen 25 August 2018 в 16:54
поделиться

Простой пример из книги Dive Into Python работает нормально для меня, это является ссылкой для загрузки, примером является fileinfo.py. Не знаю, является ли это лучшим, но он может выполнять основную работу.

Вся книга доступна в Интернете здесь .

7
ответ дан PabloG 25 August 2018 в 16:54
поделиться

Это может зависеть именно от того, что вы хотите сделать в дополнение к чтению метаданных. Если это просто битбит / имя и т. Д., Что вам нужно, и ничего больше, возможно, что-то облегченное.

Если вы манипулируете mp3, который может быть подходящим PyMedia.

Есть немало, независимо от того, что вы делаете, убедитесь в этом и протестируйте его на множестве пробных носителей. В частности, есть несколько различных версий тегов ID3, поэтому убедитесь, что они не слишком устарели.

Лично я использовал этот небольшой класс MP3Info с удачей. Однако он довольно старый.

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

1
ответ дан Philip Reynolds 25 August 2018 в 16:54
поделиться

Только дополнительная информация для вас, ребята:

взгляните на раздел «MP3-файлы и редакторы метаданных» на странице PythonInMusic .

5
ответ дан quabug 25 August 2018 в 16:54
поделиться

Я использовал mutagen для редактирования тегов в медиафайлах раньше. Хорошая вещь о мутагене заключается в том, что он может обрабатывать другие форматы, такие как mp4, FLAC и т. Д. Я написал несколько сценариев с большим успехом, используя этот API.

33
ответ дан Stypox 25 August 2018 в 16:54
поделиться

Этот инструментарий может делать то, что вам нужно. Я не могу сказать, является ли это «лучшим», но на самом деле, если он делает то, что вам нужно, это все, что имеет значение, верно?

HTH

1
ответ дан Tim Sullivan 25 August 2018 в 16:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: