Putting MB metadata to files.

This commit is contained in:
Lukáš Lalinský
2006-09-03 00:14:15 +02:00
parent 89453229fc
commit 486ffa8fd9
6 changed files with 34 additions and 11 deletions

View File

@@ -23,6 +23,7 @@ from threading import RLock
from musicbrainz2.webservice import Query, WebServiceError, ReleaseIncludes
from musicbrainz2.model import VARIOUS_ARTISTS_ID, NS_MMD_1
from musicbrainz2.utils import extractUuid, extractFragment
from picard.metadata import Metadata
from picard.util import formatTime
from picard.dataobj import DataObject
from picard.track import Track
@@ -65,6 +66,17 @@ class Album(DataObject):
self.lock()
mdata = Metadata()
mdata["ALBUM"] = release.title
mdata["ARTIST"] = release.artist.name
mdata["ARTIST_SORTNAME"] = release.artist.sortName
mdata["ALBUMARTIST"] = release.artist.name
mdata["ALBUMARTIST_SORTNAME"] = release.artist.sortName
mdata["MUSICBRAINZ_ALBUMID"] = release.id
mdata["MUSICBRAINZ_ARTISTID"] = release.artist.id
mdata["MUSICBRAINZ_ALBUMARTISTID"] = release.artist.id
mdata["TOTALTRACKS"] = len(release.tracks)
self.name = release.title
self.artist = Artist(release.artist.id, release.artist.name)
@@ -77,6 +89,13 @@ class Album(DataObject):
artist = Artist(release.artist.id, release.artist.name)
tr = Track(track.id, track.title, artist, self)
tr.duration = track.duration or 0
tr.metadata.copy(mdata)
tr.metadata["TITLE"] = track.title
if track.artist:
tr.metadata["ARTIST"] = artist.name
tr.metadata["ARTIST_SORTNAME"] = track.artist.sortName
tr.metadata["MUSICBRAINZ_ARTISTID"] = artist.id
tr.metadata["MUSICBRAINZ_TRACKID"] = track.id
self.tracks.append(tr)
self.duration += tr.duration
@@ -94,6 +113,9 @@ class Album(DataObject):
self.files.append(file)
self.emit(QtCore.SIGNAL("trackUpdated"), track)
def removeLinkedFile(self, track, file):
self.emit(QtCore.SIGNAL("trackUpdated"), track)
def getNumUnmatchedFiles(self):
return len(self.unmatchedFiles)
@@ -107,9 +129,6 @@ class Album(DataObject):
count += 1
return count
def getNumFiles(self):
return len(self.files)
def removeFile(self, file):
index = self.unmatchedFiles.index(file)
self.emit(QtCore.SIGNAL("fileAboutToBeRemoved"), index)
@@ -120,7 +139,7 @@ class Album(DataObject):
def getName(self):
if self.getNumTracks():
return _(u"%s (%d / %d)") % (self.name, self.getNumTracks(), self.getNumFiles())
return _(u"%s (%d / %d)") % (self.name, self.getNumTracks(), self.getNumLinkedFiles())
else:
return self.name

View File

@@ -48,7 +48,7 @@ class File(QtCore.QObject):
self.track = None
self.localMetadata = Metadata()
self.serverMetadata = Metadata()
self.metadata = Metadata()
self.audioProperties = AudioProperties()
def lock(self):
@@ -66,7 +66,7 @@ class File(QtCore.QObject):
raise NotImplementedError()
def getNewMetadata(self):
return self.serverMetadata
return self.metadata
def removeFromCluster(self):
locker = QtCore.QMutexLocker(self.mutex)
@@ -105,7 +105,7 @@ class File(QtCore.QObject):
def getSimilarity(self):
locker = QtCore.QMutexLocker(self.mutex)
return similarity(self.localMetadata.get(u"TITLE", u""),
self.serverMetadata.get(u"TITLE", u""))
self.metadata.get(u"TITLE", u""))
class FileManager(QtCore.QObject):

View File

@@ -151,7 +151,7 @@ class CuesheetVirtualFile(File):
self.localMetadata["ALBUMARTIST"] = cuesheet.tracks[0].getArtist()
self.localMetadata["TRACKNUMBER"] = str(track.getTrackNumber())
self.localMetadata["TOTALTRACKS"] = str(len(cuesheet.tracks) - 1)
self.serverMetadata.copy(self.localMetadata)
self.metadata.copy(self.localMetadata)
self.audioProperties.length = track.getLength()
class CuesheetOpener(Component):

View File

@@ -27,7 +27,7 @@ class MutagenMp3File(File):
else:
self.localMetadata["TRACKNUMBER"] = text
self.serverMetadata.copy(self.localMetadata)
self.metadata.copy(self.localMetadata)
# Audio properties
self.audioProperties.length = int(mfile.info.length * 1000)

View File

@@ -19,6 +19,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
from PyQt4 import QtCore, QtGui
from picard.metadata import Metadata
from picard.util import formatTime
from picard.dataobj import DataObject
@@ -30,6 +31,7 @@ class Track(DataObject):
self.album = album
self.duration = 0
self.file = None
self.metadata = Metadata()
def __str__(self):
return u"<Track %s, name %s>" % (self.id, self.name)
@@ -46,11 +48,13 @@ class Track(DataObject):
if self.file:
self.file.moveToCluster(self.tagger.unmatchedFiles)
self.file = file
file.metadata.copy(self.metadata)
self.album.addLinkedFile(self, file)
def removeFile(self, file):
file = self.file
self.file = None
self.album.removeLinkedFile(self, file)
return file
def isLinked(self):

View File

@@ -359,12 +359,12 @@ class MainWindow(QtGui.QMainWindow):
obj = objects[0]
if isinstance(obj, File):
localMetadata = obj.localMetadata
serverMetadata = obj.serverMetadata
serverMetadata = obj.metadata
statusBar = obj.fileName
elif isinstance(obj, Track):
if obj.isLinked():
localMetadata = obj.file.localMetadata
serverMetadata = obj.file.serverMetadata
serverMetadata = obj.file.metadata
statusBar = obj.file.fileName
if localMetadata: