文章目錄
如何使用 Blogger APIs Client Library for .NET 匯出 Blogger 文章
雖然剛開始決定為自己的開發經驗做些筆記時就已經知道 Blogger 的一些缺點:無法為自訂 domain 加上 https (嘗試過使用 CloudFare ,直到幾個月前已可原生支援),沒有辦法使用 markdown 語法,JS 與 CSS 相對雜亂,但我個人因為太依賴 OpenSearch 這個功能最後還是選擇使用 Blogger 這個平台
不過隨著 DevOps 觀念愈來愈強化,愈來愈覺得自己用 markdown 寫筆記還要手動轉換為 html 來上架至 Blogger 這件事實在不合理,另外有時為了要調整筆記中的幾個錯字或是排版還要考慮是不是要直接透過 Blogger 的 web 介面修改或是應該改原始 markdown 再重新產 html ,為了 Blogger 排版需要的客製 html (e.g. 拿掉 ‘h1’ 標題 - 避免重複,Blogger 原生就會自動加上 ‘h1’ 標題; 加上 ‘繼續閱讀’ 的連結,避免首頁版面太過冗雜),都無形中造成負擔
最後剛好看到 蔡煥麟 老師在 FB 的 貼文 中使用的版型很清爽 讓我下定決心來做改版了
取得 API key
需要已有
Google API Console project
,如果沒有建立過可以至 Google API Console 建立
建立 API key
project –>
憑證
選單 –>憑證
tab –> 建立憑證選擇 API 金鑰
已建立 API 金鑰
取得 API key
安裝套件
Google.Apis.Blogger.v3
我用
1.35.2.111
版Package Manager
Install-Package Google.Apis.Blogger.v3
.NET CLI
dotnet add package Google.Apis.Blogger.v3
取得 Blogger 文章內容
程式碼
//請填 blog id,最簡單的取得進 Blogger 後台網址列就有,也可以由 user 或是 url 查 var blogId = "blogId"; //建立連線資訊,可以用 OAuth,如果只是需要文章內容, apikey 是最容易的 var initializer = new Google.Apis.Services.BaseClientService.Initializer() { ApiKey = "ApiKey" }; //使用上述的連線資訊建立 Blogger service Google.Apis.Blogger.v3.BloggerService service = new Google.Apis.Blogger.v3.BloggerService(initializer); //取得文章內容 service.Posts.List(blogId).ExecuteAsync().Items;
預設取得
10
筆文章
自訂取得文章數目
預設
10
筆紀錄,實在太少,就算有提供取得下一頁資料的 token 在沒有程式碼範例下也很難使用
程式碼
//請填 blog id,最簡單的取得進 Blogger 後台網址列就有,也可以由 user 或是 url 查 var blogId = "blogId"; //建立連線資訊,可以用 OAuth,如果只是需要文章內容, apikey 是最容易的 var initializer = new Google.Apis.Services.BaseClientService.Initializer() { ApiKey = "ApiKey" }; //使用上述的連線資訊建立 Blogger service Google.Apis.Blogger.v3.BloggerService service = new Google.Apis.Blogger.v3.BloggerService(initializer); //透過上面建立的 service 建立文章的 list 物件 Google.Apis.Blogger.v3.PostsResource.ListRequest request = new Google.Apis.Blogger.v3.PostsResource.ListRequest(service, blogId); //指定輸出的文章筆數(service 也有 MaxResults 屬性,但是 readonly) request.MaxResults = 500; //取得指定筆數文章 var listRequestResult = request.ExecuteAsync().GetAwaiter().GetResult().Items;
數量愈大,取得時間也會隨之變長
將 Blogger 文章匯出為 markdown
原本只是想將 Blogger 的一些 metadata 整批輸出成 hugo style,於是便順便嘗試看看 html 轉 markdown 的效果
安裝套件 Html2Markdown
我用
3.2.1.341
版Package Manager
Install-Package Html2Markdown
.NET CLI
dotnet add package Html2Markdown
程式碼
//請填 blog id,最簡單的取得進 Blogger 後台網址列就有,也可以由 user 或是 url 查 var blogId = "blogId"; //建立連線資訊,可以用 OAuth,如果只是需要文章內容, apikey 是最容易的 var initializer = new Google.Apis.Services.BaseClientService.Initializer() { ApiKey = "ApiKey" }; //使用上述的連線資訊建立 Blogger service Google.Apis.Blogger.v3.BloggerService service = new Google.Apis.Blogger.v3.BloggerService(initializer); //透過上面建立的 service 建立文章的 list 物件 Google.Apis.Blogger.v3.PostsResource.ListRequest request = new Google.Apis.Blogger.v3.PostsResource.ListRequest(service, blogId); //指定輸出的文章筆數(service 也有 MaxResults 屬性,但是 readonly) request.MaxResults = 500; //取得指定筆數文章 var listRequestResult = request.ExecuteAsync().GetAwaiter().GetResult().Items; foreach (var item in listRequestResult) { //透過套件將 html 轉為 markdown (new Html2Markdown.Converter()).Convert(item.Content).Dump(); }
心得
原本想透過這個機會順便調整之前筆記的結構,讓整體閱讀更為舒服,但發現工作結束後的晚上時間只夠改版 15 篇筆記實在太花時間了,後來改變策略:打算將 hugo style 的 metadata 產完,再將之前筆記備份的 markdown 貼進去,直到試了 C# 的 Html2Markdown
讓流程更為順暢些,再次感受到略懂程式的喜悅呀
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。