Advertisement
Guest User

ripdog

a guest
Dec 11th, 2009
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.47 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3.  
  4. import sys
  5. import os
  6. import unicodedata
  7. try:
  8.     from mutagen.easyid3 import EasyID3
  9. except ImportError:
  10.     sys.path.append('/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/')
  11.     from mutagen.easyid3 import EasyID3
  12.  
  13. searchPath = u'/Users/ripdog/Music/Local Music Lib/iTunes Media'
  14. allowedTypes = ['mp3', 'ogg', 'flac']
  15.  
  16. class song(object):
  17.     '''Class that reads and contains metadata about a media file.'''
  18.     def __init__(self, location):
  19.         self.file = EasyID3(location)
  20.         self.ID = MakeID()
  21.         self.location = location
  22.         try:
  23.             self.name = self.file['title'][0]
  24.         except KeyError:
  25.             self.name = None
  26.         try:
  27.             self.album = self.file['album'][0]
  28.         except KeyError:
  29.             self.album = None
  30.         try:
  31.             self.artist = self.file['artist'][0]
  32.         except KeyError:
  33.             self.artist = None
  34.         try:
  35.             self.year = self.file['date'][0]
  36.         except KeyError:
  37.             self.year = None
  38.         try:
  39.             self.genre = self.file['genre'][0]
  40.         except KeyError:
  41.             self.genre = None
  42.         try:
  43.             self.track = self.file['tracknumber'][0]
  44.         except KeyError:
  45.             self.track = None
  46.     def __str__(self):
  47.         return 'Track number: ' + self.track + '\nTrack name: ' + self.name + '\nTrack artist: ' + self.artist + '\nTrack genre: yio ' + self.genre
  48.  
  49. class library(object):
  50.     """A class that maintains a list of all songs."""
  51.     def __init__(self):
  52.         self.library = []
  53.     def __str__(self):
  54.         for item in self.library:
  55.         #   print item
  56.             print 'Track number:', item.track
  57.             print 'Track name: ', item.name
  58.             print 'Track artist: ', item.artist
  59.             print 'Track genre: ', item.genre
  60.         return ""
  61.     def addToLibrary(self, trackLocation):
  62.         self.library.append(song(trackLocation))
  63.         print "Item added! \n", self
  64.         #self.printNumber(3)
  65.         #print self.library
  66.     def printNumber(self, printNo='all'):
  67.         """Prints a specified number of entries, from beginning to end in current sort pattern. Defaults to a fuill print.
  68.         Don't print me! Will append None to the print, just run the function."""
  69.         if printNo == 'all':
  70.             printNo = len(self.library)
  71.             print printNo
  72.         iterator = 0
  73.         while iterator < printNo:
  74.             try:
  75.                 testy = self.library[iterator]
  76.                 print 'Track number:', self.library[iterator].track
  77.                 print 'Track name: ', self.library[iterator].name
  78.                 print 'Track artist: ', self.library[iterator].artist
  79.                 print 'Track genre: ', self.library[iterator].genre
  80.                 iterator += 1
  81.             except IndexError:
  82.                 iterator = printNo
  83.                 return "Premature stop."
  84.                 break
  85.             return
  86. class musicscanner(object):
  87.     def __init__(self):
  88.         self.currentDirectory = None
  89.     def startScan(self, startDirectory, libraryName):
  90.         os.chdir(startDirectory)
  91.         for root, directory, files in os.walk(startDirectory, topdown=True):
  92.             try:
  93.                 item = files.pop()
  94.                 print item.encode('utf-8')
  95.                 if item.split(".")[-1] in allowedTypes:
  96.                     print type(unicodedata.normalize('NFC', item))
  97.                     try:
  98.                         libraryName.addToLibrary(item)
  99.                     except UnicodeDecodeError, IOError:
  100.                         break
  101.             except IndexError:
  102.                 continue
  103.  
  104. #       if os.path.splitext(files)[iterator] in allowedTypes:
  105. #def unicode_me(
  106. #        obj, encoding='utf-8'):
  107. #       if isinstance(obj, basestring):
  108. #           if not isinstance(obj, unicode):
  109. #               obj = unicode(obj, encoding)
  110. #           return obj
  111.  
  112. def main():
  113.     newLib = library()
  114.     newScanner = musicscanner()
  115.     newScanner.startScan(startDirectory=searchPath, libraryName=newLib)
  116. def MakeID():
  117.     return 1
  118. if __name__ == '__main__':
  119.     main()
  120.  
  121.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement