Aeroblast 发表于 2019-12-16 15:32

【凑热闹】MS Edge死了,于是我自己写了一个阅读器

本帖最后由 Aeroblast 于 2020-2-27 01:33 编辑

看到无语佬发帖,俺也顶起旧帖凑个热闹(

手头的Win10机都被废掉了Edge的阅读功能,现在想来写这玩意算是值了。

虽然可能是敝帚自珍,这玩意已经是我PC上默认EPUB浏览的工具了。我认真读书会用kindle,但是快速浏览、拿关键词查剧情之类的都是拿这玩意。
自己也有不满意的地方,还有bug没修,还有想做的功能,但这确实是现有的最接近我理想的PC端阅读器。(改进可能得等我翻完手头的坑吧咕咕咕)
之前水完贴就只自己闷头改,后来只给亲友试用过几下也没再宣传……

几个痛点:日文书正确排版(PC端只见过Edge和BW);查看书籍信息(其实试着写过文件夹管理器插件,但是总崩溃也没解决掉);搜索(看黄书很有用,支持跨行内元素和ruby内容);一些小功能(先看一遍插图之类的)

喜欢一页一页读的可能会失望,我是按着iOS自带阅读器的“滚动显示”做的,分页好麻烦我又不喜欢用(

这是一个Windows桌面软件,使用方法:设为打开方式或将epub拖到exe上打开。
下载请下那个大约50m的。如果下过旧的,可以下那个几十k替换掉exe用。

功能
[*]支持page-progress-direction值rtl (直排)
[*]支持EPUB2/EPUB3目录(点左上角打开目录)
[*]浏览方式为无缝滚动浏览(方向键,触屏拖拽,鼠标滚轮)
[*]弹出式脚注
[*]字号调整
[*]按照书调整语言设置(主要是字体)
[*]主题(默认,暖色,黑色)。选择暖色主题时,图片会被处理以符合背景。
[*]可拖拽的全书进度条
[*]书籍信息
[*]速览插图
[*]搜索

多补几句使用方法:
点左上角打开目录;进度条隐藏在右侧(一般书)/底侧(竖排书),鼠标移上去显示;点空白打开菜单
默认屎黄(Warm),白的(Default)CSS有点问题暂时不推荐。暂时不能记住用户设置,会有的咕咕咕
https://github.com/Aeroblast/AeroEpubViewer/releases


那是一个月黑风高的夜晚(其实没有),k佬在群里发了几本黄书。被UWP QQ的断断续续的下载摧残了一阵,我终于把书下载下来……诶嘿嘿……

——!?
图标不是以往熟悉的蓝色。这是calibre的图标。我马上明白发生了什么。为了防止这件事,至少推迟一些,我特地关掉了Windows更新,看来那不过是徒劳。
即便如此,我还是没有死心,双击了epub文件。跳出来的是选择应用程序——而MS Edge已经不在此列。
回过神来,我心里已经在大喊:

F*ck Microsoft!

以上,是上上周的事情。

骂完了巨硬,日子还得过。虽然日常的阅读都在Kindle和iOS上,对PC端阅读的需求不算太大,但需求确实是有的,比如下载了书先大概看看内容,提取生肉看看有没有问题,以及自动生成的书查错……
虽然想过给calibre相关缺陷贡献代码,但当时遇到的问题似乎不是我能解决的……那么就自己写一个吧。
首先想到的是Electron。毕竟电子书本身就是一个离线网站,拿Web系的技术自然是再合适不过的了,结果……不知道是npm的问题,还是某防火墙的问题,总之开发环境搭建不起来,我又懒得为这点事重装系统……

然后,刚刚过去的周末,我换了个方向,试着用C#+CefSharp(Cef是一个把Chromium嵌入程序的项目)……结果折腾了两天基本能用了!

砍掉阅读功能的是巨硬,让我写代码爽的还是巨硬,我都不知道该说什么好……

目前的程序:https://github.com/Aeroblast/AeroEpubViewer/releases/tag/v0.0.0.1 测试平台Win10 1903
https://i.loli.net/2019/12/16/iMAPgyvVTe2LISN.jpg
照着Apple Books滚动模式做的,支持横排和竖排,以及EPUB2的目录(只能精确到文件orz),目前只能鼠标滚轮(触摸版上下滑动)浏览。
可以看到,目前功能简陋,UI也丑,以及潜伏的大量bug,是真·初期中的初期版本。
不过,只是大概看看内容已经够用了,接下来的开发进度大概会放缓,毕竟有现实的事情还有等着填的坑……所以先发个贴。
下一步计划完善哪些,可以看这个:https://github.com/Aeroblast/AeroEpubViewer/blob/master/to-do.md

以及十分欢迎大佬创建新的分支~

魔改指南:应该只需要 VS2019,点编译会自动下载相关依赖(CefSharp),然后就可以魔改了


mrdog1304 发表于 2019-12-16 16:02

本帖最后由 mrdog1304 于 2019-12-16 16:16 编辑

比较关心k佬发的书是什么
程序貌似没有主界面,只能拖动打开,一开始弄得有点蒙
感觉要好好用的话,进度条和链接跳转还是非常迫切需要的,现在是直接把一整本书都载进来,滚起来实在太累了(能分章节载入也行

yibabilun 发表于 2019-12-16 16:29

支持一下,没了edge确实麻烦
另外划重点,k佬在群里发了几本黄书,emmmmm

Aeroblast 发表于 2019-12-16 16:31

mrdog1304 发表于 2019-12-16 16:02
比较关心k佬发的书是什么
程序貌似没有主界面,只能拖动打开,一开始弄得有点蒙
感觉要好好用的话, ...

好像忘了贴指南
通过第一个命令行参数读入EPUB文件,可以将AeroEpubViewer.exe设置为打开方式。
支持page-progress-direction值rtl。
支持EPUP2.0目录(ncx)(看书的时候点左上角打开目录)
浏览方式为无缝滚动浏览
内存占用大概50~60M。发布档约50M。解压后的二进制占用约200M磁盘空间。
现在是有目录的还好,但是有的生肉目录只给封面和版权页就比较烦……

to-do里标了“难”的其实还没什么明确的思路,进度条可能直接统计文本之类的?嗯……

k佬的书嘛,你去找他报一下性癖,没准会给你几本(

mrdog1304 发表于 2019-12-16 16:47

额,左上角这个做个按钮也好啊,没看说明完全不知道是从这里点出来的

Aeroblast 发表于 2019-12-16 16:51

mrdog1304 发表于 2019-12-16 16:47
额,左上角这个做个按钮也好啊,没看说明完全不知道是从这里点出来的

所以说UI我也没有什么明确的设计思路…下次加个图标或者hover选择器之类的吧
这部分都是html,主要是设计难,实现倒是不难…

bozh 发表于 2019-12-16 18:55

Electɨron⁣⁣

zydxn 发表于 2019-12-16 19:07

你这是造轮子...还是很不完善的那种...
真想推广不如完善下README

lightnovel779 发表于 2019-12-16 19:42

一切由黃書開始。。。。。

這帖子除了罵微軟外,全部看不明白。
但也向各位大佬敬禮。\(>o<)ゞ

a8danny8 发表于 2019-12-16 20:15

我就说这两天AE佬为何自闭了
原来是搞这个
国内的WIN上的阅读器我是用NEATreader,
但某程度上来说日轻那种竖版排版到它里面就突然整成了横排,不习惯。
上标其实都有还算OK
就是开书过程有点慢,我觉得还是喜欢以前的MS edge好,转下一页那丝滑是别的reader无法比拟的。

charlies 发表于 2019-12-16 20:25

论坛技术大佬666!
怀念ms edge的epub功能,最近用的calibre之类的阅读器果然还是不太习惯
ps:很好奇那几本黄书的内容啊

no2body 发表于 2019-12-16 21:38

重点不是应该留下蓝色的东西吗摔(

爱丽丝•莉泽 发表于 2019-12-16 22:01

edge有离线包的 一直能用

设备处理器 发表于 2019-12-16 22:23

大佬,绝对是大佬

ashers 发表于 2019-12-16 22:59

不管做的怎么样,先赞一个

zshxdhm 发表于 2019-12-16 23:29

退软保平安,epub打不开不如拆开看html

bozh 发表于 2019-12-17 10:00

刚想到一种简易实现:基本思路是 local web host

[*]解压 ePub 到临时文件夹
[*]以此目录为根,启动 server, port = (e.g.) 4196
[*]启动你喜欢的浏览器,地址指向 http://[::]:4196

[*]每隔一段时间,前端 GET http://[::]:4196/plus-1-minute
[*]如果后端发现前端不再请求续命,则关闭 server、删除临时文件夹、退出

bozh 发表于 2019-12-17 10:00

刚想到一种简易实现:基本思路是 local web host

[*]解压 ePub 到临时文件夹
[*]以此目录为根,启动 server, port = (e.g.) 4196
[*]启动你喜欢的浏览器,地址指向 http://[::]:4196

[*]每隔一段时间,前端 GET http://[::]:4196/plus-1-minute
[*]如果后端发现前端不再请求续命,则关闭 server、删除临时文件夹、退出

bozh 发表于 2019-12-17 10:00

刚想到一种简易实现:基本思路是 local web host

[*]解压 ePub 到临时文件夹
[*]以此目录为根,启动 server, port = (e.g.) 4196
[*]启动你喜欢的浏览器,地址指向 http://[::]:4196

[*]每隔一段时间,前端 GET http://[::]:4196/plus-1-minute
[*]如果后端发现前端不再请求续命,则关闭 server、删除临时文件夹、退出

Aeroblast 发表于 2019-12-17 11:02

bozh 发表于 2019-12-17 10:00
刚想到一种简易实现:

[*]解压 ePub 到临时文件夹


目前实现的区别大概是没有临时文件,用Cef(Chromium Embedded Framework)的功能注册一个新协议,
拿类似aeroepub://book/OEBPS/Text/001.xhtml 的url运作,
然后用协议的Handler直接返回内存里的数据。

然后我发现只要返回正确的mimetype,Cef都能直接处理css和图片……
剩下的都是html/js/css,最多在返回数据前注入点样式,核心框架其实很简单……
页: [1] 2
查看完整版本: 【凑热闹】MS Edge死了,于是我自己写了一个阅读器