Advertisement
Sax

PyPod 3.0 src

Sax
Nov 23rd, 2011
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.75 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. import random
  4.  
  5. class Track(object):
  6.     """ Representa un sólo elemento de música """
  7.  
  8.     def __init__(self, artist, title, length, genre):
  9.  
  10.         self.artist = artist
  11.         self.title = title
  12.         self.length = length
  13.         self.genre = genre
  14.         self.album = None
  15.  
  16.     def __str__(self):
  17.         return "%s - %s || %d || %s" % (self.title, self.artist, self.length, self.genre)
  18.  
  19.  
  20. class Album(object):
  21.     """ Representa un CD con varias canciones """
  22.  
  23.     def __init__(self, title, artist, genre, year):
  24.  
  25.         self.title = title
  26.         self.artist = artist
  27.         self.genre = genre
  28.         self.year = year
  29.         self.tracklist = []
  30.  
  31.     def addTrack(self, artist, title, length, genre=None):
  32.         """ Añade una canción al álbum y copia el género del mismo """
  33.  
  34.         actualGenre = self.genre if genre == None else genre
  35.         newTrack = Track(artist, title, length, actualGenre)
  36.         # Añade la canción al álbum mismo (self)
  37.         newTrack.album = self
  38.         self.tracklist.append(newTrack)
  39.  
  40.  
  41.     def __str__(self):
  42.         if len(self.tracklist) == 0:
  43.             return "CD vacío"
  44.         else:
  45.             return "%s - %s - %s" % (self.artist, self.title, self.genre)
  46.  
  47. class Ipod(object):
  48.     """ Representa el reproductor de música de Apple, iPod """
  49.  
  50.     def __init__(self):
  51.  
  52.         #La canción que se está reproduciendo
  53.         self.nowPlayingIndex = 0
  54.  
  55.         #La lista de canciones programadas para su reproducción
  56.         self.playback = []
  57.  
  58.         #Modo de reproducción por default
  59.         self.playMode = "default"
  60.  
  61. #Alta de elementos al Playback -----------------------------
  62.  
  63.     def addAlbumToPlayback(self, album):
  64.         """ Añade un álbum completo a la lista de reproducción """
  65.  
  66.         for i in album.tracklist:
  67.             self.playback.append(i)
  68.  
  69.     def addTrackToPlayback(self, track):
  70.         """ Añade una sola canción a la lista de reproducción """
  71.  
  72.         self.playback.append(track)
  73.  
  74.     def clearPlayback(self):
  75.         """ Borra la lista de reproducción """
  76.  
  77.         self.playback[:] = []
  78.         return "Se ha borrado la lista de reproducción"
  79.  
  80. #Controles de Reproducción ---------------------------------
  81.  
  82.     def prevTrack(self):
  83.         """ Reproduce la canción anterior en el Playback """
  84.  
  85.         proposedNewIndex = self.nowPlayingIndex - 1
  86.         if (proposedNewIndex > 0):
  87.             self.nowPlayingIndex = proposedNewIndex
  88.         elif self.playMode == "repeat":
  89.             self.nowPlayingIndex = len(self.playback)
  90.  
  91.     def nowPlaying(self):
  92.         """ Muestra la reproducción actual """
  93.  
  94.         return str(self.playback[self.nowPlayingIndex])
  95.  
  96.     def nextTrack(self):
  97.         """ Reproduce la siguiente canción en el Playback """
  98.  
  99.         proposedNewIndex = self.nowPlayingIndex + 1
  100.         if (proposedNewIndex < len(self.playback)):
  101.             self.nowPlayingIndex = proposedNewIndex
  102.         elif self.playMode == "repeat":
  103.             self.nowPlayingIndex = 0
  104.  
  105.     def shuffle(self):
  106.         """ Reordena la lista de reproducción de manera aleatoria"""
  107.  
  108.         random.shuffle(self.playback)
  109.  
  110.         return "Se ha reordenado de manera aleatoria el Playback"
  111.  
  112.     def changePlayMode(self):
  113.         """ Cambia el modo de reproducción del Playback """
  114.  
  115.         if self.playMode == "default":
  116.             self.playMode = "repeat"
  117.         else:
  118.             self.playMode = "default"
  119.  
  120.         return "Se ha cambiado el modo de reproduccion a " + self.playMode
  121.  
  122. #Creación del iPod -----------------------------------------
  123. ipod = Ipod()
  124.  
  125. #Creación de un álbum --------------------------------------
  126. album_therootofallevil = Album("The Root of all Evil", "Arch Enemy", "Melodic Death Metal", 2005)
  127.  
  128. #Se agregan las canciones al álbum "The Root of all Evil" --
  129. album_therootofallevil.addTrack("Arch Enemy", "The Root of All Evil", 200)
  130. album_therootofallevil.addTrack("Arch Enemy", "Beast of Man", 300)
  131. album_therootofallevil.addTrack("Arch Enemy", "The Immortal", 150)
  132. album_therootofallevil.addTrack("Arch Enemy", "Diva Satanica", 300)
  133. album_therootofallevil.addTrack("Arch Enemy", "Demonic Science", 450)
  134. album_therootofallevil.addTrack("Arch Enemy", "Bury me an Angel", 230)
  135. album_therootofallevil.addTrack("Arch Enemy", "Dead Inside", 280)
  136. album_therootofallevil.addTrack("Arch Enemy", "Dark Insanity", 300)
  137. album_therootofallevil.addTrack("Arch Enemy", "Pilgrim", 160)
  138. album_therootofallevil.addTrack("Arch Enemy", "Demoniality", 440)
  139. album_therootofallevil.addTrack("Arch Enemy", "Transmigration Macabre", 280)
  140. album_therootofallevil.addTrack("Arch Enemy", "Silverwing", 500)
  141. album_therootofallevil.addTrack("Arch Enemy", "Bridge of Destiny", 350)
  142.  
  143. #Agreguemos nomás por huevear
  144. track_snowbound = Track("Arch Enemy", "Snow Bound", 100, "Melodic Death Metal")
  145.  
  146. ipod.addAlbumToPlayback(album_therootofallevil)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement