Guest User

Untitled

a guest
Mar 13th, 2024
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.84 KB | None | 0 0
  1. from kivy.core.audio import SoundLoader
  2. from kivy.utils import platform
  3. from kivy.logger import Logger
  4. import time
  5.  
  6. class MusicPlayerAndroid(object):
  7.     def __init__(self):
  8.  
  9.         from jnius import autoclass
  10.         MediaPlayer = autoclass('android.media.MediaPlayer')
  11.         self.mplayer = MediaPlayer()
  12.  
  13.         self.secs = 0
  14.         self.actualsong = ''
  15.         self.length = 0
  16.         self.isplaying = False
  17.  
  18.     def __del__(self):
  19.         self.stop()
  20.         self.mplayer.release()
  21.         Logger.info('mplayer: deleted')
  22.  
  23.     def load(self, filename):
  24.         try:
  25.             self.actualsong = filename
  26.             self.secs = 0
  27.             self.mplayer.setDataSource(filename)        
  28.             self.mplayer.prepare()
  29.             self.length = self.mplayer.getDuration() / 1000
  30.             Logger.info('mplayer load: %s' %filename)
  31.             Logger.info ('type: %s' %type(filename) )
  32.             return True
  33.         except:
  34.             Logger.info('error in title: %s' % filename)
  35.             return False
  36.  
  37.     def unload(self):
  38.             self.mplayer.reset()
  39.  
  40.     def play(self):
  41.         self.mplayer.start()
  42.         self.isplaying = True
  43.         Logger.info('mplayer: play')
  44.  
  45.     def stop(self):
  46.         self.mplayer.stop()
  47.         self.secs=0
  48.         self.isplaying = False
  49.         Logger.info('mplayer: stop')
  50.  
  51.     def seek(self,timepos_secs):
  52.         self.mplayer.seekTo(timepos_secs * 1000)
  53.         Logger.info ('mplayer: seek %s' %int(timepos_secs))
  54.  
  55.  
  56. class MusicPlayerWindows(object):
  57.     def __init__(self):
  58.         self.secs = 0
  59.         self.actualsong = ''
  60.         self.length = 0
  61.         self.isplaying = False
  62.         self.sound = None
  63.  
  64.     def __del__(self):
  65.         if self.sound:
  66.             self.sound.unload()
  67.             Logger.info('mplayer: deleted')
  68.  
  69.     def load(self, filename):
  70.         self.__init__()
  71.         if type(filename) == unicode: filename = filename.encode('utf-8') #unicode does not work !
  72.         self.sound = SoundLoader.load(filename)    
  73.         if self.sound:
  74.             if self.sound.length != -1 :
  75.                 self.length = self.sound.length
  76.                 self.actualsong = filename
  77.                 Logger.info('mplayer: load %s' %filename)
  78.                 return True
  79.             else:
  80.                 Logger.info ('mplayer: songlength = -1 ...')
  81.         return False
  82.  
  83.     def unload(self):
  84.         if self.sound != None:
  85.             self.sound.unload()
  86.             self.__init__ # reset vars
  87.  
  88.     def play(self):
  89.         if self.sound:
  90.             self.sound.play()
  91.             self.isplaying = True
  92.             Logger.info('mplayer: play')
  93.  
  94.     def stop(self):
  95.         self.isplaying = False
  96.         self.secs=0
  97.         if self.sound:
  98.             self.sound.stop()
  99.             Logger.info('mplayer: stop')
  100.  
  101.     def seek(self, timepos_secs):
  102.         self.sound.seek(timepos_secs)
  103.         Logger.info('mplayer: seek %s' %int(timepos_secs))
  104.  
  105. def main():
  106.     songs = [
  107.         'f:\\_mp3_\\_testdir_\\file of ☠☢☣.mp3', #insert songs here
  108.         'f:\\_mp3_\\Patricks Mp3s\\electro\\Echotek - Freak Africa.mp3',
  109.         'f:\\_mp3_diverse_\\Testsuite\\flac\\01 - Jam & Spoon - Stella (Jam & Spoon Mix).flac',
  110.         'f:\\_mp3_\\P1\\1Start\\Hot Chip - boy from school.mp4'
  111.         ]
  112.  
  113.     Logger.info ('platform: %s' %platform)
  114.  
  115.     if platform == 'win':
  116.         mplayer = MusicPlayerWindows()
  117.     elif platform == 'android':
  118.         mplayer = MusicPlayerAndroid()
  119.     else:
  120.         exit()
  121.  
  122.     for s in songs:
  123.         if mplayer.load(s): # checking load, seek
  124.             mplayer.play()
  125.             time.sleep(2)
  126.             mplayer.seek(90)
  127.             time.sleep(2)
  128.             mplayer.stop()
  129.             mplayer.unload()
  130.  
  131.         else:
  132.             Logger.info ('cant load song: %s' %s)
  133.  
  134.  
  135. if __name__ == '__main__':
  136.     main()
Advertisement
Add Comment
Please, Sign In to add comment