Exemple #1
0
 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
Exemple #2
0
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
Exemple #3
0
 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
Exemple #4
0
 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
Exemple #5
0
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])
Exemple #6
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})
Exemple #7
0
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))