Exemple #1
0
	def getSongs(self):
		format = "%Y-%m-%d %H:%M:%S"
		for trackid,attributes in self.il['Tracks'].items():
			s = Song()
			s.name = attributes.get('Name')

			# Support classical music naming (Work+Movement Number+Movement Name) since iTunes 12.5
			s.work = attributes.get('Work')
			s.movement_number = attributes.get('Movement Number')
			s.movement_count = attributes.get('Movement Count')
			s.movement_name = attributes.get('Movement Name')

			s.track_id = int(attributes.get('Track ID'))
			s.artist = attributes.get('Artist')
			s.album_artist = attributes.get('Album Artist')
			s.composer = attributes.get('Composer')
			s.album = attributes.get('Album')
			s.genre = attributes.get('Genre')
			s.kind = attributes.get('Kind')
			if attributes.get('Size'):
				s.size = int(attributes.get('Size'))
			s.total_time = attributes.get('Total Time')
			s.track_number = attributes.get('Track Number')
			if attributes.get('Track Count'):
				s.track_count = int(attributes.get('Track Count'))
			if attributes.get('Disc Number'):
				s.disc_number = int(attributes.get('Disc Number'))
			if attributes.get('Disc Count'):
				s.disc_count = int(attributes.get('Disc Count'))
			if attributes.get('Year'):
				s.year = int(attributes.get('Year'))
			if attributes.get('Date Modified'):
				s.date_modified = time.strptime(str(attributes.get('Date Modified')),format)
			if attributes.get('Date Added'):
				s.date_added = time.strptime(str(attributes.get('Date Added')),format)
			if attributes.get('Bit Rate'):
				s.bit_rate = int(attributes.get('Bit Rate'))
			if attributes.get('Sample Rate'):
				s.sample_rate = int(attributes.get('Sample Rate'))
			s.comments = attributes.get("Comments")
			if attributes.get('Rating'):
				s.rating = int(attributes.get('Rating'))
			s.rating_computed = 'Rating Computed' in attributes
			if attributes.get('Play Count'):
				s.play_count = int(attributes.get('Play Count'))
			if attributes.get('Album Rating'):
				s.album_rating = attributes.get('Album Rating')
			if attributes.get('Album Rating Computed'):
				s.album_rating_computed = attributes.get('Album Rating Computed')
			if attributes.get('Persistent ID'):
				s.persistent_id = attributes.get('Persistent ID')
			if attributes.get('Location'):
				s.location_escaped = attributes.get('Location')
				s.location = s.location_escaped
				s.location = urlparse.unquote(urlparse.urlparse(attributes.get('Location')).path[1:])
				s.location = s.location.decode('utf-8') if PY2 else s.location # fixes bug #19
				if ( self.musicPathXML is not None and self.musicPathSystem is not None ):
					s.location = s.location.replace(self.musicPathXML,self.musicPathSystem)
			s.compilation = 'Compilation' in attributes
			if attributes.get('Play Date UTC'):
				s.lastplayed = time.strptime(str(attributes.get('Play Date UTC')),format)
			if attributes.get('Skip Count'):
				s.skip_count = int(attributes.get('Skip Count'))
			if attributes.get('Skip Date'):
				s.skip_date = time.strptime(str(attributes.get('Skip Date')),format)
			if attributes.get('Total Time'):
				s.length = int(attributes.get('Total Time'))
			if attributes.get('Track Type'):
				s.track_type = attributes.get('Track Type')
			if attributes.get('Podcast'):
				s.podcast = attributes.get('Podcast')
			if attributes.get('Movie'):
				s.movie = attributes.get('Movie')
			if attributes.get('Has Video'):
				s.has_video = attributes.get('Has Video')
			if attributes.get('Grouping'):
				s.grouping = attributes.get('Grouping')
			if self.filesOnly==True and attributes.get('Track Type') == 'File':
				if self.legacymode:
					self.songs.append(s)
				else:
					self.songs[int(trackid)] = s
			elif self.filesOnly==False:
				if self.legacymode:
					self.songs.append(s)
				else:
					self.songs[int(trackid)] = s