Skip to content

Instantly share code, notes, and snippets.

@dusk66
Created November 9, 2012 16:24
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save dusk66/4046648 to your computer and use it in GitHub Desktop.
Save dusk66/4046648 to your computer and use it in GitHub Desktop.
vk
# -*- coding: utf-8 -*-
from grab import Grab
import re
import logging
logging.basicConfig(level=logging.DEBUG)
g = Grab()
class vkontakte(object):
def __init__(self, login, password):
self.login = login
self.password = password
self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0',
'Referer': 'http://m.vk.com/login',
'Cookie': 'remixlang=0; remixflash=11.4.402; remixdt=-3600; audio_vol=100; remixno_chrome_bar=1; remixmhideads=1'}
self.autdata = 'email=' + self.login + '&pass=' + self.password
self.numurl = {}
def authorize(self):
g.go('http://m.vk.com/login')
loginUrl = re.findall('http://m.vk.com&ip_h=(.*)&role=pda&utf8=1">', g.response.body)
g.setup(post = self.autdata)
g.setup(headers = self.headers)
g.go('https://login.vk.com/?act=login&_origin=http://m.vk.com&ip_h={0}&role=pda&utf8=1'.format(loginUrl[0]))
global myId
result = g.response.body
myId = re.findall(r'window.vk={"id":(.*),"', result)
if myId:
print 'You login as ' + myId[0]
else:
print 'Login - FAILED!'
def sendMessage(self, sendTo, sendWhat):
messdata = '_ajax=1&message=' + sendWhat
messheaders = {'X-Requested-With': 'XMLHttpRequest',
'Referer': 'http://m.vk.com/mail'}
g.setup(post = messdata)
g.setup(headers = messheaders)
g.go('http://m.vk.com/mail?act=send&to=' + str(sendTo) + '&from=dialog&hash=924ea8f989d227684b')
def friendSearch(self):
global friends
g.go('http://m.vk.com/friends')
friends = re.findall('<a href="/write(.*)">',g.response.body)
return friends
def allmessage(self,func):
for i in friends:
sendMessage(i,'test')
print 'message send to ' + i
def audio(self):
num = 0
for j in range(0,10000,50):
g.setup(post = '_ajax=1&offset=' + str(j))
g.go('http://m.vk.com/audio?id=' + myId[0])
f = re.findall(r'<span class="artist">(.*)</span>\n&ndash;\n<span class="title">(.*)</span>\n</div>\n<input type="hidden" value="(.*)">', g.response.body)
if f:
for (artist, song, url) in f:
num += 1
self.numurl[num] = [url, song]
print num, artist, ' - ', song, '\n'
else:
print 'End List Songs'
break
def download(self):
nsong = raw_input('Download song: ')#вводим номер песни
if nsong == '0':#если 0 качаем все
for k in range(1, len(self.numurl),1):
urlSong = self.numurl[k][1]
g.setup(timeout=99999)
g.go(urlSong)
with open (self.numurl[k][-1] + '.mp3', 'wb') as fg:
fg.write(g.response.body)
else:
nsong = int(nsong)
urlSong = self.numurl[nsong][1]
g.setup(timeout=99999)
g.go(urlSong)
with open (self.numurl[nsong][-1] + '.mp3', 'wb') as fg:
fg.write(g.response.body)
if __name__ == '__main__':
vk = vkontakte('stervo81@mail.ru','q0147258')
vk.authorize()
#vk.sendMessage(12997413,'qweqwe')
#vk.friendSearch()
#vk.allmessage(vk.sendMessage)
vk.audio()
vk.download()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment