1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| import requests import sqlite3 import time
beforeQuery = "https://message.bilibili.com/api/tooltip/query.list.do"
summonDataUrl = "https://activity.biligame.com/board/list"
game_id = 112
game_key = "a5f36e53ab3b0c41"
rows = 31
payload = { 'game_id': game_id, 'game_key': game_key, 'rows': rows }
class SummonData: def __init__(self, id, sname, rname, info, star): self._id = id self._sname = sname self._rname = rname self._info = info self._star = star
def insert(self, cursor): if cursor: cursor.execute('select * from SUMMON where id=?', (self._id,)) query_result_counter = len(cursor.fetchall()) if query_result_counter == 0: cursor.execute( """insert into SUMMON (id, sname, rname, info, star) values ({},"{}","{}","{}","{}")""".format( self._id, self._sname, self._rname, self._info, self._star)) print('Insert Done! {}, {}, {}, {}, {}'.format(self._id, self._sname, self._rname, self._info, self._star)) else: print("重复记录")
def getDataFromNetWork(): b = requests.get(beforeQuery) if b.json()['code'] == 0: r = requests.get(params=payload, url=summonDataUrl) return r.json() return {'code': 0, 'data': []}
def createTable(): conn = sqlite3.connect('fgo.db') cursor = conn.cursor() print('Start Create Table') cursor.execute('''CREATE TABLE SUMMON (ID INT NOT NULL, SNAME CHAR(16) NOT NULL, RNAME CHAR(16) NOT NULL, INFO CHAR(16), STAR CHAR(8));''') conn.commit() conn.close()
if __name__ == '__main__': conn = sqlite3.connect('fgo.db') cursor = conn.cursor() request_counter = 1 request_interval = 30 while True: if request_interval == 30: content = getDataFromNetWork() if len(content['data']) > 0: for record in content['data']: summondata = SummonData(int(record['id']), record['sname'], record['rname'], record['info'], record['star']) summondata.insert(cursor) conn.commit() request_counter += 1 request_interval = 0 time.sleep(1) print("Next Request ETA: {}|Current Time: {}".format(30 - request_interval, time.asctime( time.localtime(time.time())))) request_interval += 1
|