有一段时间收集了不少的写真集和漫画,但是一直苦于没有很好的组织和储存的方法,直到我找到了LycheeOrg/Lychee ,它的图片组织形式非常适合存放写真集或者漫画,于是我尝试把图片都放上去。体验很好,但是上传会很麻烦,因为它不支持文件夹上传,这意味着我需要一个一个上传图集并且创建相册,这简直是个灾难。
pychee6
于是我萌生了使用python写个上传器的想法,首先第一步就是找到一个能用的lychee的python库,经过lychee维护者ildyria推荐,我找到了Chostakovitch/pychee: Client for Lychee written in Python,然而已经很久没有维护了。所以我借鉴这个项目开发了一个lychee库x1ntt/pychee6。
目前只封装了比较常用的几个功能,例如上传下载图片和相册,创建移动等等。
同时考虑到api原生接口需要的album_id是一个不方便的东西,还实现了相册路径转album_id的功能,可以将诸如/depth_1/depth_2这样的相册路径转换为形如p92kvXqyZUC6M-8CcPAwnCpd的album_id。
pychee6.cli
当然,只有一个库还不够,于是还开发了一个cli作为命令行客户端,它可以按照下面的方式使用- python3 -m pychee6.cli ls # 列出相册和图片
- python3 -m pychee6.cli la # 列出相册
- python3 -m pychee6.cli c_a / new_album # 在根目录创建名为`new_album`的相册
- python3 -m pychee6.cli c_a /new_album deepth_1 # 在`new_album`下创建名为`deepth_2`的相册
- python3 -m pychee6.cli d_a / ./tmp/ # 下载根目录下的相册到`./tmp/`
- python3 -m pychee6.cli u_a /new_album ./tmp/test__album/ # 上传`./tmp/test__album/`目录到`/new_album`
- python3 -m pychee6.cli u_p /new_album ./tmp/test__album/157_modify.webp # 上传图片
- # 相册id和相册路径互相转换
- python3 -m pychee6.cli c_v /new_album
- python3 -m pychee6.cli c_v p92kvXqyZUC6M-8CcPAwnCpd
复制代码 考虑到维护成本和功能需求,我并没有实现一个GUI界面。
下面是完整的帮助信息,更多请去 x1ntt/pychee6- python -m pychee6.cli -h
- usage: cli.py [-h] [-t TOKEN] [-u USER] [-p PASSWD] [-H HOST] [-m MAX_THREAD] [-v]
- {upload_album,u_a,upload_photo,u_p,download_album,d_a,create_album,c_a,delete_album,del_a,list,ls,list_album,la,conv,c_v,reg_context,unreg_context} ...
- 这是LycheeClient的cli版本,你可以把这个当作库的使用示例。
- 大多数情况下,你可以使用album_id或者相册路径为参数。
- album_id是一个24位长度的字符串形如:b4noPnuHQSSCXZL_IMsLEGAJ。
- 相册路径是以/开头的字符串形如:/deepth_1/deepth_2。其中单独的/表示根目录或者说未分类
- positional arguments:
- {upload_album,u_a,upload_photo,u_p,download_album,d_a,create_album,c_a,delete_album,del_a,list,ls,list_album,la,conv,c_v,reg_context,unreg_context}
- upload_album (u_a) 上传相册,album_id为'/'则上传到根相册
- upload_photo (u_p) 上传图片到相册,album_id为'/'则上传到未分类
- download_album (d_a)
- 下载相册,album_id为'/'则下载所有
- create_album (c_a) 创建相册,album_id为'/'则在根相册创建
- delete_album (del_a)
- 删除指定相册
- list (ls) 列出相册和图片
- list_album (la) 仅显示相册
- conv (c_v) album_id和album_path互相转换
- reg_context 将上传下载功能注册到鼠标上下文菜单中
- unreg_context 取消注册鼠标上下文菜单中的上传下载功能
- options:
- -h, --help show this help message and exit
- -t, --token TOKEN 登录所需要的api token,与用户名二选一 可以通过 LYCHEE_TOKEN 环境变量提供
- -u, --user USER 用户名 可以通过环境变量 LYCHEE_USERNAME 提供
- -p, --passwd PASSWD 密码 可以通过环境变量 LYCHEE_PASSWORD 提供
- -H, --host HOST 服务器地址,形如: http://exp.com:8808/ 可以通过环境变量 LYCHEE_HOST 提供
- -m, --max_thread MAX_THREAD
- 线程池大小 影响上传下载数量,默认为5
- -v, --verbose 输出调试信息
复制代码 pychee6_cm
然而在使用了几次之后,发现只有一个命令行并不方便。当我需要上传一个文件夹时,我还需要打开cmd然后输入命令行,这其实很不方便。
于是我的另一个主意是,把cli的功能注册到windows资源管理器的上下文菜单,于是就有了x1ntt/pychee6_cm: 用于注册pychee.cli到windows资源管理的上下文菜单
效果如下:
上图展示了注册到上下文菜单、上传到指定相册、下载到文件夹的过程。
至此,已经能够满足我自己的使用了。
如果有遇到什么bug或者需求,欢迎到x1ntt/pychee6提出issue
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |