0%

从微博图床到gitee

前因

博客里经常需要插入一些图片,在我最开始写博客的时候,和大多数人一样,我的博客部署在github上,首先接触到的是微博图床。

新浪微博的稳定性不必多说,加上Chrome微博图床插件更是妙不可言。

最开始的那会儿微博对我这种白嫖行为没什么限制,到后来,因为觉得github访问速度慢,于是想把博客迁移到自己的服务器上。迁移成功之后,却发现所有图片都不能正常访问了。究其原因,原来是微博加上了某种限制措施。

值得一提的是,如果博客部署在github或者gitee上,通过新浪微博生成的图片外链仍然可以正常访问,大概是因为github和gitee在微博的白名单里。

最后,我把博客迁移到了gitee上。gitee相比于github的优势主要在于访问速度,美中不足的是普通用户需要手动去更新仓库内容。

现在,我又觉得不过瘾,部署在github pages或者gitee pages的博客是很难被搜索引擎搜索到的(尤其是百度),还是想把博客部署在自己的服务器。

无意中了解到Github也可以当做图床来使用,于是我做了一番尝试,发现github的资源保存在亚马逊s3上,而访问亚马逊s3需要科学上网,我又把注意力放在了国产github之gitee上。

gitee也可以当做图床来用,现在最大的问题是:如何将我之前所有博客中微博图床的图片链接替换成gitee的链接呢?

  • 手动替换 ×
  • 用java √

思路

  • 将markdown文件里的新浪微博图床的链接下载到本地
  • 将下载到本地的图片上传到gitee
  • 将markdown文件里的新浪微博图床的链接换成新的gitee的链接
  • 对所有markdown文件执行上述操作

实现

准备工作

在gitee里建一个新的仓库,必须是public类型,在设置里new一个新的token备用。

下载微博图片到本地

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package eternal.fire;

import java.io.*;
import java.net.URL;
import java.net.URLConnection;

public class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("http://ww1.sinaimg.cn/large/005VT09Qly1gh2fui1lhqj318w0u0aem.jpg");
URLConnection connection = url.openConnection();
InputStream inputStream = connection.getInputStream();
File pic = new File("D:\\Project\\IdeaProjects\\image-bed\\src\\main\\resources\\pic.jpg");
OutputStream outputStream = new FileOutputStream(pic);
int data;
while ((data = inputStream.read()) != -1) {
outputStream.write(data);
}
outputStream.flush();
}
}

这段代码执行完成之后,一张图片就成功的从微博图床下载到了本地。

—————-未完待续—————-