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