整理 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. 一个按权重(weight)进行LB的算法

    package netty; import com.google.common.collect.ImmutableList; import lombok.SneakyThrows; import ja ...

  2. Navicat 12.x for MySQL最新版安装破解教程(附安装包和注册机,全网独家可用

    title: "Navicat 12.x for MySQL最新版安装破解教程(附安装包和注册机,全网独家可用" categories: soft tags: soft autho ...

  3. 数码视讯Q7的刷机

    Q7的硬件配置 CPU: S905LRAM: MIRA P3P4GF4DMF DDR3 512MB * 2 = 1GBROM: 镁光29F64G08CBABB * 1 = 8GBWIFI: RTL81 ...

  4. Kafka安装教程(详细过程)

    安装前期准备: 1,准备三个节点(根据自己需求决定) 2,三个节点上安装好zookeeper(也可以使用kafka自带的zookeeper) 3,关闭防火墙 chkconfig  iptables o ...

  5. [转]docx4j实现动态表格(模板式)

    原文地址:https://chendd.cn/information/viewInformation/other/257.a 除了前篇文章中讲到的编程式创建表格外,基于模板实现的列表表格也是非常常用或 ...

  6. 如何使用phantomJS来模拟一个HTML元素的鼠标悬停

    如何使用phantomJS来模拟一个HTML元素的鼠标悬停 (How to use phantomJS to simulate mouse hover on a HTML element) 转 htt ...

  7. java8学习

    1.Function函数 public static void main(String[] args) { TestController t = new TestController(); new T ...

  8. Eclipse 修改(重定向)SVN地址

    由于SVN服务器IP变了,需要重定向SVN的路径 1.点击右上角1位置的按钮,然后选择需要打开的窗口(SVN资源库) 2.右击SVN资源库中的项目,选择重定向,然后修改新的URL即可 1. 进入本地s ...

  9. 连接ftp服务器 JDK 1.7

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F ...

  10. postman 用环境变量Environment实现多服务器版本

    现存问题 在测试API期间,往往存在多种环境,对应IP地址(或域名也不同) 比如: Prod: http://116.62.25.57/ucows 用于开发完成发布到生产环境 Dev: http:// ...