掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2390|回复: 4

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

[复制链接]

该用户从未签到

发表于 2017-11-28 09:50:55 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-11-28 09:52 编辑
% @. v6 j0 w+ f% f* ~# Q/ h
' B# Q. J, }8 R( t) q4 W) h9 X2 I& G) f0 C
一个想法,暂未实践。
' K3 X/ g" \5 l+ ]6 V0 z. ^1 u0 w+ m: u6 w" g
https://github.com/evilstreak/markdown-js/0 Y/ g$ R* ]/ k+ [2 L) T1 \
; ~( h9 V  V; T8 _
note.md
4 F2 ?" l4 f- j  B2 X3 K3 X7 `#词头1
( S+ w1 o6 X: A7 d( I+ p2 n6 X- F……
6 w0 s/ \/ ?" w9 x#词头2# d) Q5 N- K$ h% _# z; o. f  M
……
. Z) C( z- m& U#词头3- Q( E. i* N7 V5 P0 v, ~3 o  z" g
……3 O! c5 D: V$ B; g
( q6 {4 J* F% a' y# A
利用外部程序,查询词头,读取 note.md ,就将词头下的词条内容(Markdown 格式),利用 markdown-js 转为 html ,呈现在 GoldenDict 中。4 n0 C0 B8 H6 f  g0 g

5 N7 b5 H0 V( d2 M5 j/ W( J用处就是,用 Markdown 做单词笔记,笔记也可以在 GoldenDict 里查,而且笔记内容更新,查到的内容也即时更新。
& h( V* l% W/ Q# G: G% @+ n& l: i1 p; X( v0 F. k. B% D
当然,本质 note.md 可以是任何格式化良好的文本,类似于自创的词典格式。
; Y/ d- f  N" L$ J3 t
' L3 ^+ V+ }5 x! v在外部程序那里做做文章,搞搞交互,说不定可以实现在 GoldenDict 里编辑词典内容。3 X' M# ~) b2 l; G: ?6 u
: Z( ]5 j( @% \& Z6 @5 c
  • TA的每日心情
    慵懒
    2021-8-25 10:07
  • 签到天数: 1227 天

    [LV.10]以坛为家III

    发表于 2017-11-30 14:57:57 | 显示全部楼层
    本帖最后由 大橙子 于 2017-11-30 15:12 编辑
    4 i7 y1 t" B$ i+ B3 s2 q( b4 S3 `/ D. V: n" K
    按照楼主的思路,成功了 ^_^
    3 _) o8 u' I+ C* l/ [4 Q1 Y4 O2 v2 q" s7 G
    可以在词条下面显示针对该词条做的笔记: }: U  e$ I1 [1 R

    + Y% w' V+ F: G9 ~' ?
    5 t9 o: H- I/ ~9 {' @9 j
    7 g% d* \" M* d1 \  ~2 b+ O  m——————————————————————————————
    9 V: l- Q1 e) {, }我习惯用 php,贴上我的设置,感兴趣的可自行继续钻研,或自行改成 python 等。" p8 x# }; }' x$ G4 Z; t
    补充 :又仔细看了一下,跟楼主说的其实差不少,我根本没用到 md,也不需要调外部 js 转 html。个人需求只要能纯文本记笔记就行了~有类似需求的可以抄,不能满足需求的也请不要喷我,谢谢……1 A, `+ w5 S0 j7 s) s8 V1 R
    % ?! k- k5 z! v; ~& D* Q& ?* k
    笔记文件格式如下:5 m- u, u2 V' t; I( ~
    1. # 立つ #/ u, o- V3 A2 y
    2. 出发,离开) x. j( E6 n" ?

    3. 3 B3 b! t& V& h* T  Q; _
    4. # 努める #
      7 w  H& e$ J( i5 Z, ^1 s
    5. 努力% Z3 @7 h; `: G1 l7 I* U  v
    复制代码

    & b8 [* y7 A( \# R" c* k2 D* g" n5 j
    php 代码如下:
    ' i3 b1 n- L- l# d4 F7 s
    1. <?php 0 _6 P  M" _! _. b1 q: _- x: k
    2. 3 T1 ?" Z5 M: p  W8 \3 n# S
    3. // 因为 Windows 默认编码是 GB2312,所以本项目全部转换成此编码,包括 php 内部编码、本文件以及 note 文件保存的编码。
      2 ^% _7 E' d: U' Y) c# s
    4. // 最后输出时给 GoldenDict 时,不是很懂 GD 的编码机制,反正试验结果是:外部程序类型选纯文本时,必须输出 gb 格式;类型选 html 时,必须转换成 utf-8 输出给它……尝试全部使用 utf-8,但怎么试都是乱码,所以只好过程用 gb,最后一步转成 utf-8 给它。
      ( p# e# k1 l+ S5 y6 M5 z
    5. mb_internal_encoding('GB2312');
      + M6 L0 M) S% H8 v

    6. + a- M% w1 ^) R# B8 \7 T
    7. // 从传过来的参数中获取查询词* E& I0 P0 @2 k
    8. $word = $argv[1];% l8 G/ \" w+ Q5 u
    9. / D- n2 ~: h& M. C
    10. // 读取 note 记录文件,从中寻找该查询词
      % f- Z$ O( j9 y1 t
    11. $filename = 'E:\mynotes.txt';  //这里换成你的笔记文件地址" N2 I1 H7 a# m5 G$ D
    12. $content = file_get_contents($filename);$ f# _6 S( x' w0 q1 r! H+ O; _
    13. & N4 \1 W% P* o
    14. $pos = mb_strpos($content, '# '.$word.' #');- [; v0 z# F$ z
    15. $result = '';
      2 k* L4 M+ L2 E
    16. & ]. {( e4 r5 S- f/ S& D
    17. // 如果找到,则提取出对应 note
      ' T# ?% k" k5 Y# _1 J! V
    18. if ($pos !== false) {
      & }3 O; C" Q5 u: W9 I1 Q
    19.         // 起始处是下一行
        D' e9 b# {9 t2 S3 R% C5 R  V# @
    20.         $start = $pos + 4 + mb_strlen($word);
      . I6 G  E1 i( m0 `9 S
    21.         // 结束处是下一个 '# ' 之前,或文件末尾$ P( `& C# Q7 Q; [5 S9 M
    22.         $next_pos = mb_strpos($content, '# ', $start);; T9 ?$ }) t3 h* b2 d
    23.         if ($next_pos !== false) {
      / X( Z) S/ ~& D7 i
    24.                 $result = mb_substr($content, $start, $next_pos - $start);
      ' B. C2 Q& t: g* y! |* T
    25.         } else {% m2 Z! _# e. R7 y# ^( m1 j
    26.                 $result = mb_substr($content, $start);3 a! r9 V" E$ k1 G% h6 N6 z
    27.         }) w: j/ Q; L" n1 H
    28. }% j0 H" ~8 Z# d3 g- I+ c6 j
    29. & _- E( ^4 f8 z6 `, k
    30. $result = mb_convert_encoding($result, 'utf-8');) }8 l+ ~' [: x8 _" ~) q. D
    31. echo $result;
      7 x. ?" [9 S/ a/ e: K- e
    32. * @  v. E& B7 Q3 X5 h' G# {
    33. ?>
    复制代码

    : w6 x& D. K4 }1 Y; Y' g% j4 j
    7 _0 K, Y; m1 s  G; e( h4 q3 T把上面的 php 代码复制粘贴存成 gd-note.php 文件3 L! v+ h( D, }$ }
    % z2 q  K# d: v7 l6 R: c! v
    GD 里的设置如下:
    % `* e. l  E& W) m: h  u9 y! D  {$ `' w/ i
    ' m4 P# g7 Y3 S1 c; @9 ^
    命令行处写的是:php E:\Develop\Git\gd-note\gd-note.php %GDWORD%  f7 z+ D; C# P) D6 @. H9 n' M; U
    中间的文件地址换成刚才保存的 php 文件的地址。9 o9 ?  i) C* v/ T8 `
    ' V9 A& S  A8 g2 k( G- D
    所有文件都要存成 gb2312 格式,否则乱码。

    本帖子中包含更多资源

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

    x

    评分

    2

    查看全部评分

    该用户从未签到

    发表于 2017-11-28 10:05:51 | 显示全部楼层
    本帖最后由 henices 于 2017-11-28 10:11 编辑
    + E8 c, ]5 Q" O5 p( t3 S& {9 v: X( r2 Q! M$ L
    想法是不错,但是就我自己而言笔记都是一大篇的,希望能够重头到尾阅读。
    4 A  l5 b& G, M我自己记笔记也使用 markdown 格式,O 大的场景应该适用于短篇幅的笔记片段。9 F) ^! ~) g& k$ z: O  P1 f

    0 t/ i' ?$ k* |" v- U3 Tmd 转 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-5-17 16:00 , Processed in 0.024516 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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