View difference between Paste ID: aZvbJnms and n5GxQqPq
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()