Advertisement
Guest User

Untitled

a guest
Jun 9th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.18 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf8 -*-
  3.  
  4. import pickle
  5. import os
  6. import twitter
  7. import sys
  8. import gdata
  9. import gdata.calendar.service
  10. import gdata.service
  11. import atom
  12. import time
  13.  
  14. class twiTOs:
  15.   home = os.path.expanduser('~')
  16.   prog_conf = os.path.join(home, '.twiTOs', 'twiTOs.dat')
  17.   api = twitter.Api(username='TWITTER_LOGIN', password='TWITTER_PASS')
  18.   email = 'GMAIL_LOGIN'
  19.   password = 'GMAIL_PASS'
  20.  
  21.   def load_data(self, spisok):
  22. # проверяем существование пути и файла с последним сообщением,
  23. # если что то не так - создаём новый
  24.     if os.path.exists(os.path.join(self.home, '.twiTOs')) == True:
  25.       try:
  26.         fd = open(self.prog_conf, 'rb')
  27.         last_message = pickle.load(fd)
  28.         fd.close()
  29.       except:
  30.         fd = open(self.prog_conf, 'wb')
  31.         last_message = spisok[0]
  32.         pickle.dump(last_message, fd)
  33.         fd.close()
  34.     else:
  35.       os.mkdir(os.path.join(self.home, '.twiTOs'))
  36.       print "creating dir"
  37.       self.load_data(spisok)
  38.     self.compare(last_message, spisok)    
  39.  
  40.   def compare(self, last_message, spisok):
  41. # Монструозная конструкция по сравнению последнего сообщения имеющегося у нас
  42. # и последней пятёрки из твиттера
  43.     if last_message == spisok[0]:
  44. #   ничего не изменилось - ничего не делаем
  45.       delme = 3    
  46. #     тупая заглушка, чем заменить?
  47.     else:
  48.       for i in spisok:
  49.         if i == last_message:
  50. #       проверяем пятёрку сообщений на совпадение с имеющимся у нас, все сообщения до первого совпавшего смсим.
  51. #         print i
  52.           fd = open(self.prog_conf, 'wb')
  53.           last_message = spisok[0]
  54.           pickle.dump(last_message, fd)
  55.           fd.close()
  56.           break
  57.         else:
  58.           self.Cutter(self.email, self.password, i)
  59.       else:
  60.         fd = open(self.prog_conf, 'wb')
  61.         last_message = spisok[0]
  62.         pickle.dump(last_message, fd)
  63.         fd.close()
  64.  
  65.   def receive_message(self, n):
  66.     spisok = []
  67.     statuses = self.api.GetFriendsTimeline(count=n)
  68.     for s in statuses:
  69.       uuser = s.user
  70.       text = s.text
  71.       message = uuser.screen_name + '|' + text
  72.       spisok.append(message)
  73.     return spisok
  74.  
  75.   def Cutter (self, email, password, text):
  76. # Резалка смсок, гугл отправляет только 57 символов, твиттер позволяет набрать 140 + имя пользователя
  77. # в 160 должны уложиться, не уложились - обрезаем. Иначе задолбают входящие смс.
  78.     if len(text) > 57:
  79.       text1 = '1/3' + text[0:54]
  80.       text2 = '2/3' + text[54:108]
  81.       if len(text) > 164:
  82.         text3 = '3/3' + text[108:158] + 'BIGlen'
  83.       else:
  84.         text3 = '3/3' + text[108:164]
  85.       full_text = [text1, text2, text3]
  86.       for i in full_text:
  87.         if len(i) > 3:
  88.           self.SendSMS(email, password, i)
  89.     elif len(text) > 3:
  90.       self.SendSMS(email, password, text)
  91.  
  92.   def SendSMS(self, email, password, text):
  93. # Цельнотянутый код, криминала нет, описание у гугла в googleApi|calendar
  94.     cal_client = gdata.calendar.service.CalendarService()
  95.     cal_client.email = email
  96.     cal_client.password = password
  97.     cal_client.source = 'GCalendar notify'
  98.     cal_client.ProgrammaticLogin()
  99.     event = gdata.calendar.CalendarEventEntry()
  100.     event.title = atom.Title(text=text)
  101.     start_time = time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.time() + 30))
  102.     event.when.append(gdata.calendar.When(start_time=start_time))
  103.     reminder = gdata.calendar.Reminder(minutes='0')
  104.     reminder.method = 'sms'
  105.     event.when[0].reminder.append(reminder)
  106.     cal_client.InsertEvent(event, '/calendar/feeds/default/private/full')
  107.  
  108.  
  109. def main():
  110.   prog = twiTOs()
  111.   spisok = prog.receive_message(5)
  112.   prog.load_data(spisok)
  113.  
  114. if __name__ == "__main__":
  115.   main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement