def getMessage(self, tostate): fetch = a.fetch( "SELECT message FROM State WHERE (isWide=4 and fromState = %d and toState = %d);" % (self.state, (tostate))) if len(fetch) != 0: mess = fetch[0][0] return mess return None
def compare(seriesname): new = [] seriesnumber = a.fetch('Select num from Serials where sname = \'%s\'' % seriesname) if seriesnumber == None: return None seriesnumber = seriesnumber[0][0] for j in getDict(seriesnumber).keys(): fetch = a.fetch('Select %s from Serials where sname = \'%s\'' % (j.lower().replace(' ', ''), seriesname)) if fetch != None: print(fetch[0][0]) if fetch[0][0] < getDict(seriesnumber).get(j): print(fetch[0][0], type(fetch[0][0])) difference = getDict(seriesnumber).get(j) - fetch[0][0] updateNum(seriesname, j, seriesnumber) new.append([j, difference]) return new
def getState(self): res = a.fetch("SELECT state FROM Users WHERE uid = %d" % (self.user_id)) if len(res) == 0: self.createUser() return self.state state = res[0][0] self.state = state return state
def travelState(self, message, sid, series, translation): fetch = a.fetch( "SELECT toState FROM State WHERE (message = \"%s\" and fromState = %d);" % (message, self.state)) if len(fetch) == 0: return None, None tostate = fetch[0][0] Message = self.getMessage(tostate) if self.state == tostate == 1 and len( a.fetch('Select sid from Podpiski where uid = %d' % (self.user_id))) != 0: Message = "Сериалы, на которые Вы подписаны" tostate = 2 if self.state == 4 and tostate == 1 and message == "###translationname" and len( a.fetch( 'Select pid from Podpiski where (sid = %d and uid = %d and translation = \'%s\');' % (sid, self.user_id, translation))) != 0: tostate = 5 Message = "Вы уже подписаны на сериал %s в озвучке %s" % ( series, translation) if self.state == 7 and tostate == 4 and len( a.fetch( 'Select pid from Podpiski where (sid = %d and uid = %d);' % (sid, self.user_id))) == 0: tostate = 8 Message = "Выберите озвучку" print('3', Message, tostate) a.query("UPDATE Users Set state =%d where uid = %d;" % (tostate, self.user_id)) a.save() action = a.fetch( 'Select action from State where (fromState = %d and toState = %d and message = \"%s\")' % (self.state, tostate, message)) if len(action) != 0: action = action[0][0] self.state = tostate newstate = self.state return newstate, Message, action
def subscribe(): chat_id = request.json['message']['chat']['id'] mess = request.json['message']['text'] seriesid = bdserials.hashf(mess) lengthseries = len( a.fetch('SELECT sname from Serials where sid = %d;' % (seriesid))) print("main, mess:", mess, lengthseries, chat_id, "line 49") if lengthseries > 0: global lastserial lastserial = mess mess = '###seriesname' if mess == "Original" or mess == "Subs" or mess == "NewStudio" or mess == "LostFilm" or mess == "ColdFilm" or mess == "IdeaFilm" or mess == "LevshaFilm" or mess == "Baibako" or mess == "Fox" or mess == "": global lasttranslation lasttranslation = mess mess = '###translationname' st = StateTraveler(chat_id) curstate = st.getState() if curstate == 3 and mess.encode('utf-8') != "Назад": global newseries newseries = mess mess = '###anymessage' if curstate == 6 and mess.encode('utf-8') != "Назад": global newtranslation newtranslation = mess mess = '###anymessage' lastserial = lastserial.encode('utf-8') sid = bdserials.hashf(lastserial) lasttranslation = lasttranslation.encode('utf-8') print(mess, sid, lastserial, lasttranslation) res = st.handleMessage(mess, sid, lastserial, lasttranslation) if res != None: if res[0] == None: #no keyboard requests.get( 'https://api.telegram.org/bot%s/sendMessage?chat_id=%s&text=%s' % (token, chat_id, res[1])) elif res[1] != None: #text requests.get( 'https://api.telegram.org/bot%s/sendMessage?chat_id=%s&text=%s&reply_markup=%s' % (token, chat_id, res[1], res[0])) if res[2] != None: #action st.getFunction(res[2], lastserial, lasttranslation, newseries, newtranslation, token, res[0])
def getKeyboard(self, series): fetch = a.fetch( "Select message, isWide from State where (fromState = %d and (isWide = -2 or isWide = -3 or isWide = -4));" % (self.state)) buttonsArray = [] i = 0 while i < len(fetch): if fetch[i][1] == -2: buttonsArray = a.fetch( 'Select sname from Serials order by sname;') i += 1 elif fetch[i][1] == -4: buttonsArray = a.fetch( 'Select Serials.sname from Serials inner join Podpiski on Serials.sid = Podpiski.sid where Podpiski.uid = %d group by sname order by sname;' % (self.user_id)) i += 1 elif fetch[i][1] == -3: num = a.fetch("Select num from Serials where sname = \'%s\';" % series) print("num:", len(num), num) if num[0][0] != None: num = num[0][0] for j in req.getDict(str(num)).keys(): buttonsArray.append([j.encode('utf-8')]) buttonsArray.append(["Original"]) buttonsArray.sort() i += 1 fetch = a.fetch( "Select message from State where (fromState = %d and isWide = 1);" % (self.state)) i = 0 while i < len(fetch): buttonsArray.append([fetch[i][0]]) i += 1 fetch = a.fetch( "Select message from State where (fromState = %d and isWide = 0);" % (self.state)) i = 0 while i < len(fetch): if i + 1 != len(fetch): buttonsArray.append([fetch[i][0], fetch[i + 1][0]]) i += 2 else: buttonsArray.append([fetch[i][0]]) i += 1 return json.dumps({'keyboard': buttonsArray, 'resize_keyboard': True})
def notify(): # da1 = date(2017, 3, 25) da = datetime.today() da1 = datetime.date(da) da = int(datetime.toordinal(da1)) originalfeth = a.fetch( "Select Podpiski.uid, Episodes.sname, Episodes.ename, Episodes.eid from Episodes inner join Podpiski on Podpiski.sid = Episodes.sid where (Podpiski.translation = 'Original' and Episodes.date = %d);" % da) print(originalfeth) if originalfeth != None: token = '308210124:AAHkb6qVLTqo0pIKsn_IQTZqvYJ7wpzVJn0' for i in originalfeth: series = (i[1]).encode('utf-8') episode = (i[2]).encode('utf-8') translation = 'Original' eid = i[3] text = "Сегодня (%s) вы можете посмотреть серию \'%s\' сериала \'%s\' в озвучке \'%s\'" % ( da1, episode, series, translation) chat_id = i[0] requests.get( 'https://api.telegram.org/bot%s/sendMessage?chat_id=%s&text=%s' % (token, chat_id, text)) seriesnumber = a.fetch( 'Select num from Serials where sname = \'%s\'' % series) if seriesnumber != None: seriesnumber = seriesnumber[0][0] for elem in req.getDict(seriesnumber).keys(): summa = len(req.getDict(seriesnumber).keys()) a.query("UPDATE Episodes set %s = -1 where eid = %d;" % (elem.lower().replace(' ', ''), eid)) a.query( 'Update Episodes set original = 0 where eid = %d;' % eid) a.query('Update Episodes set summ = %d' % summa) a.save() comingseries = a.fetch( 'Select sname from Episodes where original = 0 group by sname') for i in comingseries: #series series = i[0].encode('utf-8') new = req.compare(series) print(new) for tr in new: #translations sid = bdserials.hashf(series) fetchepisodes = a.fetch( "Select ename, eid from Episodes where %s = -1 order by date limit %d;" % (tr[0], tr[1])) for st in fetchepisodes: a.query('Update Episodes set %s = 0 where eid = %d;' % (tr[0].lower().replace(' ', ''), st[1])) a.save() summ = a.fetch('Select summ from Episodes where eid = %d;' % st[1])[0][0] summ -= 1 if summ == 0: a.query("Delete from Episodes where eid = %d;" % st[1]) a.save() else: a.query("Update Episodes set summ = %d where eid = %d;" % (summ, st[1])) a.save() fetchusers = a.fetch( "Select uid from Podpiski where sid = %d and translation = \'%s\';" % (sid, tr[0])) for user in fetchusers: # users chat_id = user[0] episode = st[0].encode('utf-8') trans = tr[0].encode('utf-8') token = '308210124:AAHkb6qVLTqo0pIKsn_IQTZqvYJ7wpzVJn0' text = "Сегодня (%s) вы можете посмотреть серию \'%s\' сериала \'%s\' в озвучке \'%s\'" % ( da1, episode, series, trans) requests.get( 'https://api.telegram.org/bot%s/sendMessage?chat_id=%s&text=%s' % (token, chat_id, text))