编程猫帖子助手后端主程序 - v0.1.4.20230717
import\ hashlib\nimport\ json\nimport\ sqlite3\nimport\ time\n\nimport\ flask\nfrom\ flask_cors\ import\ CORS\n\napp\ =\ flask.Flask('CodemaoForumHelper')\napp.debug\ =\ True\ #\ TODO\nCORS(app, supports_credentials=True)\n\n\ndef\ create_table():\n conn\ =\ sqlite3.connect('data.db')\n cur\ =\ conn.cursor()\n cur.execute('''\n CREATE\ TABLE\ IF\ NOT\ EXISTS\ data\ (\n id\ INTEGER\ PRIMARY\ KEY\ AUTOINCREMENT,\n title\ VARCHAR(50),\n token\ VARCHAR(42),\n type\ INTEGER,\n time\ INTEGER,\n like\ INTEGER\ DEFAULT\ 0,\n comments\ TEXT\ DEFAULT\ '[]'\n )\n ''')\n conn.commit()\n cur.close()\n conn.close()\n\n\ndef\ get_forum_by_id(id_):\n conn\ =\ sqlite3.connect('data.db')\n cur\ =\ conn.cursor()\n cur.execute('SELECT\ *\ FROM\ data\ WHERE\ id\ =\ ?', (id_,))\n data\ =\ cur.fetchone()\n cur.close()\n conn.close()\n return\ data\ or\ None\n\n\ndef\ get_forum_by_token(token):\n conn\ =\ sqlite3.connect('data.db')\n cur\ =\ conn.cursor()\n cur.execute('SELECT\ *\ FROM\ data\ WHERE\ token\ =\ ?', (token,))\n data\ =\ cur.fetchone()\n cur.close()\n conn.close()\n return\ data\ or\ None\n\n\ndef\ new_forum(title, type_):\n conn\ =\ sqlite3.connect('data.db')\n cur\ =\ conn.cursor()\n token\ =\ hashlib.md5(title.encode()).hexdigest()\ +\ str(int(time.time()))\n cur.execute('INSERT\ INTO\ data\ (title, token, type, time)\ VALUES\ (?, ?, ?, ?)',\n (title, token, type_, time.time()))\n conn.commit()\n cur.close()\n conn.close()\n return\ token\n\n\nprint(new_forum('111', 1))\ndef\ update_forum(token, title, type_):\n conn\ =\ sqlite3.connect('data.db')\n cur\ =\ conn.cursor()\n cur.execute('UPDATE\ data\ SET\ (title, type, time)\ =\ (?, ?, ?)\ WHERE\ token\ =\ ?',\n (title, type_, time.time(), token))\n conn.commit()\n cur.close()\n conn.close()\n\n\ndef\ delete_forum(token):\n conn\ =\ sqlite3.connect('data.db')\n cur\ =\ conn.cursor()\n cur.execute('DELETE\ FROM\ data\ WHERE\ token\ =\ ?', (token,))\n conn.commit()\n cur.close()\n conn.close()\n\n\n@app.route('/forum/int:id_', methods=['GET'])\ndef\ forum_get(id_):\n with\ open('forum_read.html', encoding='utf-8')\ as\ file:\n return\ file.read()\n\n\n@app.route('/forum/data/int:id_', methods=['GET'])\ndef\ forum_data_get(id_):\n data\ =\ get_forum_by_id(id_)\n if\ data\ is\ None:\n return\ '帖子在数据库中不存在(error-F0001)'\n try:\n with\ open('/forums/'\ +\ data[2], encoding='utf-8')\ as\ file:\n return\ file.read()\n except\ FileNotFoundError:\n return\ '帖子存在,但是找不到帖子对应的内容(error-B0001)', 404\n\n\n@app.route('/forum/info/int:id_', methods=['GET'])\ndef\ forum_info_get(id_):\n data\ =\ get_forum_by_id(id_)\n if\ data\ is\ None:\n return\ '帖子在数据库中不存在(error-F0001)'\n return\ json.dumps(data)\n\n\n@app.route('/forum/create', methods=['POST'])\ndef\ create_forum():\n flask.request.form\ =\ json.loads(flask.request.data.decode())\n token\ =\ new_forum(flask.request.form['title'], flask.request.form['type'])\n with\ open('/forums/'\ +\ token, 'w')\ as\ file:\n file.write(flask.request.form['data'])\n return\ str(get_forum_by_token(token)[0])\ +\ ' '\ +\ token, 201\n\n\n@app.route('/forum/update/data', methods=['POST'])\ndef\ update_forum_data():\n flask.request.form\ =\ json.loads(flask.request.data.decode())\n data\ =\ get_forum_by_id(flask.request.form['id'])\n if\ data\ is\ None:\n return\ '帖子在数据库中不存在(error-F0001)', 404\n elif\ data[2]\ !=\ flask.request.form['token']:\n return\ '帖子的token错误(error-F0002)', 401\n if\ flask.request.form.get('data')\ is\ not\ None:\n with\ open('/forums/'\ +\ data[2], 'w')\ as\ file:\n file.write(flask.request.form['data'])\n update_forum(data[2], data[1], data[3])\n return\ '更改成功(success-0001)', 201\n\n\n@app.route('/forum/update/info', methods=['POST'])\ndef\ update_forum_info():\n flask.request.form\ =\ json.loads(flask.request.data.decode())\n data\ =\ get_forum_by_id(flask.request.form['id'])\n if\ data\ is\ None:\n return\ '帖子在数据库中不存在(error-F0001)', 404\n elif\ data[2]\ !=\ flask.request.form['token']:\n return\ '帖子的token错误(error-F0002)', 401\n update_forum(data[2], flask.request.form['title'], flask.request.form['type'])\n return\ '更改成功(success-0001)', 201\n\n\n@app.route('/forum/delete', methods=['POST'])\ndef\ delete_forum():\n flask.request.form\ =\ json.loads(flask.request.data.decode())\n data\ =\ get_forum_by_id(flask.request.form['id'])\n if\ data\ is\ None:\n return\ '帖子在数据库中不存在(error-F0001)', 404\n elif\ data[2]\ !=\ flask.request.form['token']:\n return\ '帖子的token错误(error-F0002)', 401\n delete_forum(data[2])\n return\ '删除成功(success-0002)', 201\n\n\ncreate_table()\n\napp.run()\ #\ TODO
原文地址: https://www.cveoy.top/t/topic/pX1g 著作权归作者所有。请勿转载和采集!