在Linux/MacOSX上部署AList和clouddrive

背景

alist

AList 是一个开源的网盘文件罗列程序,它支持数十个网盘的挂载,并提供 WebDav 的访问方式。

clouddrive

clouddrive 是一个闭源的网盘文件罗列程序,虽然它只支持几个网盘,但是也有独特的功能。它也支持 WebDav

我编写了 2 个脚本:deploy-alist.sh 可用于一键部署 AListdeploy-clouddrive.sh 可用于一键部署 clouddrive。您的设备上可能有一个应用商店,本身就提供了安装 alistclouddrive,或者你使用了官方提供的一键部署脚本(但支持的平台有限),或者你用 docker 来部署,等等,这样你可能用不到我的脚本。不过如果你的平台上找不到可用的一键部署方案,不如尝试一下我的办法吧😂。

代码实现

TIPS 代码的最新版本在 GitHub Gist 中维护
https://gist.github.com/ChenyangGao/e8e520de651e6375dad552b5a761902f

1. 部署 AList

文件名称是 deploy-alist.sh,您可以用 bashzsh 运行代码,由于用到了一些较新的语法,请确保你的解释器版本不能太低:

1
bash -c "$(wget -q -O - https://gist.githubusercontent.com/ChenyangGao/e8e520de651e6375dad552b5a761902f/raw/deploy-alist.sh)"

2. 部署 clouddrive2

文件名称是 deploy-clouddrive.sh,您可以用 bashzsh 运行代码:

1
bash -c "$(wget -q -O - https://gist.githubusercontent.com/ChenyangGao/e8e520de651e6375dad552b5a761902f/raw/deploy-clouddrive.sh)"

Python脚本设置pip索引源

背景

Python 包索引(Python Package Index,PyPI)是由全球 Python 开发人员社区提供的大量开源 Python 包的存储库。官方索引在 https://pypi.org,网站本身由 Python 软件基金会(Python Software Foundation,PSF)维护。
你也可以在上面发布自己的项目,可参考 A Beginner’s Guide to Publishing Packages on the Python Package Index (PyPi)How to Publish an Open-Source Python Package to PyPI

Python 使用 pip 安装第三方包时,默认使用的官方索引源 pypi 的地址 https://pypi.python.org/pypi 在中国大陆因为墙的原因,下载缓慢。
ubuntuaptarchlinuxPacman 有各自国内镜像源一样,pip 也有国内索引源可用,下面罗列了一部分,进一步的,为了便于设置国内源,并受到 nodejsnrm 的启发,我编写了一个脚本

key index-url trusted-url 提供者
douban http://pypi.douban.com/simple/ pypi.douban.com 豆瓣
aliyun http://mirrors.aliyun.com/pypi/simple/ mirrors.aliyun.com 阿里云
tsinghua https://pypi.tuna.tsinghua.edu.cn/simple/ pypi.tuna.tsinghua.edu.cn 清华大学
ustc https://pypi.mirrors.ustc.edu.cn/simple/ pypi.mirrors.ustc.edu.cn 中国科学技术大学
hustunique http://pypi.hustunique.com/simple/ pypi.hustunique.com 华中理工大学
sdutlinux http://pypi.sdutlinux.org/simple/ pypi.sdutlinux.org 山东理工大学
tencent http://mirrors.cloud.tencent.com/pypi/simple/ mirrors.cloud.tencent.com 腾讯云

Python脚本作为配置文件加载

背景

在使用 Python 开发时,如果要把对象 obj 当作字典使用,可以直接操作 obj.__dict__(如果有的话),具体而言:

对象操作 字典操作
obj.foo obj.__dict__["foo"]
obj.foo = "bar" obj.__dict__["foo"] = "bar"
del obj.foo del obj.__dict__["foo"]

对象操作和字典(这里指的是对象的命名空间)操作并不等价,字典操作并不执行复杂的方法查找描述符,步骤更少,一般而言更快。

Python在命令行修改Properties配置文件

背景

我在平常的工作中,经常需要修改配置文件。配置文件的格式多种多样,有一种配置文件最为常见,就是每一行形如 name=value 格式,例如 Java Properties。在编写这个脚本以前,我常常用 sed 命令来做增删改查,不过我觉得这并不足够方便

于是我专门写了一个 Python 命令行工具,来批量增删改查上述格式的配置文件,使用时注意要给用户对被处理的配置文件授予必要权限,比如 rw

Python函数作为命令行使用

背景

我最近了解了一个快速构建命令行的工具 typer,受到了一些启发。
它可以把一组带有类型注解的 Python 函数,快速地转换成命令行工具。我尝试只用 Python 的内建包,不引入第三方依赖,也实现一个类似的命令行快速构建工具。代码会持续更新,之后会加入更强的功能。

Shell脚本实现在Linux命令行开启代理

背景

我们在 Linux 命令行中,经常会需要使用代理(参考:How To Use Proxy Server To Access Internet at Shell Prompt With http_proxy VariableLinux Proxy Server Settings – Set Proxy For Command Line),以便能访问某些资源。

在我使用 Clash 开启了一个代理,端口为 7890 后,我常常用下面的 shell 代码在命令行中启用或取消代理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 可以把代码写入 bash 和 zsh 的启动文件中,新开 session 中可用
#cat >> ~/.bashrc >> ~/.zshrc << 'EOF'
export proxy=localhost:7890
# 如果是在 WSL 中,可以替换为下面的语句
#export proxy=$(cat /etc/resolv.conf | grep -m 1 nameserver | awk '{ print $2 }'):7890;
# proxy+ 命令用于启用代理
alias proxy+='\
export https_proxy=http://$proxy
export http_proxy=http://$proxy
export all_proxy=socks5://$proxy
export no_proxy=localhost,127.0.0.1,::1
echo "proxy has been set to: $proxy"
curl ipinfo.io';
# proxy- 命令用于停用代理
alias proxy-='\
unset http_proxy https_proxy all_proxy no_proxy
echo "proxy has been cleared";
curl ipinfo.io';
#EOF

为了便于做到这一点,我从自己的偏好出发,编写了一个 shell 脚本,已经在 bashzsh 中通过测试。

Python把HTML中的img元素的src转换成datauri

背景

有时候,我们编写完 markdown 文档,为了便于分享阅读,会把它转换成 HTML 文档。但是,大多数的 markdownHTML 工具,只会保留外部资源链接,而不是把资源整合到 HTML 文档之中。如果是网络资源,只要联网就能下载,如果是本地资源,那么必须把对应文件也一起打包,分享给别人。

我个人觉得,分享一个单独的 HTML ,而不是一个 HTML 以及一堆文件的打包,可以更方便用户的阅读。这里,我分享一个 Python 脚本,可以把一个 HTML 文档中所有 <img> 元素中的 src 属性的值,转换成 datauri (更现代的称呼是 data URL,详阅:Data URLs | MDN

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×