可以以豆列的方式展示電影、圖書、音樂。
數(shù)據(jù)本地化,解決豆瓣接口失效及圖片防盜鏈。
提要
(3) 對(duì)豆瓣網(wǎng)內(nèi)容的衍生利用,包括但不限于基于或利用豆瓣網(wǎng)內(nèi)容而開發(fā)的任何插件、軟件、應(yīng)用程序、網(wǎng)站;
豆瓣這協(xié)議看著有點(diǎn)嚇人,本插件僅作為個(gè)人興趣學(xué)習(xí)研究使用。
多年以前我寫過一個(gè)插件,主要是以embed 的方式文章中插入豆瓣條目,之前的主題也支持過拉取豆瓣的看過記錄,隨著豆瓣逐漸封閉,接口都無法使用,這些功能就都不了了之了。最近隨著靜態(tài)博客的流行,GitHub Actions 的升級(jí)以及Notion 之類的數(shù)據(jù)倉(cāng)崛起,書影音的管理似乎又流行了起來。稍微研究了一下,把之前這個(gè)老插件進(jìn)行了升級(jí)。
以前這這個(gè)功能的時(shí)候只是想做一個(gè)功能展示,并未從一個(gè)產(chǎn)品的角度去思考這個(gè)功能要什么樣以及為什么這個(gè)樣子。思考下來,應(yīng)該有以下幾點(diǎn)。
- 文章中embed 引用條目,方便方可查看該條目更多內(nèi)容,同時(shí)如果是已觀看記錄,輸出自己的評(píng)分以及短評(píng)。
- 條目管理一方面是對(duì)自己已閱條目的記錄,另一方面也承擔(dān)了影片推薦的功能,畢竟好電影很多,但找到好電影不容易。
- 本地化數(shù)據(jù)以防止受第三方服務(wù)影響,但并沒有增加搜索功能。
- 所以條目均可手動(dòng)管理,方便處理一些敏感條目。
并沒有引入點(diǎn)贊之類的功能,覺得這些功能更多是主觀的意見輸出,并不需要點(diǎn)贊。
一般工具的缺陷
現(xiàn)在網(wǎng)絡(luò)上的各種豆瓣同步教程一般來說是足夠使用了,但像我這種觀影量比較大的人來說,還是有一定的缺陷,主要有以下幾個(gè)缺點(diǎn)。
- 一些限制類的電影只有條目,無法進(jìn)行標(biāo)記打分操作。
- 一部分條目只有登陸才能查看,非登陸狀態(tài)通過接口或者rss 方式均會(huì)顯示未知電影或未知電視劇。
- 豆瓣不支持設(shè)置觀看時(shí)間,只有標(biāo)記時(shí)間。
- 大部分教程沒有對(duì)個(gè)人評(píng)分和短評(píng)進(jìn)行管理。
- 部分小眾條目沒有封面。
改進(jìn)
- 通過接口的方式自動(dòng)同步數(shù)據(jù),通過WP 的Cron Job 定時(shí)同步最新標(biāo)記的條目。
- 通過油猴腳本導(dǎo)出CSV 數(shù)據(jù),再將CSV 導(dǎo)出本地,解決未知電影和未知電視劇的問題。
- 數(shù)據(jù)本地化,可以手動(dòng)修改觀影時(shí)間。
- 拉取了個(gè)人評(píng)分和短評(píng)。
- 可手動(dòng)新建編輯條目,解決了豆瓣條目信息缺失以及無條目的問題。
仍然存在的缺陷
- 豆瓣取消標(biāo)記無法自動(dòng)刪除本地記錄,只能清庫(kù)重新同步。
- 清庫(kù)會(huì)造成自定義數(shù)據(jù)的遺失。
封面本地存儲(chǔ)后更新比較麻煩,只能手動(dòng)去服務(wù)器刪除文件。個(gè)人評(píng)分和短評(píng)僅做了存儲(chǔ),并未展示。
使用
圖片內(nèi)容緩存到本地解決豆瓣防盜鏈。讀取API數(shù)據(jù)緩存時(shí)間為1個(gè)月。
調(diào)用電影封面
使用函數(shù)get_movie_image($id)
,id為豆瓣電影數(shù)字id
使用插件內(nèi)置的縮略圖函數(shù)wpd_get_post_image($id)
,id為文章id
插入方式
直接在文章中粘貼豆瓣url即可。
圖書展示
https://book.douban.com/subject/34481379
音樂專輯展示
https://music.douban.com/subject/6816154
電影展示
https://movie.douban.com/subject/1292001
游戲展示
http://www.douban.com/game/26817171/
舞臺(tái)劇展示
https://www.douban.com/location/drama/11519197/

使用介紹
注:本插件僅作為學(xué)習(xí)研究使用。請(qǐng)合理使用插件,切勿惡意采集數(shù)據(jù)。
卸載插件會(huì)刪除數(shù)據(jù)庫(kù)數(shù)據(jù),如果有自定義數(shù)據(jù)建議備份后再刪除。
可能因?yàn)榉?wù)器時(shí)區(qū)問題同步任務(wù)無法立即執(zhí)行,可下載插件WP Crontrol
,手動(dòng)執(zhí)行db_sync
?事務(wù)。

插件參數(shù)定義
豆瓣賬號(hào)id 為豆瓣的數(shù)字賬號(hào)ID,文章引入條目卡片無需配置豆瓣賬號(hào)信息,如需展示看過列表則需要配置豆瓣賬號(hào)。一般打開個(gè)人主頁(yè),url 中的數(shù)字即為豆瓣賬號(hào)id。如設(shè)置過自定義賬號(hào),則在新窗口打開自己的頭像,頭像文件名中的數(shù)字就是自己的賬號(hào)id。
如過要修改賬號(hào)ID,建議刪除插件重新安裝,否則展示的標(biāo)記數(shù)據(jù)會(huì)為多個(gè)賬號(hào)的集合數(shù)據(jù)。
點(diǎn)擊你的個(gè)人主頁(yè),URL類似為
https://www.douban.com/people/54529369/
,54529369
就是你的ID
插件支持五種條目類型,當(dāng)需要設(shè)置類型均按照一下規(guī)則
music
?音樂movie
?電影game
?游戲book
?圖書drama
?話劇
每頁(yè)顯示條目數(shù)量?jī)H對(duì)標(biāo)記列表生效,默認(rèn)為70
,可根據(jù)自身主題寬度進(jìn)行調(diào)整。
自定義CSS
插件的CSS
?顏色變量,插件配色CSS
?變量設(shè)置,僅需在插件后臺(tái)設(shè)置變量即可。
:root { --db-main-color: rgba(0, 87, 217); --db-hover-color: rgba(104, 156, 233, 1); }
--db-main-color
為菜單高亮色,--db-hover-color
為鼠標(biāo)懸浮色。
同步標(biāo)記數(shù)據(jù)需要配置賬號(hào),配置賬號(hào)后先禁用插件,再激活即可自動(dòng)同步數(shù)據(jù)。
下載圖片到本地
如開啟該選項(xiàng),則會(huì)把封面信息緩存到本地,首次加載的時(shí)候可能會(huì)消耗較長(zhǎng)時(shí)間,圖片只會(huì)下載一次,如需更新圖片需刪除文件夾下的對(duì)應(yīng)文件,路徑為網(wǎng)站根目錄下douban_cahce
。
不加載插件靜態(tài)文件
如把css 和js 集成到自己的主題中可開啟該選項(xiàng),開啟后插件不會(huì)加載自身的靜態(tài)文件。
Top250
開啟該選項(xiàng)則會(huì)定期同步豆瓣top250 清單,當(dāng)條目在清單中時(shí)展示top250 標(biāo)識(shí)。
注:開啟后不會(huì)馬上同步數(shù)據(jù),需等待下次同步任務(wù)開啟后執(zhí)行,如需立即執(zhí)行可通過禁用再激活插件的方式操作。
文章中引用豆瓣條目卡片
注:因?yàn)槭侵苯釉谖淖种胁迦隓OM 結(jié)構(gòu),卡片的樣式可能會(huì)受到主題文章內(nèi)容樣式影響。
直接在文章中粘貼豆瓣url 即可。注意,鏈接只會(huì)在文章詳情頁(yè)轉(zhuǎn)換卡片,在首頁(yè)和其他列表頁(yè)不會(huì)轉(zhuǎn)換。
支持電影、圖書、音樂、游戲和話劇五種類型。
https://movie.douban.com/subject/35057107/
https://music.douban.com/subject/35807125/
注:豆瓣條目移動(dòng)端url 和PC 端url 并不相同,目前支持PC 端url。
文章中引用時(shí)間段內(nèi)標(biāo)記的內(nèi)容
可通過短代碼的方式,引入最近看過的條目。如有短評(píng)則會(huì)在卡片中展示短評(píng),否則顯示條目默認(rèn)信息。

同一篇文章可插入多個(gè)列表,單列表僅支持一種類型。
[wpc type=movie start=2022-05-01 end=2022-05-22 status=doing]
type
?為條目類型,start
為開始時(shí)間,end
為結(jié)束時(shí)間,可不設(shè)置結(jié)束時(shí)間,未設(shè)置結(jié)束時(shí)間則為開始時(shí)間到現(xiàn)在,時(shí)間格式為年-月-日,格式錯(cuò)誤將無法正常加載數(shù)據(jù)。
type和start兩個(gè)參數(shù)均為必須字段,參數(shù)請(qǐng)按照正確格式設(shè)置,錯(cuò)誤設(shè)置將不會(huì)展示任何數(shù)據(jù)。
新增一個(gè)style參數(shù),設(shè)置為list 的時(shí)候會(huì)按日期列表形式展示。

[wpc type=movie start=2022-05-01 end=2022-05-22 style=list]
新增一個(gè)status參數(shù)為標(biāo)記狀態(tài),分為mark
?想看,doing
?在看和done
?已看,不設(shè)置則展示為已看。
[wpc type=movie start=2022-05-01 status=mark]
在頁(yè)面中展示標(biāo)記列表
同一頁(yè)面僅可調(diào)用一次,多次調(diào)用會(huì)造成數(shù)據(jù)混亂。可同時(shí)傳入多種類型,類型為movie
?時(shí)會(huì)加載電影類型。當(dāng)只有一種類型時(shí)不顯示類型切換菜單。

短代碼方式,多個(gè)類型用,
隔開
[wpd types=movie,book]
函數(shù)方式,參數(shù)為類型數(shù)組。
<?php $WPD = new WPD_Douban(); echo $WPD->render_template(['music', 'book', 'game', 'movie']); ?>
增加一個(gè)按日期歸檔的展示方式

短代碼方式,多個(gè)類型用,
隔開
[wpd types=movie,book style=card]
函數(shù)方式,參數(shù)為類型數(shù)組。
<?php $WPD = new WPD_Douban(); echo $WPD->render_template(['music', 'book', 'game', 'movie'],'card'); ?>
