掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2379|回复: 4

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

[复制链接]

该用户从未签到

发表于 2017-11-28 09:50:55 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-11-28 09:52 编辑 0 }: Y6 D, X# _: S

% R9 \5 z  B0 g& }8 m4 s  M* b$ [
  m0 F: D) @3 C一个想法,暂未实践。0 i. G3 g: E% j4 e) l: [

4 {* x$ Z  H0 _3 |1 j6 B  Whttps://github.com/evilstreak/markdown-js/2 \7 f2 F- N. U7 I

: o1 @( ?- @6 R) Cnote.md
; \# R/ X. T% r/ L" g/ a; l#词头1( J& v( T$ j9 M0 D" I7 B
……: g7 x: O  h* A# H
#词头21 x. |1 r0 k+ }/ |8 |* @# o
……! ~. q8 V1 r( x, U3 B- K" z$ t6 D) S
#词头3
5 n+ ?$ w+ X! C3 T$ y& P' d/ d; T……
- Q  ^- Q) i! r5 V; c) X8 q& c  q8 b
利用外部程序,查询词头,读取 note.md ,就将词头下的词条内容(Markdown 格式),利用 markdown-js 转为 html ,呈现在 GoldenDict 中。
$ s/ `+ X+ A) M3 s# N$ I
% \4 p% D1 k/ @; |- [8 [用处就是,用 Markdown 做单词笔记,笔记也可以在 GoldenDict 里查,而且笔记内容更新,查到的内容也即时更新。+ q  i9 }5 E" I! C" j

' v% q- ?4 \6 V7 l1 I. y+ e, _当然,本质 note.md 可以是任何格式化良好的文本,类似于自创的词典格式。" N/ k% |+ {1 p. w% e, j

" d+ w; Q/ @# |% V% ?5 D0 y2 {在外部程序那里做做文章,搞搞交互,说不定可以实现在 GoldenDict 里编辑词典内容。
8 I+ t+ c, u8 _7 Q% E! C* S
' E2 {' G7 \' V
  • TA的每日心情
    慵懒
    2021-8-25 10:07
  • 签到天数: 1227 天

    [LV.10]以坛为家III

    发表于 2017-11-30 14:57:57 | 显示全部楼层
    本帖最后由 大橙子 于 2017-11-30 15:12 编辑
    9 p! [/ w0 c- y; s  e/ L( e/ K8 Q  Q- ]/ r. \/ K# I6 i# Z
    按照楼主的思路,成功了 ^_^9 O5 |2 F; s& D

    6 G- p6 ^+ L. J( J5 u# t: K* [可以在词条下面显示针对该词条做的笔记/ C3 ]7 q5 e  i9 Q$ ?
    $ _; B3 R! `9 `% q. e
    4 H7 u1 n9 a- Q" p

    , W! \* g) v* o——————————————————————————————
    & F* _3 m! x  e& [我习惯用 php,贴上我的设置,感兴趣的可自行继续钻研,或自行改成 python 等。3 a1 _3 A# m0 p% ~2 x' `
    补充 :又仔细看了一下,跟楼主说的其实差不少,我根本没用到 md,也不需要调外部 js 转 html。个人需求只要能纯文本记笔记就行了~有类似需求的可以抄,不能满足需求的也请不要喷我,谢谢……
      O; d  P  g4 v" E( @1 j8 S; s# ?/ [  Q
    笔记文件格式如下:
    + E2 D. P$ d& C2 h' c7 u2 L
    1. # 立つ #
      ( M& A  o3 ~  [" S! U$ n
    2. 出发,离开) }2 {+ _  h* M# n* C

    3. 2 n9 a2 Z0 \& c
    4. # 努める #
      # i; w3 b: D7 b/ d+ B1 ]
    5. 努力
      4 L8 X- L7 j& i6 E( J
    复制代码
    2 E1 x3 d9 e5 w
    # N4 B  P& W; C
    php 代码如下:7 @% D* Q, z& Y7 {: }- P/ [" r
    1. <?php
      9 o; G! W2 q, d6 Y) O& Y; ~, D  e
    2. + C$ G. v# e/ O
    3. // 因为 Windows 默认编码是 GB2312,所以本项目全部转换成此编码,包括 php 内部编码、本文件以及 note 文件保存的编码。0 D7 M3 M. \# @* X7 s' W! m" e
    4. // 最后输出时给 GoldenDict 时,不是很懂 GD 的编码机制,反正试验结果是:外部程序类型选纯文本时,必须输出 gb 格式;类型选 html 时,必须转换成 utf-8 输出给它……尝试全部使用 utf-8,但怎么试都是乱码,所以只好过程用 gb,最后一步转成 utf-8 给它。% v/ u% ^1 o4 Z. u
    5. mb_internal_encoding('GB2312');+ f- a! N6 x+ C! M5 f% i: c

    6. ( h6 u; g) G0 i
    7. // 从传过来的参数中获取查询词( k! x' @+ e# \' g. t3 l7 n$ S
    8. $word = $argv[1];+ D0 r% f5 t! Z0 _  t
    9. $ [/ B) c$ ]. G# l
    10. // 读取 note 记录文件,从中寻找该查询词* a- ^, d- ^* `6 [$ ?2 g2 [: ]
    11. $filename = 'E:\mynotes.txt';  //这里换成你的笔记文件地址
      % w$ x, W! _; k$ t- z; M
    12. $content = file_get_contents($filename);
      8 a9 l9 d1 C# Y! [+ H5 {0 O& h& P

    13. 7 S/ h% ?# O( k4 P2 ?: ^8 {4 G( l
    14. $pos = mb_strpos($content, '# '.$word.' #');
        \1 D& R6 d9 S8 L, k
    15. $result = '';- P5 u& d6 ?" h% E* X& p! Y( @

    16. * G, _; _4 M8 p- k
    17. // 如果找到,则提取出对应 note6 Z/ z. A2 \4 e9 c/ H; B6 t
    18. if ($pos !== false) {
      4 o" `! [7 O# c/ v" h1 ~' |9 a
    19.         // 起始处是下一行
      0 R$ Y% r  e7 k( e: ?% s5 T) ]) X
    20.         $start = $pos + 4 + mb_strlen($word);
      ! K. }* p6 P3 b+ S; ?& R9 @/ N2 |
    21.         // 结束处是下一个 '# ' 之前,或文件末尾
      0 t7 H# ^8 r9 m
    22.         $next_pos = mb_strpos($content, '# ', $start);6 W0 @6 S+ S/ G% ?' u9 U* X# f0 ~
    23.         if ($next_pos !== false) {- Z& T) E$ n& Z% w, [0 \: E4 U
    24.                 $result = mb_substr($content, $start, $next_pos - $start);- L8 Z! X6 }5 [' r4 d  f6 u
    25.         } else {1 Q( l$ N1 }& H" X. ~2 d; v! Y( }- F
    26.                 $result = mb_substr($content, $start);& q9 D  M. K) Y) n: p9 r# F& b: B1 R
    27.         }
      ( v; m0 {4 g$ ?
    28. }9 A! k( P6 u" }6 K( S, m- C9 a" L
    29. ; Y2 u) L6 R/ m# k- A# z* j
    30. $result = mb_convert_encoding($result, 'utf-8');
      - t4 _0 D3 o+ [: i
    31. echo $result;
      4 f9 Z' [  |, y7 A6 [

    32. 4 n4 r% J+ r0 y
    33. ?>
    复制代码

    $ e, O, `* G% o8 q2 r
    7 D! v# B, d4 c/ v" y) ?+ b. s# F把上面的 php 代码复制粘贴存成 gd-note.php 文件
    / W" H* k) |* q( W, Q6 _8 I
    6 w+ z( k+ a5 i" O" YGD 里的设置如下:
    $ g4 o$ }6 u, Y3 r1 S, y: {! D$ B! O; D# V7 a

    5 _( y. T, h0 L/ L* v% x2 N: L命令行处写的是:php E:\Develop\Git\gd-note\gd-note.php %GDWORD%
    7 q. k* n) n$ K2 ~# y4 X& g中间的文件地址换成刚才保存的 php 文件的地址。  B" t; Y6 Q2 |; {5 C

    6 z$ S6 `* G5 ^- i所有文件都要存成 gb2312 格式,否则乱码。

    本帖子中包含更多资源

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

    x

    评分

    2

    查看全部评分

    该用户从未签到

    发表于 2017-11-28 10:05:51 | 显示全部楼层
    本帖最后由 henices 于 2017-11-28 10:11 编辑 2 k) p1 |/ j% T/ c
    ; w  ~' Q% ^2 x% }' H1 r- g
    想法是不错,但是就我自己而言笔记都是一大篇的,希望能够重头到尾阅读。
    ) t: k2 c$ X0 |3 z7 `$ X) [我自己记笔记也使用 markdown 格式,O 大的场景应该适用于短篇幅的笔记片段。! N5 w& T: V+ R% n" {# q

    ; k" o# [1 p& j* Vmd 转 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-6 03:46 , Processed in 0.022324 second(s), 24 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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