1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
# coding: utf-8
######################################################
# #
# ProstoScript для ProstoPleer'a =) #
# Code by IT.Tux.Droid <http://it-tux-droid.ru/> #
# #
######################################################
import pycurl, StringIO, re, os, progressbar
from optparse import OptionParser
data = StringIO.StringIO()
curl = pycurl.Curl()
curl.setopt(pycurl.WRITEFUNCTION, data.write)
parser = OptionParser()
parser.add_option('-m', '--mode', dest='mode', metavar='MODE', default='0',
help='select mode: 0 - create playlist, 1 - download songs, 2 - create playlist and download songs')
parser.add_option('-u', '--url', dest='url', metavar='URL',
help='url to playlist or radio: http://prostopleer.com/#/top/msk/nasheradio')
(options, args) = parser.parse_args()
def progress(download_t, download_d, upload_t, upload_d):
if (download_t != 0) and (download_d != download_t):
bar.update((int(download_d)*100)/int(download_t))
def error(text):
z = len(text.decode('utf-8'))
print ' ????????????????'+'?'*z
print ' ? '+text+' ?'
print ' ????????????????'+'?'*z
def download_mp3(folder, song, url):
global bar
print '? '+song
if not os.path.exists(folder):
os.makedirs(folder)
if not os.path.exists(folder+'/'+song+'.mp3'):
bar = progressbar.ProgressBar(maxval=100, widgets=<'? ?', progressbar.Bar(left='<', marker='=', right='>')>).start()
data.truncate(0)
curl.setopt(pycurl.URL, 'http://prostopleer.com/download/'+url)
curl.setopt(curl.PROGRESSFUNCTION, progress)
curl.setopt(curl.NOPROGRESS, 0)
try:
curl.perform()
except:
print '? ?<connection error="error">'
return False
bar.finish()
mp3 = open(folder+'/'+song+'.mp3', 'w')
mp3.write(data.getvalue())
mp3.close()
else:
print '? ?<you already="already" have="have" it="it">'
# Create .m3u playlist and/or download songs from your playlist.
# Example: "playlist('list346790Ntwn', 2)".
def playlist(p, m):
data.truncate(0)
curl.setopt(pycurl.URL,'http://prostopleer.com/'+p)
curl.setopt(curl.NOPROGRESS, 1)
try:
curl.perform()
except:
error('Connection error!')
return False
list_name = re.findall("class=\"results\"> <h2>(<^<>*)</h2>", data.getvalue())<0><20:-2>
musics = re.findall("file_id=\"(<^\">*)\" track_id=\"(<^\">*)\" singer=\"(<^\">*)\" song=\"(<^\">*)\" link", data.getvalue())
z = len(list_name.decode('utf-8'))
if m in <0, 2>:
m3u = open('playlist <'+list_name+'>.m3u', 'w')
for music in musics:
m3u.write('#EXTINF: 0, '+music<2>+' - '+music<3>+'\nhttp://prostopleer.com/download/'+music<0>+'\n')
m3u.close()
print ' ?????????????????????????????????????????????????????'+'?'*z+'?'
print ' ? Playlist from playlist ('+list_name+') was successfully created ?'
print ' ?????????????????????????????????????????????????????'+'?'*z+'?'
if m in <1, 2>:
print ' ?????????????????????????????????????????????????????'+'?'*z+'?'
print '?? Start download songs from your playlist ('+list_name+') ?'
print '??????????????????????????????????????????????????????'+'?'*z+'?'
for music in musics:
download_mp3('playlist <'+list_name+'>', music<2>+' - '+music<3>, music<0>)
print '??????????????????????????????????????????????????????'+'?'*z+'?'
print '?? Songs from playlist ('+list_name+') was successfully downloaded ?'
print ' ?????????????????????????????????????????????????????'+'?'*z+'?'
# Create .m3u playlist and/or download songs from radio.
# Example: "radio('top/msk/nasheradio', 2)".
def radio(r, f):
data.truncate(0)
curl.setopt(pycurl.URL,'http://prostopleer.com/'+r)
curl.setopt(curl.NOPROGRESS, 1)
try:
curl.perform()
except:
error('Connection error!')
return False
radio_name = re.findall("radio-name\">(<^<>*)</span>", data.getvalue())<0>
musics = re.findall("file_id=\"(<^\">*)\" singer=\"(<^\">*)\" song=\"(<^\">*)\" link", data.getvalue())
z = len(radio_name.decode('utf-8'))
if f in <0, 2>:
m3u = open('radio <'+radio_name+'>.m3u', 'w')
for music in musics:
m3u.write('#EXTINF: 0, '+music<1>+' - '+music<2>+'\nhttp://prostopleer.com/download/'+music<0>+'\n')
m3u.close()
print ' ?????????????????????????????????????????????????????'+'?'*z+'?'
print ' ? Playlist from radio ('+radio_name+') was successfully created ?'
print ' ?????????????????????????????????????????????????????'+'?'*z+'?'
if f in <1, 2>:
print ' ?????????????????????????????????????????????????????'+'?'*z+'?'
print '?? Start download songs from radio ('+radio_name+') ?'
print '??????????????????????????????????????????????????????'+'?'*z+'?'
for music in musics:
download_mp3('radio <'+radio_name+'>', music<1>+' - '+music<2>, music<0>)
print '??????????????????????????????????????????????????????'+'?'*z+'?'
print '?? Songs from radio ('+radio_name+') was successfully downloaded ?'
print ' ?????????????????????????????????????????????????????'+'?'*z+'?'
if options.mode in <'0', '1', '2'>:
if options.url != None:
u = re.findall('(list.*)', options.url)
if u:
playlist(u<0>, int(options.mode))
else:
u = re.findall('(top/.*)', options.url)
if u:
radio(u<0>, int(options.mode))
else:
error('Error URL!')
else:
error('Enter URL!')
else:
error('Error MODE!')
curl.close()
</you></connection>
|