zoukankan      html  css  js  c++  java
  • 博客园随笔导出CHM

    有过几段时间特别希望能把自己在博客园发布的随笔整理成PDF或CHM之类的电子档。试用了豆约翰博客备份专家、瑞祥博客备份工具、BlogDown、Blog_Backup等备份工具,给我的感觉都不怎样,对于非注册版本导出有限制,而且导出的样式真心觉得丑!
    最近在博客园看到使用CHM文档 采集随笔(续),扒拉下来稍微修改后还真可以使用~.~
    一、针对输入用户名
    输入用户名得到的CHM效果图

    主要修改的部分:
    1、博客园随笔从2013-06-17起(翻看别人的随笔推测的时间点),随笔路径从http://www.cnblogs.com/userId/archive/…调整到http://www.cnblogs.com/userId/p/…,因此源代码中随笔链接的判断需修改。Program.cs->articleUrl.IndexOf
    2、随笔页面底部增加发布时间——G绿框部分;随笔目录页面底部增加生成CHM的时间。Program.cs->channelPubDate、temChild.html->class="postDesc"
    3、随笔页面顶部博文标题——B1蓝框部分,链接修改在浏览器新窗口打开当前博文;随笔页面底部——B2蓝框部分,链接修改在浏览器新窗口打开作者博客园首页。temChild.html->class="postTitle"、temChild.html->class="postDesc"、Program.cs->channelLink
    4、目录分类和分类下的随笔按照采集顺序排列——R红框部分。之前下载的随笔以1.html、2.html、3.html…这样保存,在工具类别的随笔是91.html、92.html、93.html…105.html,通过Directory.GetFiles(path)变成了100.html、101.html、102.html…105.html、91.html、92.html、93.html…99.html。修改本地随笔起始值为10001.html,分类目录参考添加101起始前缀,编译CHM取目录名称时Remove中间三个数字。Program.cs->fileIndex、Program.cs->cateIndex、ChmHelp.cs->string dirname in strDirectories
    存在问题:
    1、能否整合从archive和p目录下查找随笔,这样就不会出现2013-06-17临界点问题
    2、对部分博客皮肤支持不好,同一个UserId使用SimpleBlue可以导出,换成Minyx2_Lite就获取不到
    3、手机端查看CHM文档,发现[返回目录]位置"移动";发布时间底部空白部分过多
    4、部分博客采集生成的随笔标题与正文内容不匹配(例如double-K)
    5、随笔分类和文章分类使用相同的路径(http://www.cnblogs.com/UserID/category/xxxxxx.html)。首页如果显示[文章分类],会以文章的类别名称创建目录,但获取不到其下的文章,文章路径是http://www.cnblogs.com/userId/articles/...;随笔/文章分类下如果没有博文,或者获取不到博文,在随笔目录页面依旧会创建分类目录
    问题3已于20:54 2017/7/13解决,修改temChild.html->class="postTitle"、style.css->.postDesc、common2.css->#cnblogs_post_body p。
    问题1、问题4已于22:33 2017/7/14解决,修改articleUrl.IndexOf添加新目录的判断;修改博文标题和博文地址的取值。
    问题5已于21:17 2017/7/18解决,仅当类别下存在博文时才创建目录,更好的方法是获取博客分类地址时只取随笔分类。
    二、针对博客备份文件
    拖入博客备份的xml得到的CHM效果图

    存在问题:
    1、使用博客备份CNBlogs_BlogBackup_1_xxxx_xxxx.xml,如果随笔标题包含双引号(")、冒号(:)等字符,其在程序中会异常退出,建议修改标题不包含这些字符
    2、由于前面第2步的修改,随笔页面底部的发布时间获取不到
    3、由于前面第4步的修改,编译CHM目录名称进行Remove,导致目录名称不全;另外目录下的随笔直接按博文标题保存,编译CHM取到的随笔顺序有问题。建议在ChmHelp.cs中对Directory.GetFiles(path)、Directory.GetDirectories(path)进行排序
    问题2、问题3已于21:37 2017/7/8解决,主要还是参考输入用户名的取巧方式,详细内容请查看源代码中的注释信息。
    博文发布前已经更新过几版。后续扒别人的博客发现各种瑕疵,然后一遍又一遍地更新(文中标记删除线部分),过于追求完美真的不太好。
    源代码归原作者所有,我只是小打小闹(本人不懂C#,程序有BUG问我也不懂)。最新的[源代码]奉上,再次感谢原作者!有兴趣的可以继续完善,适合自己的才是最好的!


    12:36 2017/7/21 补充,对于data:image/png;base64表示的图片(大菠萝),编译后的CHM在PC端直接打开部分图片显示不了。右击图片属性->地址(URL)与原图片地址对比发现被截断,但在手机端使用阅读器显示正常,并且反编译后从html文件中查看显示也正常。推测是PC端打开CHM的工具导致。
    在线还原Base64编码为图片,使用下面命令反编译.chm文件

    shell> hh -decompile C:UsersAdministratorDesktopCHM C:UsersAdministratorDesktopdiabloxl 博客园随笔.chm

    22:20 2017/7/27 补充,最近博客园部分随笔中的图片加载过慢(7月21号获取博客Uest只需三五分钟,这一周竟然需要三个小时!),很快CMT修复了,但是对应的图片却无法下载。博问中发现贴上去的图片地址在发布后自动变更,通过对比发现替换图片地址的"images.cnitblog.com"为"images0.cnblogs.com"歪打正着就可以下载了。


    16:28 2017/8/8 补充,部分图片尺寸过大,限制图片最大宽度。style.css->IMG {max- 800px}
    15:25 2017/9/30 补充,生成的CHM,二级/三级标题和正文内容"行距"过宽。common2.css->#cnblogs_post_body p {margin: 0px}


    21:47 2017/11/24 更新,随笔页面底部——B2蓝框部分,博文作者由之前的用户名,修改为昵称。Program.cs->postAuthor


    10:06 2017/12/22 更新,添加目录代码,在随笔正文根据二级、三级标题生成目录。ContentList.js、temChild.html


    21:01 2018/5/29 更新,自5月23号起输入用户名无法下载(拖入博客备份文件正常下载),原因是获取的类别链接、随笔链接以https://开头,替换为http://即可。Program.cs->categoryUrl、Program.cs->articleUrl


    23:13 2019/10/26 更新,入口地址更新"http://www.cnblogs.com/" + userId + "/ajax/sidecolumn.aspx";随笔分类正则过滤调整,categoryName去除空格;用户昵称起始位置调整。Program.cs->url、Program.cs->FilterC、Program.cs->AuthorStart


    22:11 2020/02/02 更新,用户昵称起始位置调整。Program.cs->AuthorStart

  • 相关阅读:
    Vue 实时过去 页面宽高
    css 全网页呈现灰色
    Vue 省市区三级联动(基于ElementUI)
    小程序 节流函数 (防止按钮重复点击)
    Vs Code 自动编译TS
    VS2019 调试时出现:正试图在 os 加载程序锁内执行托管代码
    SQLServer 日期函数大全
    SQL 日期函数
    SQL Server 查询性能异常语句
    SQL中多表连接delete删除表数据
  • 原文地址:https://www.cnblogs.com/Uest/p/7136485.html
Copyright © 2011-2022 走看看