當前位置:成語大全網 - 英語詞典 - 利用 Workflow快速添加 Flashcards 背單詞

利用 Workflow快速添加 Flashcards 背單詞

——寫在文外:按本文內容操作需要壹定動手能力,且準備工作稍復雜,但最終實現效果很便利,可以先看預覽效果感受下。

自從去年重拾日語 (我相信讀者都是理性的,我們只談文化不談政治) ,基本每天都會在微信公眾號 NewsWebEasy [^ NEWS WEB EASY]上看壹篇日語新聞。文章內容雖然用的都是基礎詞匯,但仍會經常遇到生詞。如何快速記錄它們就成為壹件棘手的事。更重要的是,記錄不代表記住,如何復習也是個問題。

有讀者應該已經想到,用 Workflow for iOS 這款效率App。嗯,我也確實這麽做的,不過早期對 Workflow 功能淺嘗輒止,自建的動作也比較低級,遇到生詞復制後運行,跳出輸入框,手動輸入生詞的假名、音調、詞性和解釋,同步到 Evernote。

至於復習,就是經常去翻看記錄的生詞。話雖如此,可是然並卵,首先是會忘記去看,其次隨著記錄的生詞越來越多,打開後看見滿滿的生詞也就不想看了ヾ(。 ̄□ ̄)?゜゜゜。

復制生詞,通知中心運行 Workflow 動作,提取 滬江小D 上該詞相關信息,通過 Quizlet [^ Quizlet] API 添加新的 Flashcard[^ Flashcard]。Flashcards App 根據記憶曲線提醒復習,每次只復習若幹生詞,再也不會被滿屏生詞 KO了。

首先預覽下動作效果,給妳看下去的動力。

先附上 Workflow 動作:動作壹 Quizlet獲取token ;動作二 日語生詞添加Qz

Quizlet 官網註冊普通帳號,打開 開發者網站 (需先認證註冊郵箱) ,按註釋填入表格申請 API Key。

申請完頁面如下,後續用到 Client ID Redirect URI Secret Key

Token Key 獲取的詳細流程和參數說明見 官方文檔 。主要分為三個步驟:

1引導用戶到授權服務器的授權入口。該步只需打開下面鏈接即可。其中 MY_CLIENT_ID 就是前面獲得的 Client ID scope 表示授權第三方的權利範圍,分別為:read、write_set、write_group,這裏需要可讀寫刪除的 write_set 權限; RANDOM_STRING 是任意字符串,用於防止 CSRF 攻擊 (我也不懂什麽鬼) ,搞個隨機數即可。

2打開上述鏈接後詢問是否授權訪問 Quizlet 賬戶,允許後會轉到 Redirect URI 指定的鏈接並附上 code 參數。復制該鏈接並用正則表達式提取 code 。Workflow 動作壹運行如下圖,授權跳轉頁面後 拷貝 (原則上來說,還需要校驗傳回來的 state 參數是否和第壹步傳給服務器的壹致,避免 CSRF 攻擊 。)

3向服務器請求 Token 。 POST 信息按官方要求填入即可。其中 Authorization 壹欄內容為 Basic base64-encoded(Client ID:Secret Key) ,該值可自行轉換,也可用官方轉換好的,詳見 該頁面 Step 2 中的表格最後壹行。

動作壹 會把獲取到的 Token 復制到剪貼板,把該值粘帖到第二個 Workflow 對應項即可。

本文是針對日語單詞,如果是其他語種詞匯,尤其是針對英語,各類詞典 API 還是很豐富的。英語詞匯可考慮添加生詞到扇貝服務器, 詳見此文 。

目前滬江小D未開放查詢 API,只能曲線救國,提取查詢後的網頁信息。滬江小D 查詢鏈接為 /jp/jc/ 中國 ,利用 Get Contents of URL 獲取網頁內容,假名ちゅうごく,音調①、詞性和釋義都在了。

經過多次測試對比,假名和詞性都用“”包含,而音調都在羅馬字發音 (圖中為chuugoku)後面,釋義最好獲取 詳細釋義 後面的第 1、2 條(因為有些詞語詞性後面沒有釋義)。

利用 正則表達式 分別提取需要的內容,表達式具體寫法見 Workflow 動作,不再贅述。需要說明的是:

(1)當網頁中“”壹組也沒有時表示未查找到詞語信息,需要壹個 If 來判斷。

(2)最近更新的 魔法變量(Magic Variable) 雖然能簡化流程,但本動作需要提取多個信息,且需多次用到,如果全部用魔法變量反倒不方便不直觀。

(3)動作中設置了 Show Notification ,便於確認查到的信息,畢竟不是官方 API 支持,有些不常見的生詞無法用正則表達式獲取到正確的信息。

利用 Get Contents of URL POST 詞匯信息到 Quizlet 服務器。其中, Authorization 壹欄填入動作壹中復制的 Token term definition 可以理解為抽認卡的正反面。

圖中 URL 鏈接如下,其中 187957966 是要上傳的 Flashcards 組 ID (不然服務器不知道妳要把新的 Flashcards 添加到哪) 。

如何獲取該 ID 呢,打開 API test 頁面

直接點擊藍色按鈕 Send API Request

彈窗中可以找到 ID,其中 title 對應組名,雙字節字符會重新編號,不易辨認。

Flashcard 上傳成功後會有通知提示,其中 僅供參考 表示滬江小D對該詞僅有基本解釋,無發音等信息,壹般多為專屬詞。僅供參考詞語不會添加到 Flashcards。

需要說明的是,因為非官方 API 支持,所以查詢結果有時會有小 BUG,如果出現煩請告知我。

可以看到,中國這個詞語相關信息已經添加到 Quizlet 了。

可以選擇官方的 Quizlet ,好處是添加新的生詞後刷新下就可以學習了。但我個人在用 Flashcards Deluxe,可設置的選項和主題比較豐富,缺點是需要手動更新 Flashcards,如圖。第三張圖片意思是:詞語會被新的替代,但學習進度保留。

顯示效果下圖

獲取了Quizlet 賬戶完整權限,其實可以作壹個寄生於 Workflow 的小程序,除了添加、還可以刪除、修改,甚至對 Flashcards 批量操作。更多操作請求方法見 官方示例 。

Workflow 是個了不起的應用,不斷更新使得 iOS 能力有了更多可能性。

在編寫本文 Workflow 動作時,也學到了很多新知識,比如正則表達式, OAuth 授權流程。因為不懂 HTTP 請求,在獲取 Token 時走了很多彎路,當經過壹番努力後突然明白了解決了,這種成就感和喜悅之情真是難以言表,簡直太棒了。我想這就是人類不斷探索進取的源動力之壹。

本文 Workflow 動作適合在 iPhone 或 iPad 上閱讀新聞使用,如何把電腦上瀏覽時的日語生詞,快速 & 批量添加到 Quizlet 生成 Flashcards 呢。這個還是看大家對本文的反饋吧,人少就沒必要發了。

[^ NEWS WEB EASY]: NEWS WEB EASY やさしい日本語のニュースです,類似 VOA 慢速英語,NWES WEB EASY 發布的新聞都是用簡單詞匯和基礎語法,便於日語初學者和日本小學生閱讀。

[^ Quizlet]: 在線 Flashcards 網站,提供 iOS 和 android 客戶端。

[^ Flashcard]: Flashcard,即抽認卡 。