加载中...
Chrome 离线包下载

Chrome 离线包下载

是的,又是一个 Chrome 离线包下载页面。

DEMO: https://lab.skk.moe/chrome
短网址: https://git.io/Chrome (注意大小写)

chrome-demo.png

首先不得不提一下 METO,他在他的博客里提到了 相关 API 和请求方法,这是获取 Chrome 离线包下载地址的关键。

但是看了一下他的 ChromeChecker,输出的 XML 都是把数据写在 XML 节点的属性里,解析起来太麻烦。而且,使用 AJAX 获取 XML 数据的方法,能不能兼容 IE8 还是一个问题。
如果要绕过 AJAX 获取数据,直接输出包含所有信息的 HTML 就行了。本着不把简单的问题复杂化,我决定继续用 bash 完成剩余的工作:先写一个 HTML 模板,之后用 sed 把数据填充到模板里。

把 HTML 模板和将数据填充到模板里的脚本丢进 Repo 里,然后在 Travis CI 上启用定时运行,实现 24 小时查询一次。

同样的,我也搞了一个 API,包含了版本号、HASH、下载地址:https://lab.skk.moe/chrome/api/chrome.xml 返回未压缩的数据用于开发,https://lab.skk.moe/chrome/api/chrome.min.xml 返回压缩的数据。这个 API 把数据写在节点里,而不是属性值里。


在这里顺便记下几个使用 bash 时遇到的坑和对应解决方案:

拼接字符和变量

直接怼一块就行了,就像这样

$ a=sukkaw
$ echo -e $a
sukkaw
$ echo -e $a"~meow~"
sukkaw~meow~

bash 计算数值

使用 $[] 是可以直接计算的:

$ echo -e $[1+2]
3
$ echo -e $[1-2]
-1
$ echo -e $[1*2]
2

但是 bash 里使用变量计算不支持计算小数,小数点和之后的内容会被直接抛弃,就像这样:

$ echo -e $[1/2]
0

而且,使用这种办法不能把计算结果传给一个变量,所以得借助 awk 帮忙:

$ a=$(awk 'BEGIN{printf "%.3f",('5'/'9')}')
$ echo -e $a
0.556

date 指定时区

这个还算简单,man 里面也有写,直接用 TZ=UTC- 就行。

$ TZ=UTC-9 date '+%Y-%m-%d %H:%M:%S'
2018-08-08 20:16:43

sed 替换字符串

sed 的文档介绍说可以用大部分字符作为分隔符,比如:

$ sed -i "s|a|b|g" a.txt
$ sed -i "s/a/b/g" a.txt
$ sed -i "s~a~b~g" a.txt
$ sed -i "s!a!b!g" a.txt

但是替换的字符串或者目标字符串不能带有和分隔符相同的字符,如果遇到了需要换掉分隔符。

Chrome 离线包下载
本文作者
Sukka
发布于
2018-08-08
更新于
2017-08-08
许可协议
转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!
喜欢这篇文章?为什么不考虑打赏一下作者呢?
爱发电
评论加载中 ...