Files
F6--/张阳脚本/思源笔记脚本.ipynb
T
2026-01-30 11:28:35 +08:00

131 lines
10 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "code",
"id": "initial_id",
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2025-10-17T01:13:44.349056Z",
"start_time": "2025-10-17T01:13:42.874653Z"
}
},
"source": [
"import requests\n",
"import os\n",
"from datetime import datetime\n",
"\n",
"cookies = {\n",
" 'entry-token': '763a7df1bc9644f99150de4800c9480e',\n",
" 'siyuan': 'MTc2MDMyMDUxNXxEWDhFQVFMX2dBQUJFQUVRQUFCNF80QUFBUVp6ZEhKcGJtY01CZ0FFWkdGMFlRWnpkSEpwYm1jTVhBQmFleUpYYjNKcmMzQmhZMlZ6SWpwN0lpOXphWGwxWVc0dmQyOXlhM053WVdObEx5STZleUpCWTJObGMzTkJkWFJvUTI5a1pTSTZJbUZpWXpnNE9EZzRPRGc0SWl3aVEyRndkR05vWVNJNkluVm9kMjV4Y0cwaWZYMTl876pIcVgIzgSo4CfVXsKDiNc9S0jNWreut01gspgCQo8=',\n",
"}\n",
"\n",
"headers = {\n",
" 'Accept': '*/*',\n",
" 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
" 'Connection': 'keep-alive',\n",
" 'Content-Type': 'text/plain;charset=UTF-8',\n",
" 'Origin': 'https://docker-siyuan.fnos-nas187.fnos.net',\n",
" 'Referer': 'https://docker-siyuan.fnos-nas187.fnos.net/stage/build/desktop/?r=1hvycc2',\n",
" 'Sec-Fetch-Dest': 'empty',\n",
" 'Sec-Fetch-Mode': 'cors',\n",
" 'Sec-Fetch-Site': 'same-origin',\n",
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0',\n",
" 'sec-ch-ua': '\"Microsoft Edge\";v=\"141\", \"Not?A_Brand\";v=\"8\", \"Chromium\";v=\"141\"',\n",
" 'sec-ch-ua-mobile': '?0',\n",
" 'sec-ch-ua-platform': '\"Windows\"',\n",
"}\n",
"\n",
"data = '{}'\n",
"\n",
"response = requests.post(\n",
" 'https://docker-siyuan.fnos-nas187.fnos.net/api/export/exportData',\n",
" cookies=cookies,\n",
" headers=headers,\n",
" data=data,\n",
")\n",
"print(response.json())\n",
"download_url = \"https://docker-siyuan.fnos-nas187.fnos.net\"+response.json()[\"data\"][\"zip\"]\n",
"\n",
"download_file = requests.get(download_url)\n",
"save_path = \"D:/Idea Project/F6+宜搭+其它(1)/张阳脚本/文件输出/思源笔记\"\n",
"\n",
"def download_file(url, save_path):\n",
" \"\"\"\n",
" 从指定URL下载文件并保存到本地路径。\n",
"\n",
" :param url: 文件的下载链接\n",
" :param save_path: 本地保存路径(包含文件名)\n",
" \"\"\"\n",
" # try:\n",
" now_date = datetime.now().strftime(\"%Y%m%d%H%M\")\n",
" print(url)\n",
" # 发送GET请求,stream=True 表示流式下载,适合大文件\n",
" response = requests.get(url,headers = headers, cookies = cookies, stream=True)\n",
" # print(response.json())\n",
" response.raise_for_status() # 检查请求是否成功(状态码200\n",
"\n",
" # 确保保存目录存在\n",
" os.makedirs(os.path.dirname(save_path), exist_ok=True)\n",
"\n",
" # 以二进制写入模式打开文件\n",
" with open(save_path+now_date + \".zip\", 'wb') as file:\n",
" # 将响应内容写入文件\n",
" file.write(response.content)\n",
"\n",
" print(f\"文件下载成功!已保存至: {save_path+now_date + \".zip\"}\")\n",
" #\n",
" # except requests.exceptions.RequestException as e:\n",
" # print(f\"下载失败: {e}\")\n",
" # except IOError as e:\n",
" # print(f\"文件保存失败: {e}\")\n",
"\n",
"download_file(download_url, save_path)"
],
"outputs": [
{
"ename": "JSONDecodeError",
"evalue": "Expecting value: line 1 column 1 (char 0)",
"output_type": "error",
"traceback": [
"\u001B[31m---------------------------------------------------------------------------\u001B[39m",
"\u001B[31mJSONDecodeError\u001B[39m Traceback (most recent call last)",
"\u001B[36mFile \u001B[39m\u001B[32mD:\\ProgramTools\\anaconda3\\envs\\f6\\Lib\\site-packages\\requests\\models.py:976\u001B[39m, in \u001B[36mResponse.json\u001B[39m\u001B[34m(self, **kwargs)\u001B[39m\n\u001B[32m 975\u001B[39m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[32m--> \u001B[39m\u001B[32m976\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m complexjson.loads(\u001B[38;5;28mself\u001B[39m.text, **kwargs)\n\u001B[32m 977\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m JSONDecodeError \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[32m 978\u001B[39m \u001B[38;5;66;03m# Catch JSON-related errors and raise as requests.JSONDecodeError\u001B[39;00m\n\u001B[32m 979\u001B[39m \u001B[38;5;66;03m# This aliases json.JSONDecodeError and simplejson.JSONDecodeError\u001B[39;00m\n",
"\u001B[36mFile \u001B[39m\u001B[32mD:\\ProgramTools\\anaconda3\\envs\\f6\\Lib\\json\\__init__.py:346\u001B[39m, in \u001B[36mloads\u001B[39m\u001B[34m(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)\u001B[39m\n\u001B[32m 343\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m (\u001B[38;5;28mcls\u001B[39m \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;129;01mand\u001B[39;00m object_hook \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;129;01mand\u001B[39;00m\n\u001B[32m 344\u001B[39m parse_int \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;129;01mand\u001B[39;00m parse_float \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;129;01mand\u001B[39;00m\n\u001B[32m 345\u001B[39m parse_constant \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;129;01mand\u001B[39;00m object_pairs_hook \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;129;01mand\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m kw):\n\u001B[32m--> \u001B[39m\u001B[32m346\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m _default_decoder.decode(s)\n\u001B[32m 347\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mcls\u001B[39m \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n",
"\u001B[36mFile \u001B[39m\u001B[32mD:\\ProgramTools\\anaconda3\\envs\\f6\\Lib\\json\\decoder.py:345\u001B[39m, in \u001B[36mJSONDecoder.decode\u001B[39m\u001B[34m(self, s, _w)\u001B[39m\n\u001B[32m 341\u001B[39m \u001B[38;5;250m\u001B[39m\u001B[33;03m\"\"\"Return the Python representation of ``s`` (a ``str`` instance\u001B[39;00m\n\u001B[32m 342\u001B[39m \u001B[33;03mcontaining a JSON document).\u001B[39;00m\n\u001B[32m 343\u001B[39m \n\u001B[32m 344\u001B[39m \u001B[33;03m\"\"\"\u001B[39;00m\n\u001B[32m--> \u001B[39m\u001B[32m345\u001B[39m obj, end = \u001B[38;5;28mself\u001B[39m.raw_decode(s, idx=_w(s, \u001B[32m0\u001B[39m).end())\n\u001B[32m 346\u001B[39m end = _w(s, end).end()\n",
"\u001B[36mFile \u001B[39m\u001B[32mD:\\ProgramTools\\anaconda3\\envs\\f6\\Lib\\json\\decoder.py:363\u001B[39m, in \u001B[36mJSONDecoder.raw_decode\u001B[39m\u001B[34m(self, s, idx)\u001B[39m\n\u001B[32m 362\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m \u001B[38;5;167;01mStopIteration\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m err:\n\u001B[32m--> \u001B[39m\u001B[32m363\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m JSONDecodeError(\u001B[33m\"\u001B[39m\u001B[33mExpecting value\u001B[39m\u001B[33m\"\u001B[39m, s, err.value) \u001B[38;5;28;01mfrom\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[38;5;28;01mNone\u001B[39;00m\n\u001B[32m 364\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m obj, end\n",
"\u001B[31mJSONDecodeError\u001B[39m: Expecting value: line 1 column 1 (char 0)",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001B[31mJSONDecodeError\u001B[39m Traceback (most recent call last)",
"\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[1]\u001B[39m\u001B[32m, line 34\u001B[39m\n\u001B[32m 26\u001B[39m data = \u001B[33m'\u001B[39m\u001B[38;5;132;01m{}\u001B[39;00m\u001B[33m'\u001B[39m\n\u001B[32m 28\u001B[39m response = requests.post(\n\u001B[32m 29\u001B[39m \u001B[33m'\u001B[39m\u001B[33mhttps://docker-siyuan.fnos-nas187.fnos.net/api/export/exportData\u001B[39m\u001B[33m'\u001B[39m,\n\u001B[32m 30\u001B[39m cookies=cookies,\n\u001B[32m 31\u001B[39m headers=headers,\n\u001B[32m 32\u001B[39m data=data,\n\u001B[32m 33\u001B[39m )\n\u001B[32m---> \u001B[39m\u001B[32m34\u001B[39m \u001B[38;5;28mprint\u001B[39m(response.json())\n\u001B[32m 35\u001B[39m download_url = \u001B[33m\"\u001B[39m\u001B[33mhttps://docker-siyuan.fnos-nas187.fnos.net\u001B[39m\u001B[33m\"\u001B[39m+response.json()[\u001B[33m\"\u001B[39m\u001B[33mdata\u001B[39m\u001B[33m\"\u001B[39m][\u001B[33m\"\u001B[39m\u001B[33mzip\u001B[39m\u001B[33m\"\u001B[39m]\n\u001B[32m 37\u001B[39m download_file = requests.get(download_url)\n",
"\u001B[36mFile \u001B[39m\u001B[32mD:\\ProgramTools\\anaconda3\\envs\\f6\\Lib\\site-packages\\requests\\models.py:980\u001B[39m, in \u001B[36mResponse.json\u001B[39m\u001B[34m(self, **kwargs)\u001B[39m\n\u001B[32m 976\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m complexjson.loads(\u001B[38;5;28mself\u001B[39m.text, **kwargs)\n\u001B[32m 977\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m JSONDecodeError \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[32m 978\u001B[39m \u001B[38;5;66;03m# Catch JSON-related errors and raise as requests.JSONDecodeError\u001B[39;00m\n\u001B[32m 979\u001B[39m \u001B[38;5;66;03m# This aliases json.JSONDecodeError and simplejson.JSONDecodeError\u001B[39;00m\n\u001B[32m--> \u001B[39m\u001B[32m980\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m RequestsJSONDecodeError(e.msg, e.doc, e.pos)\n",
"\u001B[31mJSONDecodeError\u001B[39m: Expecting value: line 1 column 1 (char 0)"
]
}
],
"execution_count": 1
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}