Первый скриптик самый простой. Некоторые группы вконтакте или конкретные люди могут организовывать розыгрыши призов. Они выкладывают сообщение - вы должны быстренько среагировать на него и что-то получить :) Или же немного другая ситуация - вы очень ждете новых постов вашего друга, и вам бы очень хотелось, чтобы если что-то изменилось на его стене, вам пришло письмо на электронную почту.
Собственно скрипт этим и занимается, при изменении страницы друга(или группы) он отсылает, что она изменена, и шлет оповещение на почту. Как вы понимаете, потом это сообщение можно послать на мобильник или на другой электронный носитель, чем мы и займемся в следующий раз, а сейчас скрипт в студию:
Функция отправки сообщения.
def sendMessage(text, fromaddr, toaddrs, username, passwordmail):
if len(text) == 0:
print "Empty message"
return
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
msg = MIMEMultipart('alternative')
msg['Subject'] = "Vkontake_Frend"
msg['From'] = fromaddr
msg['To'] = toaddrs
mime_text = MIMEText(text, 'plain', 'utf-8')
msg.attach(mime_text)
server = smtplib.SMTP('smtp.yandex.ru:587')#ПОРТ ЯНДЕКСА
server.starttls()
server.login(username,passwordmail)
server.sendmail(fromaddr, toaddrs, msg.as_string())
server.quit()
Инициализация вконтакте (вы должны понимать, что при попытке получения страницы друга/группы без регистрации, получите лишь страницу привествия, что не радует). Используем библиотеку mechanize, которая замечательно работает с куками.
def initVK():
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.open('http://vk.com')
br.select_form(nr=0)
br.form['email'] = "___" #ваш е-mail
br.form['pass'] = "___"#ваш пароль
br.submit()
return br
Получение кода html-странички:
def getHTML(br, stranica):
br.open(stranica)
html = br.response().read()
return html
А теперь собственно сам быдло-код проверки новых сообщений:
tek=[]
pred=[]
j=0
kk=initVK()
while True:
a=getHTML(kk, '____')#сюда вносим адрес друга/группы
a=list(a.split('\n'))
for i in a:
if ('<div class="wall_text"><a class="author" href="/____">' in i) : #во href вносим имя пользователя вконтакте, href="/rapter"
tek.append(i)
if j==0:
pred=tek[:]
j=1
else:
if tek!=pred:
print "Были изменения!"
pred=tek[:]
sendMessage("Были изменения!", fromaddr, toaddrs, username, passwordmail)
else: print "Изменений не было!"
tek=[]
time.sleep(60)
К слову сказать, здесь используется smtp сервер яндекса, но никто не запрещает использовать вам любой другой - гуглите.
Вот собственно и все, удачных доработок :)
Собственно скрипт этим и занимается, при изменении страницы друга(или группы) он отсылает, что она изменена, и шлет оповещение на почту. Как вы понимаете, потом это сообщение можно послать на мобильник или на другой электронный носитель, чем мы и займемся в следующий раз, а сейчас скрипт в студию:
Функция отправки сообщения.
def sendMessage(text, fromaddr, toaddrs, username, passwordmail):
if len(text) == 0:
print "Empty message"
return
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
msg = MIMEMultipart('alternative')
msg['Subject'] = "Vkontake_Frend"
msg['From'] = fromaddr
msg['To'] = toaddrs
mime_text = MIMEText(text, 'plain', 'utf-8')
msg.attach(mime_text)
server = smtplib.SMTP('smtp.yandex.ru:587')#ПОРТ ЯНДЕКСА
server.starttls()
server.login(username,passwordmail)
server.sendmail(fromaddr, toaddrs, msg.as_string())
server.quit()
Инициализация вконтакте (вы должны понимать, что при попытке получения страницы друга/группы без регистрации, получите лишь страницу привествия, что не радует). Используем библиотеку mechanize, которая замечательно работает с куками.
def initVK():
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.open('http://vk.com')
br.select_form(nr=0)
br.form['email'] = "___" #ваш е-mail
br.form['pass'] = "___"#ваш пароль
br.submit()
return br
Получение кода html-странички:
def getHTML(br, stranica):
br.open(stranica)
html = br.response().read()
return html
А теперь собственно сам быдло-код проверки новых сообщений:
tek=[]
pred=[]
j=0
kk=initVK()
while True:
a=getHTML(kk, '____')#сюда вносим адрес друга/группы
a=list(a.split('\n'))
for i in a:
if ('<div class="wall_text"><a class="author" href="/____">' in i) : #во href вносим имя пользователя вконтакте, href="/rapter"
tek.append(i)
if j==0:
pred=tek[:]
j=1
else:
if tek!=pred:
print "Были изменения!"
pred=tek[:]
sendMessage("Были изменения!", fromaddr, toaddrs, username, passwordmail)
else: print "Изменений не было!"
tek=[]
time.sleep(60)
К слову сказать, здесь используется smtp сервер яндекса, но никто не запрещает использовать вам любой другой - гуглите.
Вот собственно и все, удачных доработок :)
Комментариев нет:
Отправить комментарий