掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 3224|回复: 4

[经验交流] GoldenDict + Markdown(or 任何格式化良好的文本)

[复制链接]

该用户从未签到

发表于 2017-11-28 09:50:55 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-11-28 09:52 编辑
  b8 Z, ]. H# a) Y& ]2 g3 x+ `, D9 o" B/ D4 r* X3 ^; r

) _1 ~+ U/ _" Y2 r6 |+ l$ x一个想法,暂未实践。9 S& P0 F/ L: K9 T% q
" [( c8 v' T8 o% E% H9 F( X
https://github.com/evilstreak/markdown-js/
. \/ D* A( R' d7 ^+ d: a% e/ J3 U( T0 ~7 `. \/ ^; b3 C, l- ~% w8 f
note.md
/ G, A5 \4 Y2 D. _; x* v#词头1- J3 t" I: }( }
……
: Z+ h1 V) \' w/ {9 ]#词头20 k7 H/ a$ @5 L$ c
……& _: j3 x  b9 l" K4 [
#词头3
8 r& g8 K# R$ d$ e- U……7 S: y! J4 e4 m8 ]
% I' k, P  O$ O" a
利用外部程序,查询词头,读取 note.md ,就将词头下的词条内容(Markdown 格式),利用 markdown-js 转为 html ,呈现在 GoldenDict 中。
5 j, j3 D' L; W3 N- ?0 u+ U
& t# ]# {2 y/ n( N用处就是,用 Markdown 做单词笔记,笔记也可以在 GoldenDict 里查,而且笔记内容更新,查到的内容也即时更新。; N# m+ l/ H. y6 d. W

0 D% ~+ R0 [3 s当然,本质 note.md 可以是任何格式化良好的文本,类似于自创的词典格式。; W' ~. ]! D) F  X! m

0 \* Q" e  Q; w在外部程序那里做做文章,搞搞交互,说不定可以实现在 GoldenDict 里编辑词典内容。% x$ S7 ]  z% F* i4 c
/ ?' k  ]! {9 e0 Q
  • TA的每日心情
    慵懒
    2021-8-25 10:07
  • 签到天数: 1227 天

    [LV.10]以坛为家III

    发表于 2017-11-30 14:57:57 | 显示全部楼层
    本帖最后由 大橙子 于 2017-11-30 15:12 编辑
    8 n  q8 ]7 L) \. Z7 t5 A! R* B4 c1 H9 w+ `1 N8 B) j
    按照楼主的思路,成功了 ^_^  G2 d9 t5 R# Z
    0 S& \9 }% n9 D( v: D$ `+ G
    可以在词条下面显示针对该词条做的笔记4 o. q, o' ?! O5 v- P3 \  x  q5 {

    0 B, C/ {' k0 ?* ^$ z0 s
    7 n- e: ^: G" J: e+ Q
    8 b8 D7 F7 }8 T0 E1 Z——————————————————————————————; V+ U/ j& ?9 F/ A% D2 y% R
    我习惯用 php,贴上我的设置,感兴趣的可自行继续钻研,或自行改成 python 等。, O9 L* Z6 d/ c
    补充 :又仔细看了一下,跟楼主说的其实差不少,我根本没用到 md,也不需要调外部 js 转 html。个人需求只要能纯文本记笔记就行了~有类似需求的可以抄,不能满足需求的也请不要喷我,谢谢……: h- K4 u5 z0 D* V, L+ g, N/ @

    ! [/ _" o. C5 n4 [, h7 v笔记文件格式如下:' @! H9 Z4 I- F: D/ E+ |  c
    1. # 立つ #' S# \+ a* }4 j( c, l
    2. 出发,离开5 |# O6 r4 n! ^2 l5 g' W1 z
    3. ! M2 W- ?/ c) k1 U  [! p9 g
    4. # 努める #) X! \3 M$ T$ n; \; a4 @% d5 e
    5. 努力* [, g$ k; `& N' V
    复制代码

    " {1 X/ x4 i& Y# M
    - Z3 B1 m( @' s3 ~php 代码如下:/ p6 d# \2 z7 H
    1. <?php * V7 I" |; N' J, K: E2 m" x- L

    2. 8 s- d0 m5 E& ~+ j5 @6 j4 x
    3. // 因为 Windows 默认编码是 GB2312,所以本项目全部转换成此编码,包括 php 内部编码、本文件以及 note 文件保存的编码。7 a5 b5 U" Z* @- }9 d$ _
    4. // 最后输出时给 GoldenDict 时,不是很懂 GD 的编码机制,反正试验结果是:外部程序类型选纯文本时,必须输出 gb 格式;类型选 html 时,必须转换成 utf-8 输出给它……尝试全部使用 utf-8,但怎么试都是乱码,所以只好过程用 gb,最后一步转成 utf-8 给它。- {) U! a- Q; Z
    5. mb_internal_encoding('GB2312');
      3 L; I5 l0 Q3 i' w9 x! t, m) Q

    6.   b" g  T! \2 S/ G. k: V+ ~
    7. // 从传过来的参数中获取查询词
      5 j0 {. r$ |* P$ g+ O  U
    8. $word = $argv[1];- E( _6 o8 {) h. Y3 s- d

    9. % s- J1 F4 U2 q4 v; i
    10. // 读取 note 记录文件,从中寻找该查询词
      7 G1 x7 q9 B$ S) [  p3 L
    11. $filename = 'E:\mynotes.txt';  //这里换成你的笔记文件地址5 v( a+ l6 d; _/ c
    12. $content = file_get_contents($filename);
      4 o" x2 _4 f0 T& B
    13. 9 H  h) F' B* {6 e2 t) l! y
    14. $pos = mb_strpos($content, '# '.$word.' #');: k: b" U. p& I6 J
    15. $result = '';
        r7 |9 S  ?% h) c

    16.   g0 B  d6 }7 A/ f" y* I8 t" i1 j
    17. // 如果找到,则提取出对应 note
      + P2 [6 |1 U2 y. |; l
    18. if ($pos !== false) {
      . F; v' d9 G- _$ t. ^4 Z
    19.         // 起始处是下一行
      - F  h9 e! E1 Q1 q6 d
    20.         $start = $pos + 4 + mb_strlen($word);
      1 d" ?8 [- ]: D7 b3 k' {8 f$ k! g
    21.         // 结束处是下一个 '# ' 之前,或文件末尾9 V2 }5 L/ u$ V5 I
    22.         $next_pos = mb_strpos($content, '# ', $start);
      % n; ]# D: e( `
    23.         if ($next_pos !== false) {
      + ?6 A* }! t& p  s
    24.                 $result = mb_substr($content, $start, $next_pos - $start);
      , c6 d% _( Q6 K+ t' D
    25.         } else {- }# [, d$ ^, Q7 w( h
    26.                 $result = mb_substr($content, $start);$ K( S- ~( t9 C+ o, D
    27.         }
      7 T9 H+ ^8 J1 C( e3 J  j$ q
    28. }
      # l5 V. ]" l0 ~- Y6 I

    29. # |4 ~6 N" G; c6 H
    30. $result = mb_convert_encoding($result, 'utf-8');0 o2 _+ |, k9 @; i5 V& @
    31. echo $result;1 x( a7 `0 j$ Q+ h* I

    32. 9 w% f$ X# ?% j# s( t: W+ Y
    33. ?>
    复制代码

    ( X1 L( o6 Y" ~
    + _2 Z/ t5 h' S0 \. J把上面的 php 代码复制粘贴存成 gd-note.php 文件' C" y" r; l8 h- F) F; j# g

    $ Q3 \' {2 p6 _1 u, vGD 里的设置如下:
    ' n1 l4 N. A. F! K  w
    1 n2 F; b4 c/ g9 V0 w
    3 m! t+ L+ H" K命令行处写的是:php E:\Develop\Git\gd-note\gd-note.php %GDWORD%6 U' D8 T( T: v9 C
    中间的文件地址换成刚才保存的 php 文件的地址。
    . r5 x' c- i/ Y6 F/ t4 v
    ) J; b' D& ~4 c+ o+ a+ d4 ?1 z1 }所有文件都要存成 gb2312 格式,否则乱码。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

    x

    评分

    2

    查看全部评分

    该用户从未签到

    发表于 2017-11-28 10:05:51 | 显示全部楼层
    本帖最后由 henices 于 2017-11-28 10:11 编辑 ) A0 S/ c& J" a" e2 r! l

    $ z: D# b% r: L$ O想法是不错,但是就我自己而言笔记都是一大篇的,希望能够重头到尾阅读。
    ' |, `, r$ J/ h6 W* b8 W* e我自己记笔记也使用 markdown 格式,O 大的场景应该适用于短篇幅的笔记片段。
    ) @; w  d4 ]4 ?
    , r. [  Z8 m5 N3 R% q& qmd 转 html 推荐使用 pandoc,一个非常 nb 的工具。

    评分

    1

    查看全部评分

    该用户从未签到

    发表于 2017-11-28 20:18:44 | 显示全部楼层
    什么时候能实现,期待呀?就差一个能在GoldenDict或其他词典软件中编辑词条的插件了。
  • TA的每日心情
    开心
    昨天 16:36
  • 签到天数: 798 天

    [LV.10]以坛为家III

    发表于 2017-11-28 21:06:07 | 显示全部楼层
    其实自己还可以定义一个数据格式,加密都没问题
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2026-7-18 17:51 , Processed in 0.019339 second(s), 24 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表