python生成豆瓣电影海报墙/音乐专辑封面墙/图书封面墙。

python生成豆瓣电影海报墙/音乐专辑封面墙/图书封面墙。

Property
Jun 27, 2022 11:55 AM
notion image

DoubanImageWall

读取豆瓣用户标记为“看过”的电影/“听过”的音乐/“读过”的图书,生成电影海报墙/音乐专辑封面墙/图书封面墙
大小与排列方式可调。 参考 workflows 目录以使用 GitHub Actions 更新图片 ,以及输入任意豆瓣 ID 将运行结果存放于 workflow artifacts

效果图

电影海报墙:
notion image
音乐专辑封面墙:
notion image

使用方式

pip install -r requirements.txt
python image_wall.py -i={豆瓣 ID}
运行完毕后前往 output 文件夹查看成品图。
运行时间视参数与网络状况而定。首次运行或更换 ID 时会需要更久,后续运行由于图片缓存会快许多。

已知问题

生成图书封面墙时,很有可能在访问豆瓣的第一步(拉取标记过的图书)就失败。没有已知解决方案。见 Issue 页

参数说明

参数(短)
参数(长)
默认值
说明
id
用户 ID,或含用户 ID 的豆瓣链接
sort-by-time
False
按标记顺序,从近往远排列,并且被标为五星的条目会优先占据大图位置注意,这不是默认排列方式。默认排列方式为按照该用户给出的打星高低、再从近往远排列
random
False
是否随机排列所有图片。若按标记顺序排列并开启了此选项,五星条目的“大图优先”原则仍然有效。
mode
movie
moviemusicbookmovie生成电影海报墙;music生成音乐专辑封面墙;book生成图书封面墙。设为music时,每张图片的高度将等同于宽度。
col
5
列数
row
8
行数,建议使用偶数
offset
13
在前四行中每隔多少张图片加入一张大图。图片墙从第五行起会重复前四行的排列方式。设为 0 禁用大图。大图为其余图片的四倍大小,当排列冲突时,程序会提示 offset 无效,可尝试将其调低或调高 1。
width
540
每张图片的宽度,建议小于 600
height
750
每张图片的高度,建议小于 800。在音乐专辑封面墙上,高度将等同于宽度。
rating
0
按打星过滤,可用数字 1 到 5。设为 0 不过滤。
threshold
300
允许保留缓存图片的最大数量。若设为 0,则每次运行后,未被本次运行读取到的缓存图片将被删除。 若设为负数,则运行时不会存储缓存,且所有缓存图片将被删除。
limit
200
图片处理的最大数量。通常这个值需要高于列数乘以行数,以获得足够多的图片。
max-width
4000
成品图的最大宽度(像素)
max-height
8000
成品图的最大高度(像素)