Скрипт массовой загрузки аудио из vkontakte.ru
Это мой первый скрипт на python, с которым впервые я познакомился 2 дня назад :)
Так что сильно не пинать, лучше посоветуйте, как сделать лучше!
Так что сильно не пинать, лучше посоветуйте, как сделать лучше!
# -*- coding: utf-8 -*- import sys,urllib2,urllib,re,time import progressbar print '\n\ MLAV ver 0x01 - (c) 2010 Gar|k\n\ http://c0dedgarik.blogspot.com/\n\n\ The mass loader of audio from vkontakte.ru\n\n' if len(sys.argv) != 2: print ' USAGE:\n %s group_name' % sys.argv[0] sys.exit(-1) def get_search_page(offset=0,q=sys.argv[1]): host = 'http://vkontakte.ru/gsearch.php?section=audio&q=%s&offset=%d' % (urllib.quote(q),offset) headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13', 'Host' : 'vkontakte.ru', 'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8', 'Connection' : 'close', 'Cookie' : --зайди в контакт и в адресе напечатай javascript:alert(document.cookie) вставь сюда этот текст--} time.sleep(1) conn = urllib2.Request(host, None, headers) return urllib2.urlopen(conn).read() def lol(math): if math.lastindex==1: return math.group(1).lstrip(' ') else: return math.group(0) data=get_search_page() s=re.findall('\xcd\xe0\xe9\xe4\xe5\xed. (.*) \xe0\xf3\xe4\xe8\xee\xe7\xe0\xef\xe8',data) count_zap=int(s[0].replace(' ','')) print '%d audio records on demand "%s" are found' % (count_zap,sys.argv[1]) li={} link_reg=re.compile('return operate\((\d+),(\d+),(\d+),[\x22\x27](.*)[\x22\x27],(\d+)\);') name_reg=re.compile('(.*).*(.*).*<\/div') for i in xrange(0,count_zap,100): print ' offset %d analysis...' % i data=get_search_page(offset=i) r=link_reg.findall(data) a=name_reg.findall(data) for x,y in map(None,r,a): title=re.sub('(.*)',lol,y[1]) # вырезаем всякие хрени if title not in li: # тут бы еще проверочку производить на регистр символов и искать совпадения в артисте y[0] # в общем языка я не знаю поэтому тут такая белебердятина... link='http://cs' + x[1] + '.vkontakte.ru/u' + x[2] + '/audio/' + x[3] + '.mp3' li[title]=(link,y[0]) print 'Start download' def loadProgress(bl, blsize, size): dldsize = min(bl*blsize, size) p = float(dldsize) / size bar.update(p) for title,(link,artist) in li.items(): bar = progressbar.ProgressBar(maxval=1.0, widgets=[ '%s - %s '%(artist,title), progressbar.Bar(left='[', marker='=', right=']'), progressbar.Percentage() ]).start() urllib.urlretrieve(link, '%s - %s.mp3'%(artist,title), loadProgress) bar.finish()
Комментарии
Отправить комментарий