示例#1
0
    def agregar_cancion(self, ruta_cancion):
        """ Agrega una Cancion a la cola a partir de su ruta. Devuelve True si se agrego
		correctamente, False en caso contrario. Esta accion puede deshacerse y rehacerse."""
        if (self.prim == None):
            #Usar tinytag y compleatar parametros
            self.prim = Cancion(ruta_cancion)
            self.prim.anterior = None
            self.actual = self.prim
            self.lista.append(["add", self.prim])
        else:
            actual = self.prim
            while actual.prox is not None:
                actual = actual.prox
            actual.prox = Cancion(ruta_cancion)
            actual.prox.atenrior = actual
            self.lista.append(["add", actual.prox])
示例#2
0
    def agregarLista(self, lista):
        'Recibe un archivo con una lista de canciones, crea objetos tipo cancion con los elementos y luego los añade al arbol'

        #Abre el archivo txt y procesa la informacion dentro de éste
        with open(lista, 'r') as f:
            for i in f:
                C_info = i.split('\t')
                C_info[-1] = C_info[-1].strip()
                info = []
                i = 0
                j = 0
                while i != len(C_info[0]):
                    if C_info[0][i] == ';' or i == len(C_info[0]) - 1:
                        if i == len(C_info[0]) - 1:
                            info.append(C_info[0][j:i + 1])
                            break
                        info.append(C_info[0][j:i])
                        j = i + 1
                    i += 1
                if '.mp3' or '.wav' in info[2]:
                    cancion = Cancion(info[0], info[1], info[2])
                    self.contenido.agregar(cancion)
                else:
                    print(
                        '\nAlguna de las canciones no tiene la extension requerida. Las canciones deben estar en formato mp3 o wav'
                    )
            f.closed
示例#3
0
 def iniciar(self):
     """
     Limpia la pantala y llama a la función
     cmdloop (definida en la clase Cmd) para
     inicializar el shell actual.
     """
     system('cls')
     cancion = Cancion()
     self.cmdloop()
示例#4
0
	def rehacer_modificacion(self):
		""" Rehace la ultima accion que se deshizo. Devuelve True si pudo rehacerse, False en caso 
		contrario."""
		if self.accion_deshecha.esta_vacia():
			return False
		if self.accion_deshecha.ver_tope()[0]=='add':
			self.cola_de_reproduccion.append(Cancion(self.accion_deshecha.ver_tope()[1]))
			self.ultimo=self.cola_de_reproduccion[-1]
			self.modificacion_cola.apilar(self.accion_deshecha.desapilar())
			return True
		self.cola_de_reproduccion.pop()
		self.ultimo=self.cola_de_reproduccion[-1]
		self.modificacion_cola.apilar(self.accion_deshecha.desapilar())
		return True
示例#5
0
    def agregar_cancion(self, ruta_cancion):
        """ Agrega una Cancion a la cola a partir de su ruta. Devuelve True si se agrego
		correctamente, False en caso contrario. Esta accion puede deshacerse y rehacerse."""
        if (os.path.isfile(ruta_cancion)):
            (nombreFichero, extension) = os.path.splitext(ruta_cancion)
            if (extension in EXTENSIONES_ACEPTADAS):
                if (self.prim == None):
                    #Usar tinytag y compleatar parametros
                    self.prim = Cancion(ruta_cancion)
                    self.prim.anterior = None
                    self.actual = self.prim
                    if (not self.deshecho_reecho):
                        self.lista_deshacer.append(["add", self.prim])
                    return True
                else:
                    actual = self.prim
                    while actual.prox is not None:
                        actual = actual.prox
                    actual.prox = Cancion(ruta_cancion)
                    actual.prox.atenrior = actual
                    if (not self.deshecho_reecho):
                        self.lista_deshacer.append(["add", actual.prox])
                    return True
        return False
示例#6
0
	def deshacer_modificacion(self):
		""" Deshace la ultima accion realizada. Devuelve True si pudo deshacerse, False en caso 
		contrario."""
		if len(self.cola_de_reproduccion)==1 or self.modificacion_cola.esta_vacia():
			return False
		if self.modificacion_cola.ver_tope()[0]=='add':
				self.cola_de_reproduccion.pop()
				self.ultimo=self.cola_de_reproduccion[-1]
				self.accion_deshecha.apilar(self.modificacion_cola.desapilar())
				return True
		for posicion in range(len(self.cola_de_reproduccion)):
			if self.cola_de_reproduccion[posicion].obtener_ruta()==self.modificacion_cola.ver_tope()[1]:
				self.cola_de_reproduccion.append(Cancion(self.modificacion_cola.ver_tope()[1]))
				self.ultimo=self.cola_de_reproduccion[-1]
				self.accion_deshecha.apilar(self.modificacion_cola.desapilar())
				return True
示例#7
0
	def agregar_cancion(self, ruta_cancion):
		""" Agrega una Cancion a la cola a partir de su ruta. Devuelve True si se agrego 
		correctamente, False en caso contrario. Esta accion puede deshacerse y rehacerse."""
		if not verificar_ruta(ruta_cancion):
			return False
		cancion=Cancion(ruta_cancion)
		if self.primero is None:
			self.cola_de_reproduccion.append(cancion)
			self.primero=self.cola_de_reproduccion[0]
			self.ultimo=self.cola_de_reproduccion[-1]
			self.pos_actual=0
			self.modificacion_cola.apilar(('add',ruta_cancion))
			return True
		self.cola_de_reproduccion.append(cancion)
		self.ultimo=self.cola_de_reproduccion[-1]
		self.modificacion_cola.apilar(('add',ruta_cancion))
		return True
    def do_PLAY(self, paramatros):
        """
        Permite ingresar la ruta a un archivo .plp y reproducirlo.
        """
        archivo_c = input("Ingrese ruta del archivo o nombre (si es local):")

        try:
            cancion = Cancion()
            cancion.fileToSong(archivo_c, CHR_TRACK)
            cancion.play()
        except IOError as ioerror:
            print(ioerror)
        except ValueError as valuerror:
            print(valuerror)
        except IndexError as indexerror:
            print(indexerror)
示例#9
0
 def __init__(self):
     self.count = 0
     self.nill = NodoLista(None, Cancion(None, None, None), None)
     self.nill.siguiente = self.nill
     self.nill.anterior = self.nill
     self.proxima = self.nill
示例#10
0
        q = self.numero_nodos // 2
        aux = self.proxima
        l, r = ListaReproduccion(), ListaReproduccion()
        self.dividirEnDos(l, r)
        l.merge_sort(tipo, depth + 1)
        r.merge_sort(tipo, depth + 1)
        self.merge(l, r, tipo)

    def ordenar_titulo(self):
        cancion = self.proxima.elemento
        self.merge_sort('titulo')
        self.proxima = self.proxima.siguiente

    def ordenar_artista(self):
        cancion = self.proxima.elemento
        self.merge_sort('artista')
        self.proxima = self.proxima.siguiente


if __name__ == '__main__':
    rep = ListaReproduccion()
    with open("canciones/canciones.txt", 'r') as f:
        lineas = f.readlines()
        n = len(lineas) - 1
        for i in range(n):
            linea = lineas[i + 1].split('\t')
            rep.agregar(
                Cancion(linea[1], linea[0], linea[2][0:len(linea[2]) - 1]))
    rep.ordenar_artista()
    print(rep)
示例#11
0
import cmd
import soundPlayer as pysounds

from os import system
from os import path
from lista_enlazada import *
from cancion import Cancion

cancion = Cancion()
CHR_TRACK = '#'
CHR_NO_TRACK = '.'


class ShellEdicion(cmd.Cmd):
    """
    Implementación particular de la clase cmd (incluída en Python 3.6), con
    especifcaciones en español particulares para el menu de edición de sonido
    del Editor PLP.

    Para ver la documentación completa de la clase cmd, buscar su código fuente
    en la carpeta Lib en el directorio de instalación de python.
    """

    intro = '\nEditor PLP - Modo Edición.\nIngrese help o ? para listar los comandos.\n'
    doc_header = "Comandos para el modo edición del Editor PLP (ingrese help <comando>):"
    misc_header = "Otros temas de ayuda:"
    undoc_header = "Comandos no documentados:"
    nohelp = "*** No hay información sobre %s"
    prompt = '{->} '
    ruler = '='
    comando_vacio = ''
示例#12
0
# def mostrar(s="Hello", n=2):
#     for i in range (0, n):
#         print(s)
#
# mostrar('Michael', 4)

from cancion import Cancion
from playlist import PlayList

l = PlayList()

while True:
    print('1 Agregar Cancion')
    print('2 Mostrar Cnaciones')
    print('0 Salir')
    op = input()

    if op == '1':
        cancion = Cancion()
        cancion.artista = input("Artista")
        cancion.album = input("Album")
        cancion.titulo = input("Titulo")
        cancion.duracion = int(input("Duaracion"))
        l.agregar(cancion)
    elif op == '2':
        l.mostrar()
        pass
    elif op == '0':
        break
示例#13
0
 def creaCancion(self,audiofile,path):
     """Crea objetos cancion en el que guarda los datos que saca
     de las etiquetas
     Parámetros
     audiofile : eyed3 object
         El objeto eyed3 del que leeremos las etiquetas necesarias.
     path : str
         El path en el que se encontró la canción.
     """
     cancion=Cancion()
     cancion.setArtista(audiofile.tag.artist)
     cancion.setTitulo(audiofile.tag.title)
     cancion.setGenero(str(audiofile.tag.genre))
     cancion.setTrack(audiofile.tag.track_num)
     cancion.setFecha(audiofile.tag.getBestDate())
     cancion.setAlbum(audiofile.tag.album)
     cancion.setPath(path)
     return cancion
示例#14
0
        archivo = sys.argv[1]
    except:
        print(
            "Recuerde ingresar el archivo como argumento del programa.\nEj: python3 cliente.py <archivo>"
        )
        sys.exit(1)
    rep = Reproductor()
    rep.show()
    sp.call('clear', shell=True)
    with open(archivo, 'r') as f:
        lineas = f.readlines()
        n = int(lineas[0][:len(lineas) - 1])
        lista_de_reproduccion = ArrayT(n)
        for i in range(n):
            linea = lineas[i + 1].split('\t')
            lista_de_reproduccion[i] = Cancion(linea[0], linea[1],
                                               linea[2][0:len(linea[2]) - 1])
            rep.sonarDespues(
                Cancion(linea[1], linea[0], linea[2][0:len(linea[2]) - 1]))

    conf = "\tPresione ***<ENTER> para cancelar la operacion"
    data = ArrayT(9)
    data[0] = "1-Listar canciones"
    data[1] = "2-Agregar para sonar justo despues de la cancion actual"
    data[2] = "3-Agregar para sonar justo antes de la cancion actual"
    data[3] = "4-Ordenar lista de reproduccion por artista"
    data[4] = "5-Ordenar lista de reproduccion por titulo"
    data[5] = "6-Eliminar cancion por titulo"
    data[6] = "7-Mostrar opciones"
    data[7] = "8-Salir"
    menu = "\n{:18}+{:-^61}+\n".format('\0', '-')
    menu += "                 | {0[0]:60}|\n                 | {0[1]:60}|\n                 \
示例#15
0
    rep = Reproductor()
    rep.show()
    sp.call('clear', shell=True)

    canciones = open("canciones.in", "r")
    n = int(canciones.readline())
    lista = ArrayT(n)
    can = canciones.readlines()

    for x in range(n):
        t = can[x].strip("\n")
        p = t.split("\t")
        lista[x] = p

    for x in lista:
        c = Cancion(x[1], x[0], x[2])
        rep.playlist.agregar(c)

    #############
    # Menu loop #
    #############

    while True:
        print("REPRODUCTOR DE KAUZE Y DAVID\n"
              "1.Listar canciones\n" +
              "2.Agregar para sonar justo después de la canción actual\n" +
              "3.Agregar para sonar justo antes de la canción actual\n" +
              "4.Ordenar lista de reproducción por artista\n" +
              "5.Ordenar lista de reproducción por titulo\n" +
              "6.Eliminar canción por titulo\n" + "7.Mostrar opciones\n" +
              "8.Salir")
示例#16
0
 def setAgregarCancion(self, titulo):
     C = Cancion()
     C.setTitulo(titulo)
     self.lista_canciones.append(C)