当前位置: 首页 > news >正文

丽水市做网站的网站数据库模板下载

丽水市做网站的,网站数据库模板下载,建站系统的应用场景,深圳响应式网站价格文章目录 完整代码一、上传资源二、替换 MD 中的引用文件为在线链接参考 完整代码 完整代码由两个文件组成#xff0c;upload.py 和 main.py#xff0c;放在同一目录下运行 main.py 就好#xff01; # upload.py import requests class UploadPic: def __init__(self, c… 文章目录 完整代码一、上传资源二、替换 MD 中的引用文件为在线链接参考 完整代码 完整代码由两个文件组成upload.py 和 main.py放在同一目录下运行 main.py 就好 # upload.py import requests class UploadPic: def __init__(self, cookie): self.cookie cookie # 解析 self.file_path self.img_type # 两个请求体 self.upload_data {} self.csdn_data {} self.output_url def _get_file(self, file_path): with open(file_path, moderb) as f: binary_data f.read() return binary_data def _upload_request(self): headers { accept: */*, accept-language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6, content-type: application/json, cookie: self.cookie, origin: https://editor.csdn.net, priority: u1, i, referer: https://editor.csdn.net/, sec-ch-ua: Not/A)Brand;v8, Chromium;v126, Microsoft Edge;v126, sec-ch-ua-mobile: ?0, sec-ch-ua-platform: Windows, sec-fetch-dest: empty, sec-fetch-mode: cors, sec-fetch-site: same-site, user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0, } params { type: blog, rtype: markdown, x-image-template: , x-image-app: direct_blog, x-image-dir: direct, x-image-suffix: self.img_type, } url https://imgservice.csdn.net/direct/v1.0/image/upload response requests.get(url, paramsparams, headersheaders) try: self.upload_data response.json() except Exception as e: return e def _csdn_request(self): headers { Accept: application/json, text/javascript, */*; q0.01, Accept-Language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6, Connection: keep-alive, Origin: https://editor.csdn.net, Referer: https://editor.csdn.net/, Sec-Fetch-Dest: empty, Sec-Fetch-Mode: cors, Sec-Fetch-Site: cross-site, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0, sec-ch-ua: Not/A)Brand;v8, Chromium;v126, Microsoft Edge;v126, sec-ch-ua-mobile: ?0, sec-ch-ua-platform: Windows, } files { key: (None, self.upload_data[data][filePath]), policy: (None, self.upload_data[data][policy]), OSSAccessKeyId: (None, self.upload_data[data][accessId]), success_action_status: (None, 200), signature: (None, self.upload_data[data][signature]), callback: (None, self.upload_data[data][callbackUrl]), file: (fimage.{self.img_type}, self._get_file(self.file_path), fimage/{self.img_type}), } url https://csdn-img-blog.oss-cn-beijing.aliyuncs.com/ response requests.post(url, headersheaders, filesfiles) try: self.csdn_data response.json() self.output_url self.csdn_data[data][imageUrl] except Exception as e: return e def upload_image(self, file_path): self.file_path file_path self.img_type self.file_path.split(.)[-1] exception_1 self._upload_request() assert exception_1 is None, exception_1 exception_2 self._csdn_request() assert exception_2 is None, exception_2 return self.output_url if __name__ __main__: cookie # 输入你的cookie upload UploadPic(cookie) output_url upload.upload_image() #输入你需要上传的文件位置print(output_url)# main.py import os import re from pathlib import Path from rich.progress import track from upload import UploadPic class CSDNTransform: def __init__(self, upload:UploadPic, file_path, walk_pathC:/Users/Administrator/Documents/Obsidian Vault/): self.upload upload self.file_path file_path self.walk_path walk_path self.markdown_text self.image_lst [] self.posterior_image_lst [] self.image_2_url_dic {} def _get_markdown_text(self): with open(self.file_path, moder, encodingutf-8) as f: markdown_text f.read() self.markdown_text markdown_text def _process_markdown_text(self): image_lst re.findall(r(!\[\[.*]]), self.markdown_text) posterior_image_lst [item[3:-2] for item in image_lst] self.image_lst image_lst self.posterior_image_lst posterior_image_lst def _get_target_image_path(self, target_path): for root, floders, files in os.walk(self.walk_path): for file in files: if file target_path: return str(Path(root) / file) def _get_the_url_of_image(self, image_path): image_url self.upload.upload_image(image_path) return image_url def get_the_urls(self): self._get_markdown_text() self._process_markdown_text() not_exist_image_index [] for ix, (origin_image, target_path) in track(enumerate(zip(self.image_lst, self.posterior_image_lst))): image_path self._get_target_image_path(target_path) if image_path is not None: image_url self._get_the_url_of_image(image_path) self.image_2_url_dic[origin_image] image_url else: not_exist_image_index.append(ix) # 清楚掉需要删除的index num 0 for ix in not_exist_image_index: del self.image_lst[ix-num] del self.posterior_image_lst[ix-num] num 1 def _the_transform_data_from(self, image_url): data_form f\ndiv aligncenterimg src{image_url}/div\n return data_form def _save_markdown_text(self, output_filemarkdown_processed.txt): with open(output_file, modew, encodingutf-8) as f: f.write(self.markdown_text) def get_transform(self): self.get_the_urls() # Judge the length assert len(self.image_lst) len(self.image_2_url_dic), f上传成功{len(self.image_2_url_dic)}张图片,总共有{len(self.image_lst)}张图片 for origin_image, image_url in self.image_2_url_dic.items(): self.markdown_text self.markdown_text.replace(origin_image, self._the_transform_data_from(image_url)) self._save_markdown_text()if __name__ __main__: cookie # 输入你的cookiefile_path # 输入你要转换的markdown文件地址upload UploadPic(cookie) transform CSDNTransform(upload, file_path) markdown_text transform.get_transform()# 修改后的 Markdown 在当前目录的 markdown_processed.txt 文件中一、上传资源 首先我们解析 CSDN 上传请求这里随便上传一张图片观察请求 请求由三部分组成分别是1. 获取存储位置和签名验证信息2. 利用签名等验证信息上传文件3. 获取文件信息并显示 仔细观察两个请求upload 请求是 GET csdn 请求是 POST其结果很明显 csdn 请求是主体仔细观察 csdn 的参数可以所有参数都可以利用 upload 的返回结果得到 那么接下来我们开始构造 upload 请求 import requestsheaders {accept: */*,accept-language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6,content-type: application/json,cookie: , # 输入自己的cookiesorigin: https://editor.csdn.net,priority: u1, i,referer: https://editor.csdn.net/,sec-ch-ua: Not/A)Brand;v8, Chromium;v126, Microsoft Edge;v126,sec-ch-ua-mobile: ?0,sec-ch-ua-platform: Windows,sec-fetch-dest: empty,sec-fetch-mode: cors,sec-fetch-site: same-site,user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0, }params {type: blog,rtype: markdown,x-image-template: ,x-image-app: direct_blog,x-image-dir: direct,x-image-suffix: png, }url https://imgservice.csdn.net/direct/v1.0/image/upload response requests.get(url, paramsparams, headersheaders)# 获得数据 upload_data response.json()得到 json 内容如下通过比较该内容下 expire 和 time 库下的 time.time() * 1000再根据英文名可以推断expire 表示的是上传文件这一请求的失效时间即 csdn 请求的最晚成功时间 {code: 200,data: {accessId: LTAI5tK31AXMAqwzaX1wn4hH,callbackUrl: eyJjYWxsYmFja0JvZHlUeXBlIjoiYXBwbGljYXRpb24vanNvbiIsImNhbGxiYWNrVXJsIjoiaHR0cHM6Ly9pbWdzZXJ2aWNlLmNzZG4ubmV0L2RpcmVjdC92MS4wL2ltYWdlL2NhbGxiYWNrIiwiY2FsbGJhY2tCb2R5Ijoie1wiZmlsZVBhdGhcIjpcImRpcmVjdC9jN2VlYWNjZjU2ZDM0MzM3OWQ2Yjk4ZmYwNGYyZWFjNS5wbmdcIixcImlzQXVkaXRcIjoxLFwieC1pbWFnZS1hcHBcIjpcImRpcmVjdF9ibG9nXCIsXCJ0eXBlXCI6XCJibG9nXCIsXCJ1cmxNZDVcIjpcImM3ZWVhY2NmNTZkMzQzMzc5ZDZiOThmZjA0ZjJlYWM1XCIsXCJydHlwZVwiOlwibWFya2Rvd25cIixcImhvc3RuYW1lXCI6XCJodHRwczovL2ltZy1ibG9nLmNzZG5pbWcuY24vXCIsXCJzaXplXCI6XCIke3NpemV9XCIsXCJ4LWltYWdlLWRpclwiOlwiZGlyZWN0XCIsXCJ3aWR0aFwiOlwiJHtpbWFnZUluZm8ud2lkdGh9XCIsXCJ4LWltYWdlLXN1ZmZpeFwiOlwicG5nXCIsXCJ1c2VybmFtZVwiOlwibTBfNzI5NDczOTBcIixcImhlaWdodFwiOlwiJHtpbWFnZUluZm8uaGVpZ2h0fVwifSJ9,dir: direct,expire: 1718611892700,filePath: direct/c7eeaccf56d343379d6b98ff04f2eac5.png,host: https://csdn-img-blog.oss-cn-beijing.aliyuncs.com,policy: eyJleHBpcmF0aW9uIjoiMjAyNC0wNi0xN1QwODoxMTozMi43MDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA0ODU3NjAwXSxbInN0YXJ0cy13aXRoIiwiJGtleSIsImRpcmVjdC9jN2VlYWNjZjU2ZDM0MzM3OWQ2Yjk4ZmYwNGYyZWFjNS5wbmciXV19,signature: 2hRKp5YO3epBJe5Qt7Ngi7P/y4},message: None,msg: success}下面利用 upload 得到的请求来构造 csdn 请求 import requests from requests_toolbelt.multipart.encoder import MultipartEncoderdef get_file(file_path):获取文件的二进制数据with open(file_path, moderb) as f:binary_data f.read()return binary_dataheaders {Accept: application/json, text/javascript, */*; q0.01,Accept-Language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6,Connection: keep-alive,Origin: https://editor.csdn.net,Referer: https://editor.csdn.net/,Sec-Fetch-Dest: empty,Sec-Fetch-Mode: cors,Sec-Fetch-Site: cross-site,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0,sec-ch-ua: Not/A)Brand;v8, Chromium;v126, Microsoft Edge;v126,sec-ch-ua-mobile: ?0,sec-ch-ua-platform: Windows, }success_action_status 200# upload 请求中获取到的数据 key upload_data[data][filePath] policy upload_data[data][policy] OSSAccessKeyId upload_data[data][accessId] signature upload_data[data][signature] callback upload_data[data][callbackUrl]# 上传的图片位置 file get_file() # 输入需要上传文件的位置files {key: (None, key),policy: (None, policy),OSSAccessKeyId: (None, OSSAccessKeyId),success_action_status: (None, 200),signature: (None, signature),callback: (None, callback),file: (image.png, file, image/png), }url https://csdn-img-blog.oss-cn-beijing.aliyuncs.com/ response requests.post(url, headersheaders, filesfiles)print(response.text)得到 Json 数据如下 {code: 200,data: {hostname: https://img-blog.csdnimg.cn/,imageUrl: https://img-blog.csdnimg.cn/direct/97c5610606c140afb474800403140ea3.png,width: 1138,targetObjectKey: direct/97c5610606c140afb474800403140ea3.png,x-image-suffix: png,height: 239},msg: success}在其中 imageUrl 就表示上传的图片地址同时图片格式有许多种面对不同的图片格式在尝试观察后发现只需要修改 upload 请求中 parms 中的 x-image-suffixcsdn 请求中 files 中的 file 整合得到完整上传类如下 import requests class UploadPic: def __init__(self, cookie): self.cookie cookie # 解析 self.file_path self.img_type # 两个请求体 self.upload_data {} self.csdn_data {} self.output_url def _get_file(self, file_path): with open(file_path, moderb) as f: binary_data f.read() return binary_data def _upload_request(self): headers { accept: */*, accept-language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6, content-type: application/json, cookie: self.cookie, origin: https://editor.csdn.net, priority: u1, i, referer: https://editor.csdn.net/, sec-ch-ua: Not/A)Brand;v8, Chromium;v126, Microsoft Edge;v126, sec-ch-ua-mobile: ?0, sec-ch-ua-platform: Windows, sec-fetch-dest: empty, sec-fetch-mode: cors, sec-fetch-site: same-site, user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0, } params { type: blog, rtype: markdown, x-image-template: , x-image-app: direct_blog, x-image-dir: direct, x-image-suffix: self.img_type, } url https://imgservice.csdn.net/direct/v1.0/image/upload response requests.get(url, paramsparams, headersheaders) try: self.upload_data response.json() except Exception as e: return e def _csdn_request(self): headers { Accept: application/json, text/javascript, */*; q0.01, Accept-Language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6, Connection: keep-alive, Origin: https://editor.csdn.net, Referer: https://editor.csdn.net/, Sec-Fetch-Dest: empty, Sec-Fetch-Mode: cors, Sec-Fetch-Site: cross-site, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0, sec-ch-ua: Not/A)Brand;v8, Chromium;v126, Microsoft Edge;v126, sec-ch-ua-mobile: ?0, sec-ch-ua-platform: Windows, } files { key: (None, self.upload_data[data][filePath]), policy: (None, self.upload_data[data][policy]), OSSAccessKeyId: (None, self.upload_data[data][accessId]), success_action_status: (None, 200), signature: (None, self.upload_data[data][signature]), callback: (None, self.upload_data[data][callbackUrl]), file: (fimage.{self.img_type}, self._get_file(self.file_path), fimage/{self.img_type}), } url https://csdn-img-blog.oss-cn-beijing.aliyuncs.com/ response requests.post(url, headersheaders, filesfiles) try: self.csdn_data response.json() self.output_url self.csdn_data[data][imageUrl] except Exception as e: return e def upload_image(self, file_path): self.file_path file_path self.img_type self.file_path.split(.)[-1] exception_1 self._upload_request() assert exception_1 is None, exception_1 exception_2 self._csdn_request() assert exception_2 is None, exception_2 return self.output_url if __name__ __main__: cookie # 输入你的cookie upload UploadPic(cookie) output_url upload.upload_image() #输入你需要上传的文件位置print(output_url)二、替换 MD 中的引用文件为在线链接 首先肯定是整体替换而不是单个替换因此我们的流程为1. 上传所有文件直到所有的文件都上传成功2. 替换所有文件 首先提取出 Markdown 中所有的图片信息一般来说图片信息都在两个中括号之间 ![[ img_pic ]]使用 re 正则提取代码如下 import refile_path C:/Users/Administrator/Documents/Obsidian Vault/UE开发/My FirstGame Tutorial.mdwith open(file_path, moder, encodingutf-8) as f:markdown_text f.read()image_lst re.findall(r(!\[\[.*\]\]), markdown_text) posterior_image_lst [item[3:-2] for item in image_lst]提取出所有的 img_pic 后我们需要在根目录下寻找文件一般来说在 Markdown 中文件名是不重复的 import os from pathlib import Pathdef get_target_image_path(target_path):walk_path C:/Users/Administrator/Documents/Obsidian Vault/for root, floders, files in os.walk(walk_path):for file in files:if file target_path:return Path(root) / fileget_target_image_path(posterior_image_lst[0])获取到了绝对位置后我们可以将图片上传在检查图片全部都上传完毕后我们就可以替换 ![[ img_pic ]] import os import re import requests from pathlib import Path from rich.progress import track class UploadPic: def __init__(self, cookie): self.cookie cookie # 解析 self.file_path self.img_type # 两个请求体 self.upload_data {} self.csdn_data {} self.output_url def _get_file(self, file_path): with open(file_path, moderb) as f: binary_data f.read() return binary_data def _upload_request(self): headers { accept: */*, accept-language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6, content-type: application/json, cookie: self.cookie, origin: https://editor.csdn.net, priority: u1, i, referer: https://editor.csdn.net/, sec-ch-ua: Not/A)Brand;v8, Chromium;v126, Microsoft Edge;v126, sec-ch-ua-mobile: ?0, sec-ch-ua-platform: Windows, sec-fetch-dest: empty, sec-fetch-mode: cors, sec-fetch-site: same-site, user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0, } params { type: blog, rtype: markdown, x-image-template: , x-image-app: direct_blog, x-image-dir: direct, x-image-suffix: self.img_type, } url https://imgservice.csdn.net/direct/v1.0/image/upload response requests.get(url, paramsparams, headersheaders) try: self.upload_data response.json() except Exception as e: return e def _csdn_request(self): headers { Accept: application/json, text/javascript, */*; q0.01, Accept-Language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6, Connection: keep-alive, Origin: https://editor.csdn.net, Referer: https://editor.csdn.net/, Sec-Fetch-Dest: empty, Sec-Fetch-Mode: cors, Sec-Fetch-Site: cross-site, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0, sec-ch-ua: Not/A)Brand;v8, Chromium;v126, Microsoft Edge;v126, sec-ch-ua-mobile: ?0, sec-ch-ua-platform: Windows, } files { key: (None, self.upload_data[data][filePath]), policy: (None, self.upload_data[data][policy]), OSSAccessKeyId: (None, self.upload_data[data][accessId]), success_action_status: (None, 200), signature: (None, self.upload_data[data][signature]), callback: (None, self.upload_data[data][callbackUrl]), file: (fimage.{self.img_type}, self._get_file(self.file_path), fimage/{self.img_type}), } url https://csdn-img-blog.oss-cn-beijing.aliyuncs.com/ response requests.post(url, headersheaders, filesfiles) try: self.csdn_data response.json() self.output_url self.csdn_data[data][imageUrl] except Exception as e: return e def upload_image(self, file_path): self.file_path file_path self.img_type self.file_path.split(.)[-1] exception_1 self._upload_request() assert exception_1 is None, exception_1 exception_2 self._csdn_request() assert exception_2 is None, exception_2 return self.output_url class CSDNTransform: def __init__(self, upload:UploadPic, file_path, walk_pathC:/Users/Administrator/Documents/Obsidian Vault/): self.upload upload self.file_path file_path self.walk_path walk_path self.markdown_text self.image_lst [] self.posterior_image_lst [] self.image_2_url_dic {} def _get_markdown_text(self): with open(self.file_path, moder, encodingutf-8) as f: markdown_text f.read() self.markdown_text markdown_text def _process_markdown_text(self): image_lst re.findall(r(!\[\[.*]]), self.markdown_text) posterior_image_lst [item[3:-2] for item in image_lst] self.image_lst image_lst self.posterior_image_lst posterior_image_lst def _get_target_image_path(self, target_path): for root, floders, files in os.walk(self.walk_path): for file in files: if file target_path: return str(Path(root) / file) def _get_the_url_of_image(self, image_path): image_url self.upload.upload_image(image_path) return image_url def get_the_urls(self): self._get_markdown_text() self._process_markdown_text() not_exist_image_index [] for ix, (origin_image, target_path) in track(enumerate(zip(self.image_lst, self.posterior_image_lst))): image_path self._get_target_image_path(target_path) if image_path is not None: image_url self._get_the_url_of_image(image_path) self.image_2_url_dic[origin_image] image_url else: not_exist_image_index.append(ix) # 清楚掉需要删除的index num 0 for ix in not_exist_image_index: del self.image_lst[ix-num] del self.posterior_image_lst[ix-num] num 1 def _the_transform_data_from(self, image_url): data_form f\ndiv aligncenterimg src{image_url}/div\n return data_form def _save_markdown_text(self, output_filemarkdown_processed.txt): with open(output_file, modew, encodingutf-8) as f: f.write(self.markdown_text) def get_transform(self): self.get_the_urls() # Judge the length assert len(self.image_lst) len(self.image_2_url_dic), f上传成功{len(self.image_2_url_dic)}张图片,总共有{len(self.image_lst)}张图片 for origin_image, image_url in self.image_2_url_dic.items(): self.markdown_text self.markdown_text.replace(origin_image, self._the_transform_data_from(image_url)) self._save_markdown_text()if __name__ __main__: cookie # 输入你的cookiefile_path # 输入你要转换的markdown文件地址upload UploadPic(cookie) transform CSDNTransform(upload, file_path) markdown_text transform.get_transform()# 修改后的 Markdown 在当前目录的 markdown_processed.txt 文件中参考 requests库post请求参数data、json和files的使用_requests post data-CSDN博客 HTTP协议之multipart/form-data请求分析_http form-data请求-CSDN博客
http://www.tj-hxxt.cn/news/141564.html

相关文章:

  • 临汾哪里有做网站的贵州企业网站建设公司
  • 电子政务网站建设收到网站代码后怎么做
  • 字母logo设计网站创新的大良网站建设
  • 网站备案期间可以用二级域名访问网站吗哈尔滨网站设计定制
  • 网站开发入门书如何做内容收费的网站
  • 网站建设需要材料开发游戏用什么编程软件
  • wordpress数据库密码加密多少位太原网站seo顾问
  • 国内免费产品发布网站工作室建设规划
  • 做网站公司上什么平台宁波网络公司网站建s
  • 温州做网站哪家公司好甘肃锦华建设集团网站
  • 在线流程图网站怎么做网站首页设计欣赏
  • 维护公司网站建设网站拥有者查询
  • wordpress 主图截图网络优化网站建设学习
  • 澄城县城乡建设局网站儿童主题网站的内容建设
  • 网站营销外包公司简介长沙传媒公司招聘
  • 我的南京网站wordpress企业魔板
  • 网站超级外链wordpress 第三方支付
  • 南京网站开发询南京乐识如何注册公司注册公司需要什么
  • 全省建设信息网站参考消息电子版报纸
  • 成都建站模板网站开发怎么破解wordpress图片防盗链
  • 如何用ps做网站导航条项目管理软件project手机版
  • 如何利用开源代码做网站广州比较好的外贸公司有哪些
  • 在百度上如何上传自己的网站品牌设计网站公司
  • 网站 优化 件大企业网站建设公司排名
  • 视觉设计的网站和app响应式网站建设方案
  • php工具箱是直接做网站的吗wordpress guid
  • 免费的ai写作网站网站开发专业都有哪些课程
  • 西安企业建站机构那里有甘肃省建设厅执业注册中心网站
  • 家政网站模板wordpress模板 手机版
  • html5网站开发特点小程序开发平台哪家性价比高