Python y Windows Media Player (sin WMP!)

François Heredero - Top Music SA fheredero en topmusic.ch
Vie Mar 5 09:41:45 CET 2004


Pues a habido problema con la lista, envio otra vez mi mensage del 27 que
puede servir a alguien.
Saludos
François
------------------
Hola,

Vuelvo aqui sobre un tema que he empezado hace tiempo, por si puede servir a
alguien.

Tenia que hacer un jukebox MP3 con un viejo PC recuperado, bajo windows 98.
Para la gestion de la pantalla he utilizado pyGame, y para el MP3 winamp
controlado con python. Pero siempre he tenido problemas, porque winamp no
hera estable, y se paraba varias veces al dia.

Asi que por fin he utilisado bass (http://www.un4seen.com/), y (de momento)
todo va bien!

Aqui teneis un ejemplo minimo de control de bass, sin gestion de errores y
otras cosas... pero funciona.

Para esto, solo se necesita 'bass.dll' controlado mediante el modulo ctypes
(http://sourceforge.net/projects/ctypes/).

Si alguien quiere hacer un wrapper mas 'profesional', adelante :-)

François
------------------------------------------------------------------

# -*- coding: utf-8 -*-
from ctypes import *

class bass:
	def __init__(self):
		self.bass = windll.bass
		r = self.bass.BASS_Init(1, 44100, 0, 0, 0)
		if(not(r)):
			print "Init error",self.bass.BASS_ErrorGetCode()
			return None

	def __del__(self):
		self.bass.BASS_Free();

	def loadMP3(self, mp3):
		self.mp3 = self.bass.BASS_StreamCreateFile(0, mp3,0 , 0, 0)
		if(not(self.mp3)):
			print "Load error",self.bass.BASS_ErrorGetCode()
			return 0
		else:
			return 1

	def play(self):
		if(self.mp3):
			self.bass.BASS_StreamPlay(self.mp3,0,0)
			self.bass.BASS_Start()
			return 0
		else:
			print "Play error",self.bass.BASS_ErrorGetCode()
			return 1

	def playing(self):
		# Return : cuantos bytes quedan por tocar,
		# es decir 0 si toda la musica ha sido tocada !
		return self.bass.BASS_StreamGetFilePosition(self.mp3, 0)

	def version(self):
		v = "Bass Version %0.1f" % (self.bass.BASS_GetVersion())
		return v


if __name__ == "__main__":
	b = bass()
	if(b):
		print b.version()
		if(b.loadMP3("a.mp3")):
			if(b.play()):
				while b.playing():
					pass
		print "Final"




Más información sobre la lista de distribución Python-es