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

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

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

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

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

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

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

