SHOW:
|
|
- or go back to the newest paste.
| 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() |