175 lines
7.3 KiB
Python
Executable File
175 lines
7.3 KiB
Python
Executable File
# -*- coding: utf-8 -*-
|
|
import sqlite3
|
|
from datetime import datetime, time, timedelta
|
|
|
|
def check_and_update(self):
|
|
""" At the Program start, i does look for the sql updates """
|
|
self.follows_db_c.execute("CREATE TABLE IF NOT EXISTS usernames (username varchar(300))")
|
|
self.follows_db_c.execute("CREATE TABLE IF NOT EXISTS medias (media_id varchar(300))")
|
|
table_info = self.follows_db_c.execute("pragma table_info(medias)")
|
|
table_column_status = [o for o in table_info if o[1] == "status"]
|
|
if not table_column_status:
|
|
self.follows_db_c.execute("ALTER TABLE medias ADD COLUMN status integer")
|
|
table_info = self.follows_db_c.execute("pragma table_info(medias)")
|
|
table_column_status = [o for o in table_info if o[1] == "datetime"]
|
|
if not table_column_status:
|
|
self.follows_db_c.execute("ALTER TABLE medias ADD COLUMN datetime TEXT")
|
|
table_info = self.follows_db_c.execute("pragma table_info(medias)")
|
|
table_column_status = [o for o in table_info if o[1] == "code"]
|
|
if not table_column_status:
|
|
self.follows_db_c.execute("ALTER TABLE medias ADD COLUMN code TEXT")
|
|
table_info = self.follows_db_c.execute("pragma table_info(usernames)")
|
|
table_column_status = [o for o in table_info if o[1] == "username_id"]
|
|
if not table_column_status:
|
|
qry = """
|
|
CREATE TABLE "usernames_new" ( `username_id` varchar ( 300 ), `username` TEXT );
|
|
INSERT INTO "usernames_new" (username) Select username from usernames;
|
|
DROP TABLE "usernames";
|
|
ALTER TABLE "usernames_new" RENAME TO "usernames";
|
|
"""
|
|
self.follows_db_c.executescript(qry)
|
|
table_info = self.follows_db_c.execute("pragma table_info(usernames)")
|
|
table_column_status = [o for o in table_info if o[1] == "unfollow_count"]
|
|
if not table_column_status:
|
|
self.follows_db_c.execute("ALTER TABLE usernames ADD COLUMN unfollow_count INTEGER DEFAULT 0")
|
|
table_info = self.follows_db_c.execute("pragma table_info(usernames)")
|
|
table_column_status = [o for o in table_info if o[1] == "last_followed_time"]
|
|
if not table_column_status:
|
|
self.follows_db_c.execute("ALTER TABLE usernames ADD COLUMN last_followed_time TEXT")
|
|
table_info = self.follows_db_c.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='settings';").fetchone()
|
|
if not table_info:
|
|
qry = """
|
|
CREATE TABLE "settings" ( `settings_name` TEXT, `settings_val` TEXT );
|
|
"""
|
|
self.follows_db_c.execute(qry)
|
|
#table_column_status = [o for o in table_info if o[1] == "last_followed_time"]
|
|
#if not table_column_status:
|
|
# self.follows_db_c.execute("ALTER TABLE usernames ADD COLUMN last_followed_time TEXT")
|
|
|
|
|
|
def check_already_liked(self, media_id):
|
|
""" controls if media already liked before """
|
|
if self.follows_db_c.execute("SELECT EXISTS(SELECT 1 FROM medias WHERE media_id='"+
|
|
media_id + "' LIMIT 1)").fetchone()[0] > 0:
|
|
return 1
|
|
return 0
|
|
|
|
def check_already_followed(self, user_id):
|
|
""" controls if user already followed before """
|
|
if self.follows_db_c.execute("SELECT EXISTS(SELECT 1 FROM usernames WHERE username_id='"+
|
|
user_id + "' LIMIT 1)").fetchone()[0] > 0:
|
|
return 1
|
|
return 0
|
|
|
|
def check_already_unfollowed(self, user_id):
|
|
""" controls if user was already unfollowed before """
|
|
if self.follows_db_c.execute("SELECT EXISTS(SELECT 1 FROM usernames WHERE username_id='"+
|
|
user_id + "' AND unfollow_count > 0 LIMIT 1)").fetchone()[0] > 0:
|
|
return 1
|
|
return 0
|
|
|
|
def insert_media(self, media_id, status):
|
|
""" insert media to medias """
|
|
now = datetime.now()
|
|
self.follows_db_c.execute("INSERT INTO medias (media_id, status, datetime) VALUES('"+
|
|
media_id +"','"+ status +"','"+ str(now) +"')")
|
|
|
|
def insert_username(self, user_id, username):
|
|
""" insert user_id to usernames """
|
|
now = datetime.now()
|
|
self.follows_db_c.execute("INSERT INTO usernames (username_id, username, last_followed_time) \
|
|
VALUES('"+user_id+"','"+username+"','"+ str(now) +"')")
|
|
|
|
def insert_unfollow_count(self, user_id=False, username=False):
|
|
""" track unfollow count for new futures """
|
|
if user_id:
|
|
qry = "UPDATE usernames \
|
|
SET unfollow_count = unfollow_count + 1 \
|
|
WHERE username_id ='"+user_id+"'"
|
|
self.follows_db_c.execute(qry)
|
|
elif username:
|
|
qry = "UPDATE usernames \
|
|
SET unfollow_count = unfollow_count + 1 \
|
|
WHERE username ='"+username+"'"
|
|
self.follows_db_c.execute(qry)
|
|
else:
|
|
return False
|
|
|
|
def get_usernames_first(self):
|
|
""" Gets first element of usernames table """
|
|
username = self.follows_db_c.execute("SELECT * FROM usernames LIMIT 1")
|
|
if username:
|
|
return username
|
|
else:
|
|
return False
|
|
|
|
def get_usernames(self):
|
|
""" Gets usernames table """
|
|
usernames = self.follows_db_c.execute("SELECT * FROM usernames")
|
|
if usernames:
|
|
return usernames
|
|
else:
|
|
return False
|
|
|
|
def get_username_random(self):
|
|
""" Gets random username """
|
|
username = self.follows_db_c.execute("SELECT * FROM usernames WHERE unfollow_count=0 ORDER BY RANDOM() LIMIT 1").fetchone()
|
|
if username:
|
|
return username
|
|
else:
|
|
return False
|
|
|
|
def get_username_to_unfollow_random(self):
|
|
""" Gets random username that is older than follow_time and has zero unfollow_count """
|
|
now_time = datetime.now()
|
|
cut_off_time = now_time - timedelta(seconds=self.follow_time)
|
|
username = self.follows_db_c.execute("SELECT * FROM usernames WHERE \
|
|
DATETIME(last_followed_time) < DATETIME('"+str(cut_off_time)+"') \
|
|
AND unfollow_count=0 ORDER BY RANDOM() LIMIT 1").fetchone()
|
|
if username:
|
|
return username
|
|
else:
|
|
username = self.follows_db_c.execute("SELECT * FROM usernames WHERE \
|
|
unfollow_count=0 ORDER BY RANDOM() LIMIT 1").fetchone()
|
|
if username:
|
|
return username
|
|
else:
|
|
return False
|
|
|
|
|
|
def get_username_row_count(self):
|
|
""" Gets the number of usernames in table """
|
|
count = self.follows_db_c.execute("select count(*) from usernames").fetchone()
|
|
if count:
|
|
return count[0]
|
|
else:
|
|
return False
|
|
|
|
|
|
def check_if_userid_exists(self, userid):
|
|
""" Checks if username exists """
|
|
#print("select count(*) from usernames WHERE username_id = " + userid)
|
|
count = self.follows_db_c.execute("select count(*) from usernames WHERE username_id = " + userid).fetchone()
|
|
if count:
|
|
if count[0] > 0:
|
|
return True
|
|
else:
|
|
return False
|
|
else:
|
|
return False
|
|
|
|
def check_and_insert_user_agent(self, user_agent):
|
|
""" Check user agent """
|
|
qry = "SELECT settings_val from settings where settings_name = 'USERAGENT'"
|
|
result_check = self.follows_db_c.execute(qry).fetchone()
|
|
if result_check:
|
|
result_get = result_check[0]
|
|
return result_get
|
|
else:
|
|
qry_insert = """
|
|
INSERT INTO settings (settings_name, settings_val)
|
|
VALUES ('USERAGENT', '%s')
|
|
""" % user_agent
|
|
self.follows_db_c.execute(qry_insert)
|
|
return check_and_insert_user_agent(self, user_agent)
|