整理 Kindle 标注、书签和笔记从未如此简单!

Kindle 标注管理应用 Kindle Mate 只支持 Windows,不支持 Mac。标注只是解析我的剪贴文本文件,配合 FileReader API,写个 Chrome 扩展解析文本文件就好了。

初始化项目

安装 React 脚手架 create-react-app

npm i -g create-react-app

初始化项目

create-react-app my-clippings --typescript

--typescript 表示使用 typescript。强烈推荐使用 ts,Vue 3.x 使用 ts 重写,Angular 2.x+ 只能使用 ts,ts 是大势所趋。

删除 src/serviceWorker.ts 文件,用不着。

支持 Sass

安装 node-sass 即可。

若要支持 css modules,文件名从 index.scss 改为 index.module.scss 即可。

npm i -D node-sass

读取文件

读取的文件是 Kindle 中的 /documents/My Clippings.txt 文件,Kindle 设置任何语言都是这个文件。只不过在不同语言下的显示不一样。

使用 FileReader API 可以轻松读取文本文件。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head> <body>
<input type="file" accept=".txt" id="file-upload" />
<script>
const dom = document.querySelector("#file-upload");
dom.onchange = function(event) {
const file = event.currentTarget.files[0];
const reader = new FileReader();
reader.readAsText(file); reader.onload = () => {
const temp = reader.result;
console.log(temp);
};
};
</script>
</body>
</html>

解析文本

要解析的文本为下面的格式,使用简单的正则表达式即可解析。

根据 Kindle 设置的语言,中文与英文的格式会稍有不同,需要做不同的解析。

==========
娱乐至死 (尼尔·波兹曼)
- 您在位置 #1882-1884的标注 | 添加于 2019年6月2日星期日 上午10:07:30 古希腊哲学家在2500年以前就说过,人常常以自己的形象塑造上帝。现在,电视政治又添了新招:那些想当上帝的人把自己塑造成观众期望的形象。
==========
娱乐至死 (尼尔·波兹曼)
- 您在位置 #1925-1927的标注 | 添加于 2019年6月2日星期日 上午10:11:09 历史的消失根本不需要如此残酷的手段,表面温和的现代技术通过为民众提供一种政治形象、瞬间快乐和安慰疗法,能够同样有效地让历史销声匿迹,也许还更恒久,并且不会遭到任何反对。
==========
娱乐至死 (尼尔·波兹曼)
- 您在位置 #1961-1963的标注 | 添加于 2019年6月2日星期日 上午10:14:42 自由不是靠关掉电视实现的。电视对于大多数人来说,是生活中最有吸引力的东西。我们生活在一个绝大多数人不会关掉电视的世界里。如果我们不直接从电视得到某种信息,我们也会通过其他人得到它。
==========

配置 manifest.json

发布 Chrome 应用需要配置 manifest.json 。

更多设置可以查看开发文档

{
"name": "My Clippings", // 扩展名
"short_name": "Clippings",
"description": "Organizing your Kindle Highlight、Bookmark and Notes so easy.", // 描述
"version": "0.0.6", // 版本号,每次提交到 chrome 应用中心
"version_name": "0.0.6",
"manifest_version": 2,
"author": "Steve Xu",
"browser_action": {
// 点击应用图标的操作
"default_icon": "icon-48.png",
"default_title": "My Clippings"
},
"homepage_url": "https://github.com/nusr/my-clippings",
"offline_enabled": true, // 允许离线运行
"permissions": ["activeTab", "tabs", "storage"], // 使用的 chrome 权限
"icons": {
// 图标
"16": "icon-16.png",
"32": "icon-32.png",
"48": "icon-48.png",
"64": "icon-64.png",
"128": "icon-128.png",
"200": "icon-200.png"
},
"content_security_policy": "script-src 'self'; object-src 'self';", // 允许加载的文件
"background": {
"scripts": ["background.js"], // 外部运行的 js
"persistent": false
}
}
// background.js
// 点击扩展图标,打开新的 Tag 页面
function activeNewTab() {
var chrome = window.chrome;
if (!chrome) {
return;
}
chrome.browserAction.onClicked.addListener(function() {
var url = chrome.extension.getURL("index.html");
if (window.tabId) {
chrome.tabs.update(window.tabId, { selected: true });
} else {
chrome.tabs.create({ url: url }, function(tab) {
window.tabId = tab.id;
});
}
});
chrome.tabs.onRemoved.addListener(function(tabId) {
if (tabId === window.tabId) {
window.tabId = null;
}
});
} activeNewTab();

上传到 Chrome 网上应用商店

Chrome 网上应用商店上传地址是 https://chrome.google.com/webstore/developer/dashboard

上传应用需要支付 5 美元的开发者费用。对于没有信用卡的人来说,淘宝可以找到相关代付途径,或者寻求朋友帮助。

支付完成就可以上传应用了,一个账号最多上传 20 个应用。

首发 https://nusr.github.io/

使用 Create-React-App 开发 Chrome 扩展的更多相关文章

  1. 如何扩展 Create React App 的 Webpack 配置

    如何扩展 Create React App 的 Webpack 配置  原文地址https://zhaozhiming.github.io/blog/2018/01/08/create-react-a ...

  2. 开发 chrome 扩展 GitHub-Remarks 的一些想法以及遗憾

    前文 对于单页应用中如何监听 URL 变化的思考 说到我在开发 chrome 扩展 GitHub Remarks 中遇到的一个问题,本文来聊聊开发这个扩展的前后心路历程. 为什么开发这个扩展?前文说到 ...

  3. 使用create react app教程

    This project was bootstrapped with Create React App. Below you will find some information on how to ...

  4. 深入 Create React App 核心概念

    本文差点难产而死.因为总结的过程中,多次怀疑本文是对官方文档的直接翻译和简单诺列:同时官方文档很全面,全范围的介绍无疑加深了写作的心智负担.但在最终的梳理中,发现走出了一条与众不同的路,于是坚持分享出 ...

  5. 在 .NET Core 5 中集成 Create React app

    翻译自 Camilo Reyes 2021年2月22日的文章 <Integrate Create React app with .NET Core 5> [1] Camilo Reyes ...

  6. 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单

    手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单   手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩 ...

  7. tap news:week5 0.0 create react app

    参考https://blog.csdn.net/qtfying/article/details/78665664 先创建文件夹 安装create react app 这个脚手架(facebook官方提 ...

  8. 手把手教你开发chrome扩展

    转载:http://www.cnblogs.com/walkingp/archive/2011/04/04/2003875.html 手把手教你开发chrome扩展一:开发Chrome Extenst ...

  9. 手把手教你开发Chrome扩展三:关于本地存储数据

    手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 HTML5 ...

  10. 手把手教你开发Chrome扩展二:为html添加行为

    手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 上一节我们 ...

随机推荐

  1. Tocmat 统计tomcat进程内的线程数

    获取tomcat进程pid ps -ef | grep tomcat 统计该tomcat进程内的线程个数 ps -Lf  558899 | wc -l

  2. js 计算总页数的最高效方式

    js 计算总页数的最高效方式 /** * [getTotalPageNum 获取页码总数] * @param {[type]} totalRecord [总记录] * @param {[type]} ...

  3. Java基础 awt Font 四种字体样式

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  4. deformable conv

    在原feature map上经过卷积生成与原feature map一样w.h大小的feature map,但是channel变为2倍,即2N.2N代表的是每个像素x.y两个方向的偏移量. 这个偏移量生 ...

  5. SNF-软件开发机器人-免费-火爆登场-程序下载及实战配套教程免费发放

    软件开发机器人不辱使命的完成了在软件开发方面的方式方法,颠覆了传统开发,可零编程开发软件,也可二开更强大功能. 为了更好的了解和理解软件开发机器人我们以模拟用友u8系统部分供应链程序为例进行模拟. 联 ...

  6. [转]manjaro安装vmware虚拟机

    全球领先的信息与通信解决方案供应商华为,近日面向全球ICT从业者,以及有兴趣掌握ICT相关知识的人士,免费推出其图形化网络仿真工具平台—eNSP.该平台通过对真实的网络设备的仿真模拟,帮助广大ICT从 ...

  7. requests库学习案例

    requests库使用流程 使用流程/编码流程 1.指定url 2.基于requests模块发起请求 3.获取响应对象中的数据值 4.持久化存储 分析案例 需求:爬取搜狗首页的页面数据 # 爬取搜狗首 ...

  8. RTSP Spectification

    Refer: https://www.ietf.org/rfc/rfc2326.txt Network Working Group H. SchulzrinneRequest for Comments ...

  9. 通Shell获取Tomcat进程号并杀死进程

    #!/bin/bash echo "begin get tomcat8 pid" tomcat8_id=$( | grep -v grep | awk '{print $2}') ...

  10. Java操作fastDFS

    一.加入Maven依赖 <dependency> <groupId>org.csource</groupId> <artifactId>fastdfs- ...