Итак, скрипт второй. Kindle 3 wifi+3G - воистину гиковое устройство и не только потому, что в нем есть бесплатный интернет (что даёт уже не плохие возможности), но и потому, что amazon придумал и реализовал очень интересный сервис. При покупке книги вы регистрируетесь на amazon, за вашей книгой закрепляется электронная почта блабла@kindle.com, при посылке книг на которую они(книги) преобразуются в читабельный формат (в основном *.mobi). Отсюда можем сделать вывод, что слать на адрес мы можем не только книги, но и новости, анекдоты, цитаты, твиты и многое другое. Лично мне было бы очень удобно каждое утро просматривать хабраленту, смотреть погоду и читать баш и все это с одного тычка и в автобусе(а главное - бесплатно). Сказано-сделано, код прилагается :)
Для начала необходима привязка вашей основной почты(у меня на яндексе) с почтой на http://www.amazon.com/. Можете переслать пару-тройку файликов, чтобы проверить что все работает. Кстати, вся фишка сервиса от amazon в том, что книги должны быть именно прикреплены к электронному письму, а не быть текстом внутри него. Поэтому напишем простенький скриптик, который собирает информацию с хабра, башорга и сайта с погодой, запишем все это в файл и отошлем. PROFIT!
Все три сайта имеют RSS, поэтому не будем мудрить и воспользуемся данной услугой, тем более есть замечательная библиотека под Python - feedparser.
Функция для получения тайтла RSS -новости и самой новости.
def getRSS(nameURL, tittleRSS):
d=feedparser.parse(nameURL)
s=tittleRSS+"\n"
for e in d.entries:
s+=e.title.upper()+"\n\n"+e.description+"\n\n"
return s
Тупая функция парсинга bash.im, удаляем теги, которые присутсвуют внутри текста:
def parseBash(Bash):
tmp=''
answerstr=''
for i in Bash.split(' '):
flag=0
if '<br' in i:
tmp=i.replace('<br', '\n')
flag=1
if '/>' in i:
tmp=i.replace('/>', '')
flag=1
if '"' in i:
tmp=i.replace('"', '')
flag=1
if '/><br' in i:
tmp=i.replace('/><br', '')
flag=1
if flag==0: tmp=i
answerstr+=tmp+' '
return answerstr
Функция парсинга для хабра аналогична, только теги немного другие, поэтому приводить фрагмент не буду, исходник будет прикреплен позже.
Функция компановки файла и отправки с вашего основного ящика на ящик блабла@kindle.com:
def sendMessage(fromaddr, toaddrs, username, passwordmail):
import smtplib
import mimetypes
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
COMMASPACE = ', '
path = 'dailyInfo.txt'
msg = MIMEMultipart()
msg['Subject'] = str(datetime.datetime.now())
msg['From'] = fromaddr
msg['To'] = COMMASPACE.join (toaddrs)
msg.preamble = 'You will not see this in a MIME-aware mail reader.\n'
attach = MIMEApplication (open(path, 'rb').read())
attach.add_header ('Content-Disposition', 'attachment', filename=path)
msg.attach (attach)
server = smtplib.SMTP('smtp.yandex.ru:587')
server.starttls()
server.login(username,passwordmail)
server.sendmail(fromaddr, toaddrs, msg.as_string())
server.quit()
Ну и собственно код функции main():
nameURLNews='http://habrahabr.ru/rss/hubs/'
nameURLBash='http://bash.im/rss/'
nameURLWeather='http://rp5.ru/rss/6036/ru'
fromaddr="_____" # адрес основной почты
toaddrs="_____@kindle.com"#киндловской
username="____" #логин от основного ящика
passwordmail="_____"#пароль для основного ящика
weather=getRSS(nameURLWeather, '---------WEATHER--------')
habr=getRSS(nameURLNews, '---------NEWS--------')
bash=getRSS(nameURLBash, '---------BASH.IM--------\n')
outputInfo=weather+parseHabr(habr)+parseBash(bash)
f=codecs.open('dailyInfo.txt', 'w', encoding='utf-8')
f.write(outputInfo)
sendMessage(fromaddr, toaddrs, username, passwordmail)
Вот и все, осталось написать небольшого демона, который будет в определенное время делать рассылку и все.
Кстати, кто хочет присоединится к моей небольшой рассылке, вы можете указать мою электронную почту rapter2006@ya.ru в списке доступных адресов для вашего KIndle на сайте amazon, и к вам будут приходить новые новости. Удачи :)