试图同步 Play Books 笔记的失败尝试

一次无果的尝试,但这个过程还是记录下,失败也是积攒经验的一种方式,没准之后我就能解决了呢。

不管 Kindle 还是微信读书都有专属 Obsidian 插件可以无缝同步读书笔记,于是我不甘心地还是想寻觅一个方法能够把 Google Play Books 自动保存的 Google Docs 笔记文件转成 Markdown 也同步到 Obsidian 里。

Day 1

初步想法:

(一)获取 Google Docs API 和 Google Drive API

(二)指定 Google Drive 文件夹 ID 和本地 md 文件夹地址

(三)遍历 Drive 文件夹,获取 Doc 文件的标题和最后修改时间

  • 若本地文件夹不存在同名 md 文档,则创建 md,将从 Docs API 中获得的 JSON 转成 Markdown。
  • 若存在同名文档,比较最后修改时间,若 Doc 晚于 md,更新 md;反之则不操作。

将以上 python 脚本保存后,在 Windows Task Scheduler 中创建新任务,设置定时运行,就可以实现自动更新 Google Play Books 笔记。

让 ChatGPT 老师帮我写完这个 python script 之后我信心满满开始尝试,中途安装了多少 library 也暂且不提,总之无数次操作之后还是频繁报错网络问题,不是 SSL 无法连接就是什么超时,但我单单用 requesthttp://www.google.com 得到的 response.status 明明也是 200,无语问苍天,到底问题出在哪里!很快我的当日免费提问额度用完,我也头晕脑胀,偃旗息鼓,来日再战。

另外通过 API 获取 Docs 的 JSON 数据一点都不简单!存一下 ChatGPT 给的步骤。

Enable Google Docs API

  • Go to the Google Cloud Console.
  • Create a new project or select an existing one.
  • Enable the Google Docs API for your project.

Set Up Credentials

  • In the Google Cloud Console, go to the “Credentials” section.
  • Create OAuth 2.0 credentials.
  • Download the credentials JSON file.

Authorize API and Download Document

Day 2

不死心,我又来了。

既然在本地跑这个脚本有问题,那先试试看 API 能不能获取成功呢?Google 有个 OAuth 2.0 Playground 可以在线测试。ChatGPT 给的教程如下。

Step 1: Open the OAuth 2.0 Playground

  1. Go to the OAuth 2.0 Playground.

Step 2: Configure the Playground

  1. Click on the settings icon (gear) in the upper-right corner.
  2. Check the box for Use your own OAuth credentials.
  3. Input your Client ID and Client Secret obtained from the Google Cloud Console.
  4. Click on Close.

Step 3: Authorize the API Scopes

  1. In the left sidebar, under “Step 1”, find the Google Docs API scopes. You can search for https://www.googleapis.com/auth/> documents.readonly for read-only access.
  2. Click on the scope checkbox to select it.
  3. Click on Authorize APIs.

Step 4: Authenticate

  1. You will be redirected to the Google sign-in page. Sign in with the Google account that has access to the Google Docs you want to > test.
  2. You will be redirected back to the OAuth Playground with an authorization code filled in.

Step 5: Exchange Authorization Code for Tokens

  1. Click on Exchange authorization code for tokens.
  2. The access token and refresh token will be displayed.

Step 6: Make API Requests

  1. Under “Step 3”, set up the request. You will be making a GET request to https://docs.googleapis.com/v1/documents/{documentId}.
  2. Replace {documentId} with the actual ID of the Google Docs document you want to test.
  3. Click on Send the request.

Example API Request and Response

  • Request URL: https://docs.googleapis.com/v1/documents/YOUR_DOCUMENT_ID
  • Response: You will get a JSON response with the document content.

用测试 API 可以正常获得 JSON 数据,不过 Docs 的数据居然有那——么——长,一个很短的文档导出成 JSON 时就已经有快 100 KB ,我真是想得太简单了!格式复杂得让人头晕,而且每个段落对应的 content 内容,中文部分居然全是用 Unicode 显示的!难怪一眼望过去我说怎么一个熟悉的字都没有!

又找了下 GitHub,发现有人写了类似的处理 Google Docs 的工具, Convert a Google Docs file (API response) to Markdown ,等我下次试试看。本次尝试以完美失败告终(苦笑)。

Comments