掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2327|回复: 4

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

[复制链接]

该用户从未签到

发表于 2017-11-28 09:50:55 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-11-28 09:52 编辑
  H+ U& h" h" Y3 R- j$ \+ e2 N
, E9 E+ w. ]1 R$ L: C$ o. C
8 Z' ^- {8 o0 e一个想法,暂未实践。
% \/ D& j/ N; b; H, P' h& ~9 T! w" V9 Y% C
https://github.com/evilstreak/markdown-js/
' H$ X) t: e/ ^% d8 |8 F% u
$ l/ i0 P! M" ^) O) |7 knote.md
4 I9 R) \; i+ _/ J+ m) l0 {9 U1 v: f#词头11 ?& Y. ^2 z0 F# R. s" k& X
……
# w& i% q$ k) w; e$ s/ H8 @  }. v#词头2- P9 |; w. ~2 t* }! n( C% [* L. j
……
1 f0 y# R2 Y' l6 l2 h#词头3
& a. t; U: N7 c- E& s3 d0 ?# h……
  f0 N2 e6 J+ v7 T/ s# j9 J
; p4 W; C6 a- M利用外部程序,查询词头,读取 note.md ,就将词头下的词条内容(Markdown 格式),利用 markdown-js 转为 html ,呈现在 GoldenDict 中。
, @" u8 g, O! J- s% b9 k: \0 E4 }8 _' Z) q6 N+ w4 G
用处就是,用 Markdown 做单词笔记,笔记也可以在 GoldenDict 里查,而且笔记内容更新,查到的内容也即时更新。
9 }/ |. J$ B9 K# @; A
+ M: x* V- m7 y: Q& h当然,本质 note.md 可以是任何格式化良好的文本,类似于自创的词典格式。
, U# X# M. ^- E+ q0 z3 B' ?
; d0 a7 b/ w3 _- ^在外部程序那里做做文章,搞搞交互,说不定可以实现在 GoldenDict 里编辑词典内容。
& k7 [( r! B) D' ^7 g* O8 a! z- ~8 V/ @; r$ B! R: `
  • TA的每日心情
    慵懒
    2021-8-25 10:07
  • 签到天数: 1227 天

    [LV.10]以坛为家III

    发表于 2017-11-30 14:57:57 | 显示全部楼层
    本帖最后由 大橙子 于 2017-11-30 15:12 编辑
    ' n- f" t, Z! U; S$ h6 [5 [; B
    ' \' z, r1 ^+ d2 Z! r9 {按照楼主的思路,成功了 ^_^
    ! n2 s1 }$ S7 E8 B4 V3 ^+ P( J# Q! K2 M9 k- R' `
    可以在词条下面显示针对该词条做的笔记
    , D. p; A7 {+ |% }5 P. p9 H: R' F4 W, r+ x/ A9 |# o. B

    * `5 E9 d4 M# S- X/ j$ ]3 q# v, N
    ——————————————————————————————
    & e3 c' {  K0 M* H* q1 [! u我习惯用 php,贴上我的设置,感兴趣的可自行继续钻研,或自行改成 python 等。
    - c4 o3 _. B& c) X4 ~  ]补充 :又仔细看了一下,跟楼主说的其实差不少,我根本没用到 md,也不需要调外部 js 转 html。个人需求只要能纯文本记笔记就行了~有类似需求的可以抄,不能满足需求的也请不要喷我,谢谢……
    # P! [, i, @  |& {) S
    - i# s' y$ Y3 U; \, y笔记文件格式如下:/ N+ W2 K. v% l5 A& A& J
    1. # 立つ #7 n6 Y9 f4 ?8 U+ I
    2. 出发,离开
      4 ]6 c. \: V5 S( J% D6 A* E: c
    3. ' G6 u# M7 q0 C- E# I% W3 v6 e' C" U
    4. # 努める #
      - h# t: r6 p. n. o  z8 i
    5. 努力8 T" @9 ?& v$ g; b& {! ]8 `
    复制代码

    + [5 ^3 r4 q, Y2 G
    7 K- l( N# R6 \& H/ qphp 代码如下:
    % f+ K- r! I4 y+ i
    1. <?php . h, z' o9 J9 q9 u

    2. 2 E. O' {, M+ M% c2 T8 t
    3. // 因为 Windows 默认编码是 GB2312,所以本项目全部转换成此编码,包括 php 内部编码、本文件以及 note 文件保存的编码。6 G/ @' h3 r# ~( A+ q
    4. // 最后输出时给 GoldenDict 时,不是很懂 GD 的编码机制,反正试验结果是:外部程序类型选纯文本时,必须输出 gb 格式;类型选 html 时,必须转换成 utf-8 输出给它……尝试全部使用 utf-8,但怎么试都是乱码,所以只好过程用 gb,最后一步转成 utf-8 给它。
      1 v* |+ x9 V, U, t' g
    5. mb_internal_encoding('GB2312');
      9 d: Z+ C5 o  G( N! j1 [

    6. ; P( x) w8 V( ^0 E6 g8 Y1 g
    7. // 从传过来的参数中获取查询词$ j2 S$ s8 W- h1 p
    8. $word = $argv[1];
      ( _9 L: {; c4 ]: D$ K) L  R1 w
    9. 2 B2 I7 [. G5 F1 M
    10. // 读取 note 记录文件,从中寻找该查询词& {& |3 |+ A) X. H! B# S! q
    11. $filename = 'E:\mynotes.txt';  //这里换成你的笔记文件地址8 i6 s9 B+ e( F) H0 Q% M- Z! y& B
    12. $content = file_get_contents($filename);
      5 t6 @: I* c) q/ e
    13. ! Q4 y: v3 {9 E( N; B
    14. $pos = mb_strpos($content, '# '.$word.' #');( H( z4 L: ~8 [/ l( u; H* j
    15. $result = '';6 p0 Q& C( M4 L+ R) Z
    16. 2 ~. H4 b5 d& m# t
    17. // 如果找到,则提取出对应 note* s2 l$ Y! ]' D, l3 U3 y$ `
    18. if ($pos !== false) {3 k4 ^" K5 n) b0 o5 A5 Y
    19.         // 起始处是下一行
      % X, x( ^$ m7 o. v+ C$ v
    20.         $start = $pos + 4 + mb_strlen($word);
      % k0 L" t6 q3 ^6 [* E
    21.         // 结束处是下一个 '# ' 之前,或文件末尾
      7 s' ~/ V  B( S) W+ s, m9 G" }
    22.         $next_pos = mb_strpos($content, '# ', $start);
        @+ Q* y- N3 `: q
    23.         if ($next_pos !== false) {
      + x+ s/ z2 e0 q% o
    24.                 $result = mb_substr($content, $start, $next_pos - $start);' G$ z# y) B5 ^2 `$ K1 G& B
    25.         } else {
      # R- w+ a5 P8 x, [
    26.                 $result = mb_substr($content, $start);, }  r) g3 k2 P! b
    27.         }
      , t% a. C. d2 ]
    28. }
      . K6 x! l/ r! e  r! d
    29. & y9 D6 P) H5 d  t
    30. $result = mb_convert_encoding($result, 'utf-8');& @( c  z- }- J& D1 |$ D" n, n2 G
    31. echo $result;
      , b: ?6 I, s6 y4 u

    32. # Z9 ?, h5 g: F6 z8 @
    33. ?>
    复制代码

      D+ E- H' X) d( I$ Q) ~
    ; d6 P, V  P9 [$ B* K5 u' E把上面的 php 代码复制粘贴存成 gd-note.php 文件+ d$ Y" s5 _; G& e+ i+ T  c
    & X5 C; T: s/ ]& {) w: E
    GD 里的设置如下:
      o6 s  d; r+ c9 h% k6 o! R% q& T3 \
    / \9 p8 n$ |. N1 n' J" N& L+ U2 b9 B' v+ ~' ~
    命令行处写的是:php E:\Develop\Git\gd-note\gd-note.php %GDWORD%! j, T" y) g% `. i. `" o
    中间的文件地址换成刚才保存的 php 文件的地址。
    " \" O! f: W  e9 `# |/ ?5 u- A
    所有文件都要存成 gb2312 格式,否则乱码。

    本帖子中包含更多资源

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

    x

    评分

    2

    查看全部评分

    该用户从未签到

    发表于 2017-11-28 10:05:51 | 显示全部楼层
    本帖最后由 henices 于 2017-11-28 10:11 编辑
    ) X, Q5 X1 p  {; s# V3 U4 W" r1 h, U
    9 X9 `* r- F1 B+ r% ~$ S" I$ e$ |想法是不错,但是就我自己而言笔记都是一大篇的,希望能够重头到尾阅读。
    0 n! q; w4 e) [$ E7 `我自己记笔记也使用 markdown 格式,O 大的场景应该适用于短篇幅的笔记片段。
    - |8 ^1 P' O0 f6 O4 R2 A  ]6 S% b  v: T9 s5 K: Z
    md 转 html 推荐使用 pandoc,一个非常 nb 的工具。

    评分

    1

    查看全部评分

    该用户从未签到

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

    [LV.10]以坛为家III

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

    本版积分规则

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

    GMT+8, 2025-4-6 06:30 , Processed in 0.024859 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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