找回密码
 立即注册
首页 业界区 业界 [Python] 开发一个lychee相册命令行客户端以及python库p ...

[Python] 开发一个lychee相册命令行客户端以及python库pychee6

姚梨素 2025-6-4 16:17:05
有一段时间收集了不少的写真集和漫画,但是一直苦于没有很好的组织和储存的方法,直到我找到了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作为命令行客户端,它可以按照下面的方式使用
  1. python3 -m pychee6.cli ls   # 列出相册和图片
  2. python3 -m pychee6.cli la   # 列出相册
  3. python3 -m pychee6.cli c_a / new_album # 在根目录创建名为`new_album`的相册
  4. python3 -m pychee6.cli c_a /new_album deepth_1  # 在`new_album`下创建名为`deepth_2`的相册
  5. python3 -m pychee6.cli d_a / ./tmp/     # 下载根目录下的相册到`./tmp/`
  6. python3 -m pychee6.cli u_a /new_album ./tmp/test__album/ #  上传`./tmp/test__album/`目录到`/new_album`
  7. python3 -m pychee6.cli u_p /new_album ./tmp/test__album/157_modify.webp # 上传图片
  8. # 相册id和相册路径互相转换
  9. python3 -m pychee6.cli c_v /new_album
  10. python3 -m pychee6.cli c_v p92kvXqyZUC6M-8CcPAwnCpd
复制代码
考虑到维护成本和功能需求,我并没有实现一个GUI界面。
下面是完整的帮助信息,更多请去 x1ntt/pychee6
  1. python -m pychee6.cli -h
  2. usage: cli.py [-h] [-t TOKEN] [-u USER] [-p PASSWD] [-H HOST] [-m MAX_THREAD] [-v]
  3.               {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} ...
  4. 这是LycheeClient的cli版本,你可以把这个当作库的使用示例。
  5. 大多数情况下,你可以使用album_id或者相册路径为参数。
  6.         album_id是一个24位长度的字符串形如:b4noPnuHQSSCXZL_IMsLEGAJ。
  7.         相册路径是以/开头的字符串形如:/deepth_1/deepth_2。其中单独的/表示根目录或者说未分类
  8. positional arguments:
  9.   {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}
  10.     upload_album (u_a)  上传相册,album_id为'/'则上传到根相册
  11.     upload_photo (u_p)  上传图片到相册,album_id为'/'则上传到未分类
  12.     download_album (d_a)
  13.                         下载相册,album_id为'/'则下载所有
  14.     create_album (c_a)  创建相册,album_id为'/'则在根相册创建
  15.     delete_album (del_a)
  16.                         删除指定相册
  17.     list (ls)           列出相册和图片
  18.     list_album (la)     仅显示相册
  19.     conv (c_v)          album_id和album_path互相转换
  20.     reg_context         将上传下载功能注册到鼠标上下文菜单中
  21.     unreg_context       取消注册鼠标上下文菜单中的上传下载功能
  22. options:
  23.   -h, --help            show this help message and exit
  24.   -t, --token TOKEN     登录所需要的api token,与用户名二选一 可以通过 LYCHEE_TOKEN 环境变量提供
  25.   -u, --user USER       用户名 可以通过环境变量 LYCHEE_USERNAME 提供
  26.   -p, --passwd PASSWD   密码 可以通过环境变量 LYCHEE_PASSWORD 提供
  27.   -H, --host HOST       服务器地址,形如: http://exp.com:8808/ 可以通过环境变量 LYCHEE_HOST 提供
  28.   -m, --max_thread MAX_THREAD
  29.                         线程池大小 影响上传下载数量,默认为5
  30.   -v, --verbose         输出调试信息
复制代码
pychee6_cm

然而在使用了几次之后,发现只有一个命令行并不方便。当我需要上传一个文件夹时,我还需要打开cmd然后输入命令行,这其实很不方便。
于是我的另一个主意是,把cli的功能注册到windows资源管理器的上下文菜单,于是就有了x1ntt/pychee6_cm: 用于注册pychee.cli到windows资源管理的上下文菜单
效果如下:
1.gif

上图展示了注册到上下文菜单、上传到指定相册、下载到文件夹的过程。
至此,已经能够满足我自己的使用了。

如果有遇到什么bug或者需求,欢迎到x1ntt/pychee6提出issue
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册