Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

目录跳转有问题,请求帮忙解决! #1

Closed
cdhigh opened this issue Jul 11, 2013 · 28 comments
Closed

目录跳转有问题,请求帮忙解决! #1

cdhigh opened this issue Jul 11, 2013 · 28 comments

Comments

@cdhigh
Copy link
Owner

cdhigh commented Jul 11, 2013

目前的MOBI生成模块在生成杂志模式MOBI发送到kindle还存在此BUG,请求高人帮忙解决。
问题描述:
目前每次在文章中按“View Sections & Articles”后会跳到目录的第一项,而使用kindlegen和calibre生成的MOBI每次按"View Sections & Articles"都会跳到你正在看的这篇文章对应的目录项。

@cdhigh
Copy link
Owner Author

cdhigh commented Oct 9, 2013

此问题在Kindletouch上不存在,仅kindle3有此问题,而且也没有人帮忙修改,关闭

@cdhigh cdhigh closed this as completed Oct 9, 2013
@fqx
Copy link

fqx commented Oct 9, 2013

paperwhite也有这个问题。

Sent from my iPhone.
Best regards, Xiang.

On Oct 9, 2013, at 6:29 PM, cdhigh notifications@github.com wrote:

此问题在Kindletouch上不存在,仅kindle3有此问题,而且也没有人帮忙修改,关闭


Reply to this email directly or view it on
GitHubhttps://github.com//issues/1#issuecomment-25960916
.

@cdhigh cdhigh reopened this Oct 10, 2013
@rexdf
Copy link
Contributor

rexdf commented Oct 29, 2013

在我的Paperwhite里面也存在,一级目录标题基本都是错的。二级是对的

@cdhigh
Copy link
Owner Author

cdhigh commented Oct 29, 2013

标题是“智能”提取的,有些网站的标题格式太变态了,分析错误是可能的,不过此issue是说跳转的问题。

标题错误是那些网站的错误?怎么过错误法?

@rexdf
Copy link
Contributor

rexdf commented Oct 30, 2013

最显而易见的就是你系统自带的知乎日报,”今日头条“和”今日热闻“,点击”今日热闻“会进入“今日头条“

@cdhigh
Copy link
Owner Author

cdhigh commented Oct 30, 2013

kindleear是特意这样处理的,任何时候都能直接进入文章阅读,即使在一级目录,因为已经有kindle提供的排版精美的主目录了,何必再多此一举,先点一级目录再点二级目录再进文章阅读嘛。

点击一级目录直接进此目录下的第一篇文章(不管层次多深)我认为是对的,至少我自己用起来很方便。

@rexdf
Copy link
Contributor

rexdf commented Oct 31, 2013

我的文章有时候一个目录高达一百多篇,而且好多都是大几十的。那么要看最后的文章就得翻页好久了。实际 上问题是你根本没有跳入目录第一篇文章,在Paperwhite上面触摸是不会跳转的。但是在Calibre里面鼠标点击是跳转第一篇。Paperwhite跳转的永远是所有文章的第一篇文章。Paperwhite实际上还有一个功能就是自动二级目录功能,就是即使你是没有二级目录,系统会生成的。如果缺少二级目录,那么标题上面点击一级目录的时候就会出错。(也就是说你生成的pobi格式应该是有问题的)

狗耳朵里面的三种格式

<select id="format" name="format">
<option value="periodical" selected="selected">kindle期刊自动归档</option>
<option value="book">kindle期刊不自动归档</option>
<option value="epub">ePub</option>
</select>

这个应该算是第二种吧?

@cdhigh
Copy link
Owner Author

cdhigh commented Mar 24, 2014

如果已经修复目录问题,建议pull request,让广大的网友也受益,谢谢!

@rexdf
Copy link
Contributor

rexdf commented Mar 24, 2014

现在我比较疑惑的MOBI periodical index格式到底是怎样的?实际上KindeEar生成了两个目录,其中Table Of Content是在期刊的末尾的。
详细比较下和狗耳朵的区别,狗耳朵开头是一级目录,接下去是二级目录,然后就是所有文章的正文。结尾没有Table Of Content。
KindeEar现在生成的是,开头一级目录(但是指向的文章第一篇),接下去是第一个二级目录,文章;第二个二级目录,文章;……;最后还有个Table Of Content(我觉得是多余的).
KindeEar在KPW上效果是文章缩略图状态下,点击一级目录无法进入二级目录,只能进入一级目录。

不知道清不清楚最近是哪一次更新后,添加了一个二级目录的。我想找找那段代码,实际上只是指向的位置偏后了一点,只要前移一页或者两页应该就好了。

@cdhigh
Copy link
Owner Author

cdhigh commented Mar 24, 2014

你说对了,最后添加的table of contents是没有意义的,
是因为现在目录跳转有问题,导致生成的mobi使用calibre打开时无目录,我尝试了很多方法都无法解决,
有一次我尝试再自己生成一个文本目录插入后,既然在calibre中就有目录了,
所以此TOC只是一个bug的丑陋规避,
如果你解决了目录问题,此TOC就可以去掉

@rexdf
Copy link
Contributor

rexdf commented Mar 28, 2014

不知道content是不是都是完整的html,如果是,用正则取出body部分,合并到一个html,在之间加上id描点。同时在文章之间加上calibre可以认识的分页(这个我目前还不知道怎么搞)。这样再作为manifest和spine插入应该就完美了。同时toc的description,如果有图片最好选第一幅图片,没有则摘取前大约前100字。HTML目录:然后生成一个只有sections的table of contents。其指向另外的sections的article list。article list的链接指向另外的sections-name.html#article_id。
另外不需要再makeoeb里面配置把彩色jpg之类的转换成gif灰度图。
最后一点就是安全问题了,很多操作不需要登陆,而且参数简陋。(当然可以忽略这一点,不做考虑啦!)

@cdhigh
Copy link
Owner Author

cdhigh commented Mar 28, 2014

很好,看看写出来的效果,至于python,简单的编程很容易,如果需要,后续我帮你完善。

至于安全性问题,我想过,之前的参数更复杂,后来才改简单的,考虑是
1 这个网站没有被黑的价值。
2 即使你要不登陆执行一些链接,邮件还是发到网站所有者的邮箱,对攻击者无益。所以除了有朋友们开玩笑恶作剧之类的情况,其实不用担心。

@cdhigh
Copy link
Owner Author

cdhigh commented Apr 4, 2014

@rexdf ,现在的版本修改代码将文章合并(以前的版本是calibre合并)后现在标题字体特别大,能解决吗?

@rexdf
Copy link
Contributor

rexdf commented Apr 4, 2014

你不是已经改成h2了吗?我的pkw还没感觉不正常,我同步你的过来看看,要不修改下css控制?
貌似有几个控制因素,①css直接控制,②customize/profiles.py里面的fsizes我直觉是控制h标题的?
现在我提交了一个新的在WebUI上支持选择设备,然后可以控制导入不同的profile。也不清楚行不行。
要么是因为kpw的dpi比kindle高?另外我怎么感觉Calibre的Kindle设备列表和市场上卖的Kindle设备不一样啊?

@rexdf
Copy link
Contributor

rexdf commented Apr 4, 2014

之前的合并方式,我觉得是有问题的,至少在我的kpw上面不行(所有的一级目录都指向同一个地方)。
因为似乎每个article作为一个manifest(这个结构似乎还在二进制里面)之后,就会发现navPoint class="section"的content src=没有办法表达了。所以对于每个article有一个manifest的,不论是用KindleGen还是Calibre都生成了错误的ncx目录结构(至少对于某些设备不太对)。
navPoint要求的是每个section有一个src,这个src似乎是要求能包含所有的article,而article似乎是href的锚点而已。这样才能体现section包含article的关系。

也就是说section与article的包含关系要体现在src的包含上,src是生成manifest时候生成的。

@cdhigh
Copy link
Owner Author

cdhigh commented Apr 4, 2014

1.之前是H1,很大,我改成H2了,还是很大。
2.serializer.py中将manifest中的文章的body都合并到一起了。
3.你说的目录指向问题在kindle3和kt上都不存在,我没有kpw,不清楚为何有你说的问题,因为section的指向是正确的,指向“每个section”的第一篇文章。

@rexdf
Copy link
Contributor

rexdf commented Apr 4, 2014

要是你找到一个kpw,然后用 http://sphinx.mythic-beasts.com/~mark/random/guardian-for-kindle/ 的试一下就知道多难受了。他有三个section,Main section(92); Sport(21); G2(36),然后假如要看G2有哪些文章会很麻烦。它还是用KindleGen生成的。
Kindle官网的Sample,虽然都是book,但是目录结构都是这种样式的,section要包含article。

另外提出一点就是,一级目录那个下面的description,是指向第一篇article是没有问题的,以前和现在都是这样。应该如果把section的src指向了第一篇article,那么section的范围显然就成了问题。因为我甚至可以把section指向自己胡乱写的一个html,然后kpw似乎就会找不到section到底包含哪些文章。不过换个角度想,似乎kpw不是依靠navpoint的包含关系,而是依靠的链接依赖关系。这似乎是pkw的bug?
但是如果仅仅依靠navpoint的包含关系的话,section甚至不需要src了,因为那个指向第一篇的是没有意义的,我可以指向第二篇、第三篇……甚至自己写一个。

这里强调下kpw有问题的操作是:点击Main section(92)这样的一级目录标题,不是点击description区域,description区域一直都是跳到对应区域的第一篇正文。

@rexdf
Copy link
Contributor

rexdf commented Apr 4, 2014

要么你研究下图形界面Calibre,它抓RSS生成的多section是对的。
目前为止,我找到能够正确生成kpw识别的二级目录有:①狗耳朵,②图形界面Calibre抓RSS,③Amazon官网Sample。

@cdhigh
Copy link
Owner Author

cdhigh commented Apr 4, 2014

我也不知道你修改的版本在Kindle3下面是否正确,一直没有人回复此询问,看来现在使用Kindle3的人很少了,也可以不用管kindle3了,至少现在kt和kpw都正确了,现在的问题就是要将标题大小恢复到之前的情况即可。

@rexdf
Copy link
Contributor

rexdf commented Apr 4, 2014

我大约知道为何图形界面calibre生成正确的目录了,它用的目录:
manifest

<item href="feed_0/index.html" id="id1" media-type="text/html"/>
<item href="feed_0/article_0/index.html" id="id2" media-type="text/html"/>
<item href="feed_0/article_1/index.html" id="id3" media-type="text/html"/>

navpoint依靠conversion/plugin/mobi_ouput.py完成转换,拼接二进制文件的时候,对目录做了包含关系处理,我没法跟踪调试代码。
它使用的是它手动生成的二级目录,我想如果我们也在每个section的article前面插入一个目录html的话,calibre就会知道怎么处理了的。另外生成manifest的时候强制加上双级目录。

如果愿意可以尝试下:
方法:①生成manifest的时候在每个section单独放到一个目录中, id, href = oeb.manifest.generate(id='feed', href='feed%d.html'%itemcnt) 这个地方href写成id, href = oeb.manifest.generate(id='feed', href='feed%d/%d/index.html'(%sec_id,%itemcnt))
②为每个section生成一个目录href='feed%d/index.html'%sec_id
③为根目录生成总目录,href='index.html'
我想这样应该就可以直接利用calibre内部来合并了吧?

@rexdf
Copy link
Contributor

rexdf commented Apr 4, 2014

字体你尝试过改成别的设备吗?我没有kt啊,嗯,对了,我用KindlePreviewer试试,不过它的toc不是完全模拟设备,它像pdf一样弹出目录。调试字体应该没问题

@cdhigh
Copy link
Owner Author

cdhigh commented Apr 4, 2014

之前的版本就是calibre内部帮忙生成的html目录啊
不过你升级时将其屏蔽了

@rexdf
Copy link
Contributor

rexdf commented Apr 4, 2014

因为之前一直二级目录都是不对的,我觉得是不是应该在manifest.generate的时候强制传入section/article/index.html这样的假目录字符,然后calibre就会自动把section合并一起了。。。。
下面是我的标题截图,你的到底有多大?占两行?KindlePreviewer没有kt只有kpw,kd……
screenshot_2014_04_04t22_46_48 0800

@cdhigh
Copy link
Owner Author

cdhigh commented Apr 4, 2014

呵呵,我只有kt了,两个星期之前还有Kindle3,现在就KT了。
现在在kt上看英文,标题一行才显示一个或两个单词,字太大了。

@rexdf
Copy link
Contributor

rexdf commented Apr 4, 2014

我试了下css在我的kpw上面有效
你实验在https://github.com/cdhigh/KindleEar/blob/master/main.py#L886 加上改成.pagebreak{page-break-before: always;} h2{font-size: 100%;}看看有没有变化,如果有再调成120%等,或者用12px。我好像用的12px就发现效果了。
screenshot_2014_04_04t23_25_51 0800

screenshot_2014_04_04t23_31_48 0800

@rexdf
Copy link
Contributor

rexdf commented Apr 4, 2014

已经提交更新了

@cdhigh
Copy link
Owner Author

cdhigh commented Apr 5, 2014

@rexdf 我已经将你增加为collaborator,你可以直接维护Kindleear,下面是几点我维护的惯例:
1 如果config.py变化,则需要升级小版本号,否则根据代码变更多少和重要程度升级修订版本号或小版本号。
2 升级时考虑全球通用,特别是外国用户看不懂注释。如果你能将注释修改为因为则很好了,有老外给我反馈想修改贡献代码,无奈看不懂注释。
3 不要随版本发布很多的内置书籍,内置的书籍之前有典型性或需要写代码定制,否则建议用户将其增加到"自定义rss"
4 增加的功能尽量不影响正常推送的效率,因为GAE有每次任务10分钟的限制
5 升级不要太频繁,以免打扰别人的邮箱太多,也让一些人经常升级影响看书。我喜欢积累一些代码修改后再升级一次,除非有严重影响使用的BUG

1 similar comment
@cdhigh
Copy link
Owner Author

cdhigh commented Apr 5, 2014

@rexdf 我已经将你增加为collaborator,你可以直接维护Kindleear,下面是几点我维护的惯例:
1 如果config.py变化,则需要升级小版本号,否则根据代码变更多少和重要程度升级修订版本号或小版本号。
2 升级时考虑全球通用,特别是外国用户看不懂注释。如果你能将注释修改为因为则很好了,有老外给我反馈想修改贡献代码,无奈看不懂注释。
3 不要随版本发布很多的内置书籍,内置的书籍之前有典型性或需要写代码定制,否则建议用户将其增加到"自定义rss"
4 增加的功能尽量不影响正常推送的效率,因为GAE有每次任务10分钟的限制
5 升级不要太频繁,以免打扰别人的邮箱太多,也让一些人经常升级影响看书。我喜欢积累一些代码修改后再升级一次,除非有严重影响使用的BUG

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants