Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Panic0 en 19 Febrero 2022, 18:49 pm



Título: [PYTHON PYGAME MIXER] Como puedo reproducir una serie de canciones en bucle?
Publicado por: Panic0 en 19 Febrero 2022, 18:49 pm
Hola a todos, como estan?

Estoy haciendo un reproducor en python3, y tengo un pequeño problema.

La cosa es que quiero reproducir una serie de canciones las cuales estan en una lista, ya saben, hice lo que cualquiera haria, poner un for y dentro de ese for que vaya tomando el string y vaya reproduciendo todo... Pero no funciona

Les dejo el codigo :)
Código:
#Librerias 
#pygame
#mutagen
#tinytag

from pygame import mixer
from mutagen.mp3 import MP3
from tinytag import TinyTag
import os
import time


clear = lambda :(os.system("clear"))


songs = ["path_song","path_song2"]

mixer.init()


for song in songs:

    tag = TinyTag.get(song)

    mixer.music.load(song)

    mixer.music.set_volume(0.2)
    mixer.music.play()

    song_duration = MP3(song)
    song_duration = song_duration.info.length
    song_duration = round(song_duration)


def duration_time(song_duration):
    end_minute       = 0
    end_beginning    = 0
    end_aux_duration = 0
    while True:
        if end_aux_duration == song_duration:
            break
        else:
            end_beginning = end_beginning + 1
            end_aux_duration = end_aux_duration + 1
            if end_beginning == 60:
                end_minute = end_minute + 1
                end_beginning = end_beginning - 60
    end_aux_duration =  str(end_minute),":",str(end_beginning).zfill(2)
    end_duration = "".join(end_aux_duration)


    minute       = 0
    beginning    = 0
    aux_duration = 0
    while True:
        if aux_duration == song_duration:
            break
        else:
            beginning = beginning + 1
            aux_duration = aux_duration + 1
            time.sleep(1)
            clear()
            if beginning == 60:
                minute = minute + 1
                beginning = beginning - 60

        print(f"{minute}:",f"{beginning}".zfill(2), " ------ O ------ ",end_duration)




duration_time(song_duration)
    



Gracias!!!


Título: Re: [PYTHON PYGAME MIXER] Como puedo reproducir una serie de canciones en bucle?
Publicado por: .xAk. en 20 Febrero 2022, 04:32 am
Código:
pygame.mixer.music.play(-1)
un entero positivo indicaría repetir n número de veces.

la lista la puedes cargar pygame.mixer.music.load inicio y pygame.mixer.music.queue añadir y que todo forme parte de un solo conjunto.

mira, cargarlo así quiero decir: fuente (https://riptutorial.com/pygame/example/24564/example-to-add-music-playlist-in-pygame)

Código
  1. import pygame
  2. import time
  3.  
  4. pygame.mixer.init()
  5. pygame.display.init()
  6.  
  7. screen = pygame.display.set_mode ( ( 420 , 240 ) )
  8.  
  9. playlist = list()
  10. playlist.append ( "music3.mp3" )
  11. playlist.append ( "music2.mp3" )
  12. playlist.append ( "music1.mp3" )
  13.  
  14. pygame.mixer.music.load ( playlist.pop() )  # Get the first track from the playlist
  15. pygame.mixer.music.queue ( playlist.pop() ) # Queue the 2nd song
  16. pygame.mixer.music.set_endevent ( pygame.USEREVENT )    # Setup the end track event
  17. pygame.mixer.music.play()           # Play the music
  18.  
  19. running = True
  20. while running:
  21.   for event in pygame.event.get():
  22.      if event.type == pygame.USEREVENT:    # A track has ended
  23.         if len ( playlist ) > 0:       # If there are more tracks in the queue...
  24.            pygame.mixer.music.queue ( playlist.pop() ) # Q

eso del -1 y positivos ... no se cómo funcionaría en lista. Es imaginación que piense eso con lista. He leido por ahí que con un load puedes cargar directamente una lista. Pero no puedo afirmar o si he leido cuentos urbanos.

si me quieres hacer caso, céntrate en un solo pygame.mixer.music.play() sólo soy aficionado

SaludOS