掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1861|回复: 4

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

[复制链接]

该用户从未签到

发表于 2017-11-28 09:50:55 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-11-28 09:52 编辑 9 H; ~/ c* ^# T5 n3 _1 Y
6 [/ ]% P" E3 V3 \# Q. `

: t  m5 {  I2 P4 t' O7 b一个想法,暂未实践。9 F. u# {  w( C! G4 A$ Y$ U9 f
4 i6 \0 _- K9 X2 u; n# I2 D5 c
https://github.com/evilstreak/markdown-js/
) L4 q; I  p& t( }! {( M
- m3 o6 q# U  cnote.md( y4 r, {" R1 [- \: N. t
#词头1
6 D  a6 y; J+ Y9 o, m……
' `; N1 h! |# V& R5 [/ r#词头28 J6 z" O; m. Q4 G3 @! K# d$ P
……
$ i( z4 x, b4 h- G8 l#词头3/ z' o& a9 v+ U2 n- [2 d
……, A4 j5 G3 ]- d4 `' @6 V7 e$ Z4 I
$ i2 ]! R" |7 a: w( u
利用外部程序,查询词头,读取 note.md ,就将词头下的词条内容(Markdown 格式),利用 markdown-js 转为 html ,呈现在 GoldenDict 中。
. `! k8 J  d# s' K
4 A9 ]9 O: W9 @1 d5 u1 K用处就是,用 Markdown 做单词笔记,笔记也可以在 GoldenDict 里查,而且笔记内容更新,查到的内容也即时更新。* T+ w- s" g1 z& g7 N' Q4 O
' x. n3 I  t; i, c* E. W
当然,本质 note.md 可以是任何格式化良好的文本,类似于自创的词典格式。, G* G! K2 ?! l) a
  M$ @4 B1 G1 M1 ^0 E- ^
在外部程序那里做做文章,搞搞交互,说不定可以实现在 GoldenDict 里编辑词典内容。6 M" W( v4 f8 T% [. p3 T+ A1 D
$ w' i& H. w- j3 }7 L$ h
  • TA的每日心情
    慵懒
    2021-8-25 10:07
  • 签到天数: 1227 天

    [LV.10]以坛为家III

    发表于 2017-11-30 14:57:57 | 显示全部楼层
    本帖最后由 大橙子 于 2017-11-30 15:12 编辑 + X# D/ g4 _8 I8 R# l
    ) Z0 F: ^" i7 [1 ^! Z
    按照楼主的思路,成功了 ^_^
    / O. H/ C; l0 d0 M' \. l( V, z
    , x* w9 L; n( S$ e! x3 A0 n可以在词条下面显示针对该词条做的笔记! v3 S* _" \7 G" U

    6 Y; ?5 }, k) q4 z7 C# {# Y
    ' Q4 j, ?3 }3 q) H7 D/ H3 Q/ u( F$ |* R( l5 |  @
    ——————————————————————————————+ Q9 {+ y) D+ ~$ Z( w
    我习惯用 php,贴上我的设置,感兴趣的可自行继续钻研,或自行改成 python 等。
    $ [. y$ u7 D0 F! M/ M$ g: W补充 :又仔细看了一下,跟楼主说的其实差不少,我根本没用到 md,也不需要调外部 js 转 html。个人需求只要能纯文本记笔记就行了~有类似需求的可以抄,不能满足需求的也请不要喷我,谢谢……  h9 V- K. T( J  S+ b' D+ h2 b, I

    6 n9 ~0 I* Q( B+ n  q! F0 t" f笔记文件格式如下:
    & y' w- _7 L3 G/ N' N" f; J
    1. # 立つ #
      ! F8 Z6 X0 K( l7 T+ R- [) T
    2. 出发,离开
      4 E5 A( v; _( L. u7 d1 `. d+ p

    3. 2 Q) h, p% k9 q  ^% U
    4. # 努める #  q  E" z4 k0 l6 n6 h4 S
    5. 努力
      ; t" x/ ]# v* w
    复制代码
    " @6 K" r( q( W2 c

    . X# _0 M; z* \& G0 O  b) L6 ?! uphp 代码如下:
      V9 ^0 M) T. w: E* w/ v# X) ~% s: x
    1. <?php
      ( r, B( x! M: Q; D
    2. : r: l0 Y7 F$ z/ I! h
    3. // 因为 Windows 默认编码是 GB2312,所以本项目全部转换成此编码,包括 php 内部编码、本文件以及 note 文件保存的编码。9 T% `$ c! o. @
    4. // 最后输出时给 GoldenDict 时,不是很懂 GD 的编码机制,反正试验结果是:外部程序类型选纯文本时,必须输出 gb 格式;类型选 html 时,必须转换成 utf-8 输出给它……尝试全部使用 utf-8,但怎么试都是乱码,所以只好过程用 gb,最后一步转成 utf-8 给它。
      6 I6 n- c9 m' U$ p
    5. mb_internal_encoding('GB2312');
      ) f/ m2 i/ H' N& w" D0 f& S# n: u* ^

    6. ' Z' }1 E! q0 j. }
    7. // 从传过来的参数中获取查询词6 s+ M5 b. b: o  Z
    8. $word = $argv[1];
      ! J$ C! p; t& `5 @6 a$ C9 O
    9. & ~2 Z* w7 T9 Z; n4 Q; R; i
    10. // 读取 note 记录文件,从中寻找该查询词& {8 [+ \( M7 ^' E& R: M8 w
    11. $filename = 'E:\mynotes.txt';  //这里换成你的笔记文件地址
      7 Q7 _1 A7 _; F9 h, c2 T- x" y
    12. $content = file_get_contents($filename);0 U  D, ~( M. p# L7 o7 n7 w# l

    13. 9 u8 p+ j9 ~! ?& k. e' e4 I, ^+ L  Z
    14. $pos = mb_strpos($content, '# '.$word.' #');0 r6 W1 @: S6 w5 Z
    15. $result = '';
      ' N9 [& o" |& |- U( L6 D. U

    16. ; X$ I. A! `$ z
    17. // 如果找到,则提取出对应 note- T" \/ Z: d( H% ~0 n4 n7 N! O5 |3 F
    18. if ($pos !== false) {
      + O) p7 u! _7 c) v
    19.         // 起始处是下一行
      8 }, [' L9 ?0 R6 ~6 t+ V
    20.         $start = $pos + 4 + mb_strlen($word);. `- R4 q9 q9 S4 ?( A0 I. n8 G
    21.         // 结束处是下一个 '# ' 之前,或文件末尾  r2 s( i* s! ?' u4 {1 n8 C
    22.         $next_pos = mb_strpos($content, '# ', $start);$ q4 i1 \& V5 f+ B
    23.         if ($next_pos !== false) {, o+ c+ s# R/ f, \+ J) e. q& p% ~
    24.                 $result = mb_substr($content, $start, $next_pos - $start);
      4 ]) a* D6 ?! L' w
    25.         } else {: U8 N: r- u* n1 R/ j' H
    26.                 $result = mb_substr($content, $start);
      * p- l% F8 s# U, ^; c6 r1 _
    27.         }
      ' m/ x' V0 ~' W" F, a
    28. }
      + n0 }; }3 T4 m; M% i( s
    29. ! }: J( O7 J7 E
    30. $result = mb_convert_encoding($result, 'utf-8');; z6 D, o8 _2 S* ?1 S: v8 x
    31. echo $result;& z8 A/ Q( e% [
    32. + u! B# X- k  h! C  k, U
    33. ?>
    复制代码
    7 ]! p! M9 w. E2 p& b) t7 e/ V7 A! [8 S+ V
    / H- e: O5 V( _8 i
    把上面的 php 代码复制粘贴存成 gd-note.php 文件
    2 w6 E. L5 C% \* z6 F- T9 A- }* R: V( T$ \7 C$ c" n+ m7 Z& d  m0 A& C5 r
    GD 里的设置如下:
      J9 a/ z2 _; ?1 u7 ?0 n2 d5 a2 C$ d5 ~  K
    ! \  Y$ j3 A$ c+ d* B; ^% f
    命令行处写的是:php E:\Develop\Git\gd-note\gd-note.php %GDWORD%* f: c+ L- K# `, D
    中间的文件地址换成刚才保存的 php 文件的地址。" U5 Q% V2 r  o: h1 i% k
    , }/ ~; @* ~+ ?( G  m1 I, A9 ?
    所有文件都要存成 gb2312 格式,否则乱码。

    本帖子中包含更多资源

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

    x

    评分

    2

    查看全部评分

    该用户从未签到

    发表于 2017-11-28 10:05:51 | 显示全部楼层
    本帖最后由 henices 于 2017-11-28 10:11 编辑
    7 h: e% t4 m' Z) C5 W2 r7 }6 a# w+ ~9 n. P4 j9 [1 G6 `: M
    想法是不错,但是就我自己而言笔记都是一大篇的,希望能够重头到尾阅读。
    2 ~, L& ^! M% v) c( F1 U我自己记笔记也使用 markdown 格式,O 大的场景应该适用于短篇幅的笔记片段。
    ! |& Y7 o& i2 s& y0 f$ q3 U) X$ q, V$ z" M
    md 转 html 推荐使用 pandoc,一个非常 nb 的工具。

    评分

    1

    查看全部评分

    该用户从未签到

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

    [LV.10]以坛为家III

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

    本版积分规则

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

    GMT+8, 2024-4-20 22:52 , Processed in 0.050784 second(s), 11 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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