· 6 years ago · Jan 29, 2020, 02:24 PM
1# Bibliothèques standard
2import sqlite3
3import datetime
4
5def CreateTables(user):
6 # On crée data.db ou on l'ouvre juste si elle existe
7 connexion = sqlite3.connect('data.db')
8 c = connexion.cursor()
9 # On fait une table si elle n'existe pas
10 # On fait une table pour chaque compte
11 c.execute('''CREATE TABLE IF NOT EXISTS {tab}
12 (id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, compte text, date DATE);'''.format(tab=user.screen_name))
13 c.close()
14 connexion.commit()
15
16def UpdateTable(follower, user):
17 connexion = sqlite3.connect('data.db')
18 c = connexion.cursor()
19 # On regarde si on a déjà un follower avec cet id
20 c.execute('''SELECT * FROM {tab} WHERE compte = ?;'''.format(tab=user.screen_name), (str(follower),))
21 data = c.fetchall()
22 # Si cet id existe pas :
23 if len(data) == 0:
24 # On rentre la date du jour et le compte follow
25 c.execute('''INSERT INTO {tab}(compte,date) VALUES (:compte, :date);'''.format(tab=user.screen_name), (follower, datetime.datetime.now()))
26 c.close()
27 connexion.commit()
28 # Si cet id existe
29 else:
30 # On change la date
31 c.execute('''UPDATE {tab} SET date = ? WHERE compte = ?'''.format(tab=user.screen_name), (datetime.datetime.now(), str(follower),))
32 c.close()
33 connexion.commit()
34
35def Unfollow(user, api):
36 print("Vérification des comptes à unfollow.")
37 # On crée data.db ou on l'ouvre juste si elle existe
38 connexion = sqlite3.connect('data.db')
39 c = connexion.cursor()
40 # On selectionne toute la table
41 c.execute('''SELECT * FROM {tab};'''.format(tab=user.screen_name))
42 data = c.fetchall()
43 try :
44 for i in data:
45 date = datetime.datetime.strptime(i[2], "%Y-%m-%d %H:%M:%S.%f")
46 print("Valeur Date : " + date)
47 if date.month == 11:
48 newmonth = 1
49 date = date.replace(year=date.year + 1)
50 elif date.month == 12:
51 newmonth = 2
52 date = date.replace(year=date.year + 1)
53 else:
54 newmonth = date.month+2
55 # On ne veut pas une date plus grande que 28 pour fevrier au risque de generer une erreur.
56 if newmonth == 2 and date.day > 28:
57 date = date.replace(day=28)
58 date = date.replace(month=newmonth)
59 # Si la date actuel est plus grande aue la date de fin de follow alors :
60 if datetime.datetime.now() > date:
61 # On unfollow
62 api.destroy_friendship(i[1])
63 c.execute('''DELETE FROM {tab} WHERE compte = ?;'''.format(tab=user.screen_name), (str(i[1]),))
64 except Exception as e:
65 print(e)
66 c.close()
67 connexion.commit()