生成自己的豆瓣电影/音乐/图书封面墙

2022-01-03 20:18:46 +08:00
 Natsumoku

简介

以前豆瓣电影的个人年终总结会在电脑网页端生成海报墙,现在那个功能被砍了,只能在手机端查看,而且那幅图也不会再更新。

所以我写了这个脚本,按照自己需求,可以随时用自己观影的最新数据,生成横版 /竖版的海报墙,大图的穿插可以自己调节。默认是按照给星的高低、从近往远排列的,也可以进行筛选。

效果图

建议新标签页查看大图。原本我还想做图片尾端渐变到透明的效果,但是那样的话一张 PNG 格式的成品图轻松超过 15MB ,所以还是放弃了。

电影海报墙:

专辑封面墙:

使用方式

GitHub,README 里有参数说明。

3816 次点击
所在节点    分享创造
24 条回复
czfy
2022-01-03 20:22:15 +08:00
好像看到不少后摇专辑
时过夏末 好评
Natsumoku
2022-01-03 20:53:26 +08:00
@czfy 是的,后摇治愈又致郁
d5
2022-01-03 21:11:09 +08:00
哈哈有意思,非常酷,已经 start+fork 支持!
wellsc
2022-01-03 21:15:41 +08:00
可读性太差,没啥意义
theHaagenDazs
2022-01-03 23:45:35 +08:00
看着不错!这种图本来也就是图个好看,已经 star 了
Natsumoku
2022-01-04 02:17:46 +08:00
做了个改动,现在如果在参数中设成**按标记顺序排列**,被标为五星的条目会优先占据大图位置(也就是说它们会稍稍脱离原本的顺序,为了显得更突出)。
oluoluo
2022-01-04 10:33:14 +08:00
Traceback (most recent call last):
File "image_wall.py", line 9, in <module>
from item import Item, get_next_img_url
File "/root/dl/DoubanImageWall/item.py", line 17, in <module>
def get_next_img_url(items: list[Item], sort_by_time: bool, need_large_img: bool) -> str:
TypeError: 'type' object is not subscriptable
oluoluo
2022-01-04 10:34:50 +08:00
这个是为什么啊
dragonPunch
2022-01-04 11:01:02 +08:00
音乐专辑墙的竹内玛利亚、杏里,还有角松敏生大好评!!
mortal
2022-01-04 12:17:01 +08:00
LZ cache 文件夹不加 .gitignore 么😂
Natsumoku
2022-01-04 12:43:33 +08:00
@oluoluo 你是 python 3.9 之后的版本吗?如果不是的话,试试看索性删掉 17 行的 “: list[Item]”
(查了一下,感觉是这个问题: https://stackoverflow.com/questions/63460126/typeerror-type-object-is-not-subscriptable-in-a-function-signature
Natsumoku
2022-01-04 12:50:50 +08:00
@mortal 这是个好问题。直觉上应该加的,但是我觉得加了的话,GitHub Actions 每天定时跑的时候,cache 文件夹是不是就形同虚设了?本地跑肯定没问题,不手动清空就行,但我不知道 GitHub Actions 机器是怎么分配的,ignore 掉以后大概每次跑之前 cache 都是空的?
Natsumoku
2022-01-04 12:56:27 +08:00
@oluoluo 如果是 python 3.7 (包括)之后的话,可以 pull 一下重跑试试看,我刚才加了个 from __future__ import annotations 应该能解决那个报错
WeitingChen
2022-01-04 13:11:00 +08:00
点击相关图片,会跳转链接吗
Natsumoku
2022-01-04 13:27:04 +08:00
@WeitingChen 生成的是 jpg 格式,所以不会。如果想达到那个效果得用 HTML 和 js 了
daolanfler
2022-01-04 14:58:43 +08:00
有点像 mac apple music 锁屏
oluoluo
2022-01-04 15:00:22 +08:00
@Natsumoku 确实是 python 版本的问题,哈哈,对新特性的语法不太熟悉。。。
Rebron1900
2022-01-04 15:01:01 +08:00
可以搞个 html 和 js 的么,想挂在博客上面
terencehan
2022-01-04 16:07:45 +08:00
python 3.7.4

```
Traceback (most recent call last):
File "image_wall.py", line 90, in <module>
rating = int(re.match(rating_span_regex, item_div.find('span', {'class': rating_span_regex})['class'][0])[1])
TypeError: 'NoneType' object is not subscriptable
```
Natsumoku
2022-01-04 16:29:17 +08:00
@terencehan 感谢反馈,这是没有打星的条目会触发这个问题,目前已修复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/825947

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX