Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/modules/wiki/database.py

135 lines
4.3 KiB
Python
Raw Normal View History

2021-02-01 15:13:11 +00:00
import os
import sqlite3
dbpath = os.path.abspath('./modules/wiki/save.db')
def initialize():
a = open(dbpath, 'w')
a.close()
conn = sqlite3.connect(dbpath)
c = conn.cursor()
c.execute('''CREATE TABLE start_wiki_link_group
(ID INT PRIMARY KEY NOT NULL,
LINK TEXT);''')
c.execute('''CREATE TABLE custom_interwiki_group
(ID INT PRIMARY KEY NOT NULL,
INTERWIKIS TEXT);''')
c.execute('''CREATE TABLE start_wiki_link_self
(ID INT PRIMARY KEY NOT NULL,
LINK TEXT);''')
c.execute('''CREATE TABLE custom_interwiki_self
(ID INT PRIMARY KEY NOT NULL,
INTERWIKIS TEXT);''')
c.close()
def add_start_wiki(table, id, value):
if not os.path.exists(dbpath):
initialize()
conn = sqlite3.connect(dbpath)
c = conn.cursor()
a = c.execute(f"SELECT * FROM {table} WHERE ID={id}").fetchone()
if a:
c.execute(f"UPDATE {table} SET LINK='{value}' WHERE ID='{id}'")
conn.commit()
return '成功设置起始Wiki'
else:
c.execute(f"INSERT INTO {table} (ID, Link) VALUES (?, ?)", (id, value))
conn.commit()
return '成功设置起始Wiki'
def get_start_wiki(table, id):
if not os.path.exists(dbpath):
initialize()
conn = sqlite3.connect(dbpath)
c = conn.cursor()
a = c.execute(f"SELECT * FROM {table} WHERE ID={id}").fetchone()
if a:
return a[1]
else:
return False
def config_custom_interwiki(do, table, id, iw, link=None):
if not os.path.exists(dbpath):
initialize()
conn = sqlite3.connect(dbpath)
c = conn.cursor()
a = c.execute(f"SELECT * FROM {table} WHERE ID={id}").fetchone()
if do == 'add':
if a:
split_iws = a[1].split('|')
iwlist = []
for iws in split_iws:
split_iw = iws.split('>')
iwlist.append(split_iw[0])
if iw in iwlist:
for iws in split_iws:
if iws.find(iw + '>') != -1:
split_iws.remove(iws)
split_iws.append(f'{iw}>{link}')
c.execute(
f"UPDATE {table} SET INTERWIKIS='{'|'.join(split_iws)}' WHERE ID='{id}'")
conn.commit()
return '成功更新自定义Interwiki'
else:
split_iws.append(f'{iw}>{link}')
c.execute(
f"UPDATE {table} SET INTERWIKIS='{'|'.join(split_iws)}' WHERE ID='{id}'")
conn.commit()
return '成功添加自定义Interwiki'
else:
c.execute(f"INSERT INTO {table} (ID, INTERWIKIS) VALUES (?, ?)", (id, f'{iw}>{link}'))
conn.commit()
return '成功添加自定义Interwiki'
elif do == 'del':
if a:
split_iws = a[1].split('|')
iwlist = []
for iws in split_iws:
split_iw = iws.split('>')
iwlist.append(split_iw[0])
if iw in iwlist:
for iws in split_iws:
if iws.find(iw + '>') != -1:
split_iws.remove(iws)
c.execute(
f"UPDATE {table} SET INTERWIKIS='{'|'.join(split_iws)}' WHERE ID='{id}'")
conn.commit()
return '成功删除自定义Interwiki'
else:
return '失败添加过此Interwiki'
else:
return '失败未添加过任何Interwiki。'
def get_custom_interwiki(table, id, iw):
if not os.path.exists(dbpath):
initialize()
conn = sqlite3.connect(dbpath)
c = conn.cursor()
a = c.execute(f"SELECT * FROM {table} WHERE ID={id}").fetchone()
if a:
interwikis = a[1].split('|')
for iws in interwikis:
if iws.find(iw + '>') != -1:
iws = iws.split('>')
return iws[1]
else:
return False
2021-02-14 16:34:04 +00:00
def get_custom_interwiki_list(table, id):
if not os.path.exists(dbpath):
initialize()
conn = sqlite3.connect(dbpath)
c = conn.cursor()
a = c.execute(f"SELECT * FROM {table} WHERE ID={id}").fetchone()
if a:
interwikis = a[1].split('|')
return '\n'.join(interwikis)
else:
2021-02-19 12:18:47 +00:00
return False