131 lines
10 KiB
Plaintext
131 lines
10 KiB
Plaintext
{
|
||
"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
|
||
}
|