[Syncropated-commits] r162 - trunk/src

zimmerle at garage.maemo.org zimmerle at garage.maemo.org
Tue Jan 30 01:48:48 EET 2007


Author: zimmerle
Date: 2007-01-30 01:48:47 +0200 (Tue, 30 Jan 2007)
New Revision: 162

Added:
   trunk/src/ElementMusic.py
Log:
ElementMusic first import

Added: trunk/src/ElementMusic.py
===================================================================
--- trunk/src/ElementMusic.py	2007-01-29 23:44:04 UTC (rev 161)
+++ trunk/src/ElementMusic.py	2007-01-29 23:48:47 UTC (rev 162)
@@ -0,0 +1,161 @@
+
+
+import gobject
+import gtk
+import os
+
+import eyeD3
+import mutagen
+import mutagen.easyid3
+
+from Logger import Logger
+from Configuration import Configuration
+from Icons import Icons
+from Utils import Utils
+from Exif import Exif
+
+log = Logger()
+config = Configuration()
+icons = Icons()
+utils = Utils()
+
+
+class ElementMusic(gobject.GObject):
+	"""
+	Handle music files.
+
+	"""
+
+	__file_path = None
+	__iter = iter
+
+	def __init__(self, filepath=None):
+		"""
+		Constructor
+
+		"""
+		gobject.GObject.__init__(self)
+
+		self.mp3 = None
+		self.set_file_path(filepath)
+		return
+
+
+	def set_file_path(self, filepath):
+		"""
+		Set file path and read the music.
+
+		"""
+		self.__file_path = filepath
+
+		mut2 = None
+
+		log.info('ElementMusic :: Loading file: ' + filepath)
+		try:
+			self.mp3 = eyeD3.Mp3AudioFile(filepath)
+			mut = mutagen.File(filepath)
+			if isinstance(mut, mutagen.mp3.MP3):
+				mut2 = mutagen.easyid3.EasyID3(filepath)
+				if isinstance(mut, mutagen.m4a.M4A):
+					mut2 = {}
+					mut2['title'] = str(audio['\xa9nam'])
+		except:
+			log.info('ElementMusic :: Problems loading file: ' + filepath)
+			pass
+		self.mut = mut2
+
+
+	def get_file_path(self):
+		"""
+		Return the file path
+
+		"""
+		return os.path.split(self.__file_path)[0]
+
+
+	def get_filename(self):
+		"""
+		Return file name
+
+		"""
+		return os.path.split(self.__file_path)[1]
+
+	
+	def set_iter(self, iter):
+		"""
+		Set iter.
+
+		"""
+		log.debug('ElementMusic :: ' + str(iter))
+		self.__iter = iter
+
+
+	def get_iter(self):
+		"""
+		Get iter.
+
+		"""
+		return self.__iter
+
+
+	def set_property(self, key, value):
+		if key == 'getPlayCount':
+			try:
+				self.mp3.tag.setPlayCount(int(value))
+				self.mp3.tag.update()
+			except:
+				pass
+			return
+
+		try:
+			self.mut[key] = value
+			self.mut.pprint()
+			self.mut.save()
+		except:
+			pass
+
+
+	def get_property(self, name):
+		if self.mp3 == None:
+			return 'Unknow'
+
+		if name == 'filename':
+			return self.mp3.fileName
+		elif name == 'getPath':
+			return self.get_file_path()
+		elif name == 'getBitRateString' or name == 'getPlayTimeString' or name == 'getSize':
+			func = getattr(self.mp3, name)
+			return func()
+
+		elif name == 'getPlayCount':
+			if self.mp3.tag != None:
+				func = getattr(self.mp3.tag, 'getPlayCount')
+				return func()
+
+		elif name == 'title':
+			title = self.mp3.fileName
+			try:
+				title = str(self.mut["title"][0])
+			except:
+				pass
+			return utils.unicodify(title)
+		else:
+			value = ''
+			try:
+				try:
+					value = self.mut[name][0]
+				except:
+					value = self.mut[name]
+					pass
+
+			except:
+				value = ''
+				pass
+
+			if type(value) == tuple:
+				value = value[0]
+
+			value = utils.unicodify(str(value))
+
+			return value
+



More information about the Syncropated-commits mailing list