На основе поиска MD5 в сценарии Oli (спасибо!) я написал сценарий Python, который использует модуль eyeD3 для поиска MP3-файлов, поиска обложек альбомов из кеша Banshee и встраивания обложек внутри MP3-файлов. Он пропускает любые файлы, в которые уже встроено художественное произведение.
Это не идеально, но он работал примерно на 90% моих MP3-файлов, и вы можете вручную обрабатывать любые исключения с помощью EasyTag. В его подлиннике сценарий ожидает, что MP3-файлы станут двумя уровнями каталогов в глубине от целевого каталога (музыкальный корень / художник / альбом). Сценарий печатает отчет, когда он сделан, выделяя любые файлы, которые он не мог обработать или для которых он не мог найти обложки.
Очевидно, вам нужно установить Python и eyeD3 в используйте его:
#! /usr/bin/env python
import os, sys, glob, eyeD3, hashlib
CACHE_FILE_PREFIX = os.getenv("HOME") + "/.cache/media-art/album-"
def embedAlbumArt(dir = "."):
artworkNotFoundFiles = []
errorEmbeddingFiles = []
noMetadataFiles = []
mp3s = findMP3Files(dir)
for mp3 in mp3s:
print "Processing %s" % mp3
tag = eyeD3.Tag()
hasMetadata = tag.link(mp3)
if not hasMetadata:
print "No Metadata - skipping."
noMetadataFiles.append(mp3)
continue
if hasEmbeddedArtwork(tag):
print "Artwork already embedded - skipping."
continue
artworkFilename = findAlbumArtworkFile(tag)
if not artworkFilename:
print "Couldn't find artwork file - skipping."
artworkNotFoundFiles.append(mp3)
continue
print "Found artwork file: %s" % (artworkFilename)
wasEmbedded = embedArtwork(tag, artworkFilename)
if wasEmbedded:
print "Done.\n"
else:
print "Failed to embed.\n"
errorEmbeddingFiles.append(mp3)
if artworkNotFoundFiles:
print "\nArtwork not found for:\n"
print "\n".join(artworkNotFoundFiles)
if errorEmbeddingFiles:
print "\nError embedding artwork in:\n"
print "\n".join(errorEmbeddingFiles)
if noMetadataFiles:
print "\nNo Metadata found for files:\n"
print "\n".join(noMetadataFiles)
def findMP3Files(dir = "."):
pattern = "/".join([dir, "*/*", "*.mp3"])
mp3s = glob.glob(pattern)
mp3s.sort()
return mp3s
def hasEmbeddedArtwork(tag):
return len(tag.getImages())
def findAlbumArtworkFile(tag):
key = "%s\t%s" % (tag.getArtist(), tag.getAlbum())
md5 = getMD5Hash(key)
filename = CACHE_FILE_PREFIX + md5 + ".jpg"
if os.path.exists(filename):
return filename
else:
return 0
def getMD5Hash(string):
string = string.encode("utf-8")
md5 = hashlib.md5()
md5.update(string)
return md5.hexdigest()
def embedArtwork(tag, artworkFilename):
tag.addImage(eyeD3.ImageFrame.FRONT_COVER, artworkFilename)
success = 0
try:
success = tag.update()
except:
success = 0
return success
if __name__ == "__main__":
if len(sys.argv) == 1:
print "Usage: %s path" % (sys.argv[0])
else:
embedAlbumArt(sys.argv[1])
На вашем компьютере используется прошивка EFI, а выход Boot Repair выглядит так, как будто компьютер пришел с установкой Windows, которую вы удалили и заменили на Ubuntu. Я знаю, что вы говорите, что это связано с «дистрибутивом Acer Linux», и именно поэтому я возглавляю то, что предлагает вывод Boot Repair, так как эти два не согласны. Мое подозрение заключается в том, что по какой-либо причине (возможно, неисправная прошивка) Acer установила свой загрузчик Linux таким образом, чтобы он выглядел как загрузчик Windows, и компьютер все еще пытается загрузиться через этот загрузчик. Другие изменения должны были удалить последующие программы загрузчика, в результате появляющиеся сообщения об ошибках.
Я могу придумать несколько способов исправить эту проблему, но никто из них не будет работать, поэтому вам может потребоваться несколько способов. Я опишу пару, которые, скорее всего, будут работать ....
Вы можете дополнительно включить безопасную загрузку, и вы можете удалить избыточные файлы загрузчика из /boot/efi/EFI/*/ каталогов или отредактировать refind.conf в /boot/efi/EFI/refind/ или /boot/efi/EFI/Microsoft/Boot, чтобы раскомментировать и добавить загрузчики к каналам dont_scan_dirs или dont_scan_files.
На вашем компьютере используется прошивка EFI, а выход Boot Repair выглядит так, как будто компьютер пришел с установкой Windows, которую вы удалили и заменили на Ubuntu. Я знаю, что вы говорите, что это связано с «дистрибутивом Acer Linux», и именно поэтому я возглавляю то, что предлагает вывод Boot Repair, так как эти два не согласны. Мое подозрение заключается в том, что по какой-либо причине (возможно, неисправная прошивка) Acer установила свой загрузчик Linux таким образом, чтобы он выглядел как загрузчик Windows, и компьютер все еще пытается загрузиться через этот загрузчик. Другие изменения должны были удалить последующие программы загрузчика, в результате появляющиеся сообщения об ошибках.
Я могу придумать несколько способов исправить эту проблему, но никто из них не будет работать, поэтому вам может потребоваться несколько способов. Я опишу пару, которые, скорее всего, будут работать ....
Вы можете дополнительно включить безопасную загрузку, и вы можете удалить избыточные файлы загрузчика из /boot/efi/EFI/*/ каталогов или отредактировать refind.conf в /boot/efi/EFI/refind/ или /boot/efi/EFI/Microsoft/Boot, чтобы раскомментировать и добавить загрузчики к каналам dont_scan_dirs или dont_scan_files.
На вашем компьютере используется прошивка EFI, а выход Boot Repair выглядит так, как будто компьютер пришел с установкой Windows, которую вы удалили и заменили на Ubuntu. Я знаю, что вы говорите, что это связано с «дистрибутивом Acer Linux», и именно поэтому я возглавляю то, что предлагает вывод Boot Repair, так как эти два не согласны. Мое подозрение заключается в том, что по какой-либо причине (возможно, неисправная прошивка) Acer установила свой загрузчик Linux таким образом, чтобы он выглядел как загрузчик Windows, и компьютер все еще пытается загрузиться через этот загрузчик. Другие изменения должны были удалить последующие программы загрузчика, в результате появляющиеся сообщения об ошибках.
Я могу придумать несколько способов исправить эту проблему, но никто из них не будет работать, поэтому вам может потребоваться несколько способов. Я опишу пару, которые, скорее всего, будут работать ....
Вы можете дополнительно включить безопасную загрузку, и вы можете удалить избыточные файлы загрузчика из /boot/efi/EFI/*/ каталогов или отредактировать refind.conf в /boot/efi/EFI/refind/ или /boot/efi/EFI/Microsoft/Boot, чтобы раскомментировать и добавить загрузчики к каналам dont_scan_dirs или dont_scan_files.