起因

一直使用的微博图床管理图片,突然之间全挂,不想再折腾微博了就把所有的图片都转到github上管理。

reflare.js

项目地址: $5

构建

1
2
3
4
5
6
7
8
# 1、拉取npm包
npm install -g @cloudflare/wrangler
wrangler login

# 2、拉取项目
wrangler generate reflare-app https://github.com/xiaoyang-sde/reflare-template
cd reflare-app
npm install

配置

修改src/index.ts文件中domain反代地址即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import useReflare from "reflare";

const handleRequest = async (request: Request): Promise<Response> => {
const reflare = await useReflare();

reflare.push({
path: "/*",
upstream: {
domain: "cdn.jsdelivr.net",
protocol: "https",
},
});

return reflare.handle(request);
};

addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});

打包

1
2
# 配置完build打包即可
yarn build

打包完成会在根目录生成dist文件夹,以及worker.js文件。


cloudflare

站点配置

首先需要将域名停靠在cloudflare,去相应的域名服务商配置一下,也就是把dns换测cloudflare的即可。

Workers 配置

1、创建服务

image-20230109152810263

2、构建部署

image-20230109153643603

image-20230109153741803

1
2
3
4
5
6
7
8
9
10
addEventListener(
"fetch",event => {
let url=new URL(event.request.url);
url.hostname="cdn.jsdelivr.net"; //你需要反代的域名
let request=new Request(url,event.request);
event. respondWith(
fetch(request)
)
}
)

Pages 配置

1、创建项目

image-20230109154111959

image-20230109154501761

2、自定义域名

image-20230109155201111

image-20230109155242307

image-20230109155339759


PicGo

安装

项目地址:https://github.com/Molunerfinn/PicGo/releases/tag/v2.3.1

下载完成后直接安装即可。

Github配置

获取access token

登录github后,点击右上角头像,然后依次点击如下:

Settings -> Developer settings -> Personal access tokens -> Tokens (classic) -> Generate new token -> Generate new token (classic) -> 按照下图填写完点击Generate token生成

image-20230109160401241

生成的token记得保存,后面没法查看这个token。

PicGo配置

image-20230109160844736

配置完在上传区直接往里拖文件,或者剪贴板以及url都可以。

image-20230109161152579

Typora

配置

按照如下图箭头选择内容配置即可

文件 -> 偏好设置 -> 图像

image-20230109161342544

配置完成后,剪贴板的图片直接粘贴文章内就会调用PicGo自动上传。


微博图床迁移

起因

由于图片太多,一个一个手动下载太费时间,故通过Python来实现,下载完全部拖进PicGo即可。

代码

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
# -*- coding:utf-8 -*-

# 实现也非常简单,代码仅供参考,具体的自行看接口请求参数修改即可

import time
import requests

# 如下参数看请求自行修改成你的
cookies = {
'SINAGLOBAL': 'xxx',
'UOR': 'www.baidu.com,weibo.com,www.baidu.com',
'SCF': 'xxx',
'SUB': 'xxx',
'SUBP': 'xxx',
'ALF': 'xxx',
'SSOLoginState': 'xxx',
'_s_tentry': '-',
'Apache': 'xxx',
'ULV': 'xxx',
'PC_TOKEN': 'xxx',
}

headers = {
'authority': 'photo.weibo.com',
'accept': '*/*',
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6',
'content-type': 'application/x-www-form-urlencoded',
'referer': 'https://photo.weibo.com/7651260917/albums/detail/album_id/4704153199837253',
'sec-ch-ua': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
'x-requested-with': 'XMLHttpRequest',
}


def weibo_img_save():
for num in range(1, 6):
params = {
'uid': '你的微博uid',
'album_id': 'xxx',
'count': '30',
'page': str(num),
'type': '1',
'__rnd': 'xxx',
}
res = requests.get('https://photo.weibo.com/photos/get_all', params=params, cookies=cookies, headers=headers)
js_data = res.json()["data"]["photo_list"]
time.sleep(5)
for photo_list in js_data:
img_url = "https://wx3.sinaimg.cn/mw690/" + photo_list["pic_name"]
req = requests.get(url=img_url, cookies=cookies, headers=headers)
with open(fr'C:\User\weibo\{photo_list["pic_name"]}', 'wb') as f:
f.write(req.content)
time.sleep(3)

if __name__ == '__main__':
weibo_img_save()