понедельник, июня 08, 2009

Decibel & Monkeys

на сегодняшний день основным плеером в Linux у меня является Decibel Audio Player. плюсы, по которым я его выбирал - он играет музыку и делает это хорошо (по большому счету, больше ничего особенного он делать не умеет, да и не собирается - смотрим сайт проекта).
понятие "хорошо" для меня включает - проиграть музыку, показать кто поет, показать обложку (при необходимости поискать её в сети), рассказать об этом last.fm.

комбайны разнообразных коллекций в формате а-ля айТюнс - rhythmbox, amarok, songbird меня не устраивают просто потому, что я не считаю, что это самый дружественный способ показать мою коллекцию музыки. в этом плане меня больше устраивает подход, реализованный в windows media player.
их основной недостаток - напрягает, когда плеер считает, что он лучше меня знает как организована моя коллекция, не даёт объяснить ему, что он всё таки не прав и главное считает своей главной задачей изменять мои файлы и создавать кучу служебных файлов там где это не нужно.
отдельно не нравится, что плеер, претендующий на роль помощника в навигации по музыкальному массиву, реально усложняет это делать. особенно когда музыки много, а плеер сваливает в кучу файлы с неразпознанными тегами. про магию с кодировками (linux vs unicode vs windows) не говорю.

как-то пользовался quodlibet у него был один косяк со съёмным диском, обходимый, но сильно раздражающий...

так или иначе я перешел на decibel. к чему я всё это настучал?

столкнулся я тут недавно с неудобством - decibel делает вид, что не умеет проигрывать файлы формата MonkeysAudio (те, что с расширением APE).
именно делает, так как за проигрывание отвечает gstreamer, а он это делать умеет. метаданные файлов разбирает библиотека mutagen, которая данный тип также понимает.
а посему открываем исходники, далее:

1. по аналогии, например, с файлом ../src/media/flac.py создаем файл ../src/media/monkeysaudio.py следующего содержания:
from mutagen.monkeysaudio  import MonkeysAudio
from media.track.fileTrack import FileTrack

def getTrack(file):
""" Return a Track created from a MonkeysAudio APE file """
track = FileTrack(file)
monkeysAudioFile = MonkeysAudio(file)

track.setLength(int(round(monkeysAudioFile.info.length)))

try: track.setTitle(str(monkeysAudioFile['title'][0]))
except: pass

#и далее по тексту .../flac.py

return track


2. открываем файл ../src/media/__init__.py и в нем:
- в конце 21 строки from format import asf... дописывем ..., monkeysaudio
- в конце 28 строки в словарь добавляем пару '.ape': monkeysaudio, строка должна выглядеть как-то так (одной строкой):
mFormats = {'.flac': flac, '.m4a': mp4, '.mp3': mp3, '.mp4': mp4, '.mpc': mpc,'.ogg': ogg, '.wma': asf, '.ape': monkeysaudio}

3. сохраняем, запускаем, слушаем.

дополнительное неудобство - decibel не разбирает файлы формата CUE Sheet, что бывает неудобно в случаях когда в наличии flac- или ape-файл без тегов и cue-файлом вместо них. подумаю об этом завтра.

3 комментария:

cray комментирует...

Слушаю трансовые радиошоу, и проблема CUE-sheets имеет место быть, да!

Пока что использую qmmp, правда он притянул QTlibs.

Найдете способ заставить плеер читать их - отпишитесь

cray комментирует...

Во втором шаге кажется есть ошибка,

открываем не

/src/media/__init__.py

a

/src/__init__.py

z комментирует...

у меня в папке src нет файла __init__.py, потому с моей стороны ошибки нет (-: