掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5676|回复: 29

[新版发布] flask-mdict 架设自己的 MDict Web Server

[复制链接]
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

    发表于 2019-3-22 12:21:41 | 显示全部楼层 |阅读模式
    购买主题 已有 92 人购买  本主题需向作者支付 5 粒米 才能浏览

    本帖被以下淘专辑推荐:

    该用户从未签到

    发表于 2019-3-22 13:33:29 | 显示全部楼层
    这就是远程查询嘛,好东东
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

     楼主| 发表于 2021-8-8 13:13:22 | 显示全部楼层
    jutrshjiydx 发表于 2021-8-7 17:34
    5 }% C; o  p8 U# I楼主呀,ubuntu的详细安装教程能不能发个呀?

      [  X1 h" H) _8 C+ h; c7 K/ N6 F8 \+ F' _' K
    ubuntu 更简单,方法更多:
    " Z2 a/ N( S; U' y7 b$ |1 A/ l7 r. R9 \) M# s+ X  f
    1. 打开 terminal 窗口,  安装 apt install python3  python3-pip git unzip wget
    8 e1 j; s, {; N2 K7 p- p9 I8 B& e2. 下载  wget https://github.com/liuyug/flask-mdict/archive/master.zip
    ( N: v# h, Y1 c9 y3.  unzip master.zip .  用 git clone https://github.com/liuyug/flask-mdict/ 也可以
    ) N5 l) b; ?: o+ |5 b0 r6 x8 P; Z4 t; I" ]% C. @5 k
    4. 安装依赖包,pip3 install -r requirements.txt! c! b2 ?" W5 ?+ h/ _
    5.建立 content 目录, mkdir content
    & L) t2 J2 h2 a( Z. m, R/ ^, S7 N/ c) ^% H2 S( l
    6. 下载词频信息  https://github.com/skywind3000/ECDICT/raw/master/ecdict.csv- p0 S3 e' F9 Y4 h2 L

    2 {: M/ w# Q3 U. y! v7.将 ecdict.csv 转换为 sqlite3 格式,ecdict.db, 移动到 content 目录下,如果没有不能显示词频信息,其他不影响
    2 }# U2 p$ Z' l7 u6 \0 v: l
    ( b# P+ v1 ]2 P# N" F2 H) t% a8.将词典文件,mdx/mdd 放到 content 目录下,牛津/朗文/汉典...' ^+ }6 {0 g; B! b/ P+ q
    9. 运行 flask run! V5 K$ ~/ ?# c. c, r9 m0 x
    10. 浏览器访问 http://127.0.0.1:5000/
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

     楼主| 发表于 2019-3-23 20:52:57 | 显示全部楼层
    本帖最后由 zzzz_sleep 于 2019-3-23 20:55 编辑 8 \: d5 J, D* c4 A! _9 F7 K
    Budha 发表于 2019-3-23 17:24. r5 Q) R1 d5 b
    我的意思是我电脑一直开着,我人在外面上班或在外地出差,我远程访问家里的电脑,调用词典,楼主的程序可以 ...
    8 M2 F0 U/ j. X. Q
    可以办到,但主要功能不是我提供的7 @  E! C4 S9 ?% u! I. \
      ?4 O! P3 E- y% \+ O; {' f) L% e
    1. 首先,运行我的程序,家里内网的机器可以正常访问7 P! k, u1 H2 ~: f
    2. 在家里 AP 路由上做地址转换
    , r! u3 v3 {3 I3 F) l# q% h" K    例如,映射外部端口 5000,到家里内网  <pc_ip>:5000+ H( u% c: a2 n

    8 L7 K3 f" W# S9 {; C注意:
    0 H! m4 j$ R) a: [$ c   1. 家里 PC IP 要求是静态 IP,动态 IP (DHCP) 不可以( q, c( n, f7 e; z0 O  S3 Y6 A7 k
       2. 你要知道当前确切的外网地址,即 家里 AP 路由在 Internet 上的 IP 地址。这个地址可能每天都会变化,可以通过 DDNS 解决
      C, ?$ G& Q9 l8 j5 W   3. 映射的外网端口不能是 80,或 443 ,ISP 禁止: w/ b# u7 R8 W! B
    # l" M0 l  \. }6 R9 }8 M4 ?  ]# \
    总之,主要是网络的问题,不是我程序的问题。太多 IT 术语,属于专业问题,没法细说。
    ( T1 @$ E% a* i9 F( V6 J) M2 P+ Q. t; k
  • TA的每日心情
    慵懒
    2020-7-19 14:44
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2019-3-22 16:57:31 | 显示全部楼层
    我按楼主说的flask run运行提示:没有模块 ‘mdict’ pip安装后运行提示 $ j4 w  I6 t: w, e
    AttributeError: module ‘mdict’ has no attribute 'init_app'
    9 u* B: c; t! s9 V$ E: T/ Z: f5 x不能正常访问网页
  • TA的每日心情
    郁闷
    2022-10-17 16:40
  • 签到天数: 415 天

    [LV.9]以坛为家II

    发表于 2019-3-22 20:37:17 | 显示全部楼层
    真的不太懂,本人技术不行,可否简化了发布
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

     楼主| 发表于 2019-3-22 21:00:46 | 显示全部楼层
    本帖最后由 zzzz_sleep 于 2019-3-22 21:27 编辑 8 K1 s+ U% U2 p- p0 @3 S- s6 \/ K- M
    dengao 发表于 2019-3-22 16:57
    7 p  K( ]1 ], F& `4 t+ {我按楼主说的flask run运行提示:没有模块 ‘mdict’ pip安装后运行提示   ?$ n0 A+ _# F
    AttributeError: module ‘mdict ...

    4 }1 X1 e  A2 w+ R. C$ M运行:flask run0 `) Z- F" {" \  M+ f8 I6 Q8 P
    试试
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

     楼主| 发表于 2019-3-22 21:26:58 | 显示全部楼层

    / _' u$ r- i# P1 Y7 f) U/ m- y0 G这个版本有点问题,我已经更新,请重新下载,链接不变
    . d; P% s1 o  f
    1 U- [! I5 ^% X7 z- F/ C% U: z) a( {1 G

    / v; X$ w# d' y' @2 z7 t
  • TA的每日心情
    开心
    2022-6-5 11:40
  • 签到天数: 814 天

    [LV.10]以坛为家III

    发表于 2019-3-23 09:25:12 | 显示全部楼层
    楼主我运行了falsk run 后,访问http://127.0.0.1:5000,屏幕上出现了提示:“127.00.1:5000拒绝了连接,请查看代理服务器和防火墙设置”
  • TA的每日心情
    开心
    2022-6-5 11:40
  • 签到天数: 814 天

    [LV.10]以坛为家III

    发表于 2019-3-23 09:45:42 | 显示全部楼层
    楼主,我刚才没说清楚,我说的是用手机打开http://127.0.0.1:5000,出现了127.0.0.1拒绝连接的提升,可能还要进一步要怎么设置,使我的手机跟电脑处于一个网络?
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

     楼主| 发表于 2019-3-23 13:22:54 | 显示全部楼层
    本帖最后由 zzzz_sleep 于 2019-3-23 13:24 编辑
    7 w+ G5 I3 p3 e) |- ?# _
    Budha 发表于 2019-3-23 09:45
    6 C7 W1 z1 K1 T1 K; ~0 W1 h楼主,我刚才没说清楚,我说的是用手机打开http://127.0.0.1:5000,出现了127.0.0.1拒绝连接的提升,可能还 ...
    * F$ v; t$ |, O/ Q( `
    http://127.0.0.1:5000 只能用本机访问7 ^- r3 z) I8 l5 g4 o" |
    # i$ F: ?: ]) x- r% g
    如果用手机访问,需要改写下 mdict_start.cmd 文件,然后访问你电脑的 http://<your_pc_ip>:5000/
    : e. ^5 k: A; F9 M改为" C5 u- L. r: v" p: i$ L& ~( D
    1. python\scripts\flask.exe run --host 0.0.0.0
    复制代码
    4 o: {2 t( }- b" Y
  • TA的每日心情
    开心
    2022-6-5 11:40
  • 签到天数: 814 天

    [LV.10]以坛为家III

    发表于 2019-3-23 14:44:15 | 显示全部楼层
    我运行绿色版的失败了,我就用第一种方法在本机上访问成功,但在手机上失败,按照第一种方法的话要改啥文件,怎么改?
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

     楼主| 发表于 2019-3-23 15:35:51 | 显示全部楼层
    本帖最后由 zzzz_sleep 于 2019-3-23 15:39 编辑 3 X5 A9 a: m2 t$ B- Q0 m5 y
    Budha 发表于 2019-3-23 14:44
    8 v' x& _0 A! W0 a* o6 U我运行绿色版的失败了,我就用第一种方法在本机上访问成功,但在手机上失败,按照第一种方法的话要改啥文件 ...
    6 ~8 u' `+ {, o* L0 K
    如果你自己安装的 python/flask 运行环境,那么直接运行 flask.exe run --host 0.0.0.0% L9 `, _, `/ C
    , e+ ?$ E, p& a% M
    如果用我提供的运行环境 python\scripts\flask.exe run --host 0.0.0.0, 前面就多个路径) m) t# v* O' p. c1 A2 L2 \# A2 b
    4 m8 H- _% s3 G- H+ W( d: H
    查看您 PC的IP地址,用手机或其他在同一网络的电脑访问 http://<pc_ip>:5000/
    " k! t, P$ s% K, k请重新下载 mdict 源码文件,刚修复一个界面问题。
    8 {9 m7 Q# A8 u5 ^6 r0 C, z) w
  • TA的每日心情
    慵懒
    2020-7-19 14:44
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2019-3-23 15:47:26 | 显示全部楼层
    楼主超赞,多谢搞定了
  • TA的每日心情
    开心
    2022-6-5 11:40
  • 签到天数: 814 天

    [LV.10]以坛为家III

    发表于 2019-3-23 17:24:41 | 显示全部楼层
    我的意思是我电脑一直开着,我人在外面上班或在外地出差,我远程访问家里的电脑,调用词典,楼主的程序可以实现吗?
  • TA的每日心情
    奋斗
    2022-6-1 19:02
  • 签到天数: 377 天

    [LV.9]以坛为家II

    发表于 2019-3-23 19:07:51 | 显示全部楼层
    本帖最后由 simonfire 于 2019-3-23 19:35 编辑
    & H& B: j' D. u; w/ W
    Budha 发表于 2019-3-23 17:24' G  s  P5 y, [1 r/ \' h
    我的意思是我电脑一直开着,我人在外面上班或在外地出差,我远程访问家里的电脑,调用词典,楼主的程序可以 ...
    7 S/ Y: S5 [9 _/ j! Z* d
    这个和程序没关系,关键在于你能不能远程访问家里的电脑
    + y0 n( [7 M0 C) P0 ~8 [% G  q9 P6 v% t0 b+ d1 B
    & I$ Z9 W+ K7 L" K1 `
    在Ubuntu上简单试用了一下,很不错。
    0 r. L0 I+ r% m( `4 }$ ^3 f. J
  • TA的每日心情
    开心
    2019-3-26 21:36
  • 签到天数: 178 天

    [LV.7]常住居民III

    发表于 2019-3-23 23:32:47 | 显示全部楼层
    本帖最后由 流星冲击 于 2019-3-23 23:36 编辑
    % I7 {# U  p6 c& o4 p" s5 V4 D: o2 H' v) K0 q8 ~! d
    词典code一定要规范,是不是做到xhtml标准的那种程度?+ I9 s+ N- U0 v( g
    还有就是,可不可以做成直接支持mdx的txt源码?并且进一步优化源码的支持,例如词头有good|well|best三个同义词,用“|”符号进行分隔,用以替代link@@@的功能,查这三个词都是指向good这个词头,这个功能在babylon、stardict、lingoes都是有的,这个功能对于制作小语种的同义词非常好用。
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

     楼主| 发表于 2019-3-24 05:29:36 | 显示全部楼层
    流星冲击 发表于 2019-3-23 23:32
    * s7 u) Q4 ]6 ]( Z! h1 S, G0 T词典code一定要规范,是不是做到xhtml标准的那种程度?: c0 B% |: X: ?3 W  _1 `9 X, e" s& t
    还有就是,可不可以做成直接支持mdx的txt源码?并且进 ...
    ; D6 R1 w. Q) g5 J1 D! @
    词典code一定要规范,是不是做到xhtml标准的那种程度?
    - p" g: w; K3 W确切的说,是的。因为词典code是 HTML 代码,各大软件都按 XHTML 标准支持,现在是 HTML5,其次再做一些冗余性调整,越规范,兼容性越好。$ j. p: k5 t# g' a9 ]7 _
      a6 x' D( O" F6 o* M# `& u- K
    txt源码没做过,不清楚,但理论上可以,但可能会牺牲通用性。HTML 软件原生支持,TXT 格式千变万化,没有统一标准,支持性就差了
  • TA的每日心情
    开心
    2019-3-26 21:36
  • 签到天数: 178 天

    [LV.7]常住居民III

    发表于 2019-3-24 05:48:07 | 显示全部楼层
    zzzz_sleep 发表于 2019-3-24 05:29& j: O9 a% }7 U4 g/ ]3 [
    词典code一定要规范,是不是做到xhtml标准的那种程度?
    ( A* v( y7 t3 W确切的说,是的。因为词典code是 HTML 代码,各大 ...
    0 R* _: k) d7 V; ?5 W
    mdx源码的txt都是有规律的,利用正则可以提取词头生成索引,txt文件太大,可以用dictzip压缩成dz(gzip文件)然后读取内容。
  • TA的每日心情
    开心
    2022-6-5 11:40
  • 签到天数: 814 天

    [LV.10]以坛为家III

    发表于 2019-3-24 07:37:11 | 显示全部楼层
    zzzz_sleep 发表于 2019-3-23 20:52
    4 e6 H/ Z( h; q; s' h) ^可以办到,但主要功能不是我提供的8 ?4 H* {/ O; |: `$ M4 Y9 H8 r" n: _
    % q* N4 O' L; W! e; C
    1. 首先,运行我的程序,家里内网的机器可以正常访问

    / Q. D6 e$ W# ?  {+ Q0 h谢谢楼主解答,我家里的电脑是直接连在“光猫”上,500M的宽带,一个月1T流量后会降到300M,这是个基本情况,这样设置的话是不是要简单点?
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

     楼主| 发表于 2019-3-24 11:09:59 | 显示全部楼层
    Budha 发表于 2019-3-24 07:371 n. f5 [" l* }& I0 W
    谢谢楼主解答,我家里的电脑是直接连在“光猫”上,500M的宽带,一个月1T流量后会降到300M,这是个基本情 ...

    $ |. P, x4 X5 F/ ~6 F, w) `" k6 r7 `7 l3 M( o3 s
    是简单些,但是会危险些
    9 U  F4 B( o6 `. g8 U- r/ C1 F5 f" W( H
    简单:
    9 p$ P4 Z0 C  u1 E直接连光猫上,PC 是需要拨号才能上网吧,查看拨号后的IP,应当是 Internet 公网IP,直接用手机访问这个 公网 IP 加 5000,即可。不需要网络端口映射" \! q% D1 @( p
    5 v- G. K) w* s$ Y& p
    危险:
    / U- P! m  P: Q* YPC 直连到 Internet 上,没有经过防火墙隔离(Windows自带的不算)容易招到网络攻击,windows 补丁不能及时更新,容易被人攻入
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

     楼主| 发表于 2019-3-24 11:18:08 | 显示全部楼层
    流星冲击 发表于 2019-3-24 05:48# k! ]# L( u1 w) J) P+ z' x' i
    mdx源码的txt都是有规律的,利用正则可以提取词头生成索引,txt文件太大,可以用dictzip压缩成dz(gzip文 ...
    # c* b0 o2 R: O" S% `0 Q3 f8 t7 L$ D
    是可以生成索引,直接显示,但 TXT 格式变化有限,不支持字体,颜色,排版等复杂需求,直接显示到用户终端很丑陋,需要根据 TXT 指令转换为复杂的 HTML 格式才能解决。
    4 u( ~# x" n+ @9 k
    0 O# r! y; a  @2 O% p5 G5 S* S8 `这个转换可以动态转换,即显示一个词条时,先将 TXT 转换为 HTML,再显示
      k7 j# B+ x+ J6 Y4 A静态转换,先全部转换 TXT 格式到 HTML,显示时直接传递% W$ o. _+ c$ E' D" B( B6 a$ E

    * E! t1 t3 O" S+ W- m* j/ I2 N' H显然第二种方法更有效率,用户体验更好。
    # c  H; P! m0 `! E) q% _
  • TA的每日心情
    开心
    2022-6-5 11:40
  • 签到天数: 814 天

    [LV.10]以坛为家III

    发表于 2019-3-24 13:16:05 | 显示全部楼层
    zzzz_sleep 发表于 2019-3-24 11:09) y2 S1 j2 \) `0 x- W1 a/ V0 a
    是简单些,但是会危险些# p  u( l) ~2 _5 i& s
    ) A0 d1 a- s& @- S( i  N
    简单:

    9 B+ N% U4 r7 t0 Q2 y我看了下一共有5个地址
    4 G2 O2 x+ B! {+ Z$ t0 `1.物理(mac)地址# @9 |" H6 @7 p1 H+ Y
    2.ipv4地址
    - E( l5 p7 X4 U9 ], O# }# i3.ipv6地址( R8 |: r* h2 K) V0 q4 m. I
    4.默认网关
    , F9 H2 m1 B% X8 j+ ]; e' g! F5.dns服务器
    . W) b* K1 s) o% i% O# U4 n) ]我再手机上应该在哪个地址后加5000?
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

     楼主| 发表于 2019-3-25 05:57:49 | 显示全部楼层
    Budha 发表于 2019-3-24 13:16
    ( H  B- l! e5 T6 K! {, c3 h* a我看了下一共有5个地址
    & n, T8 Q% H# b2 ^3 ?! ]1.物理(mac)地址
    4 ]' k, \& a3 F" V2.ipv4地址

    / X. n) ?+ ]' m( A; v" C2.ipv4地址& w$ M- L- E- v+ t

    + H* ^8 t" }4 w, |( ]5 Lipv4:5000
  • TA的每日心情
    开心
    2021-4-11 18:44
  • 签到天数: 88 天

    [LV.6]常住居民II

    发表于 2019-6-22 23:07:37 | 显示全部楼层
    这么巧? 昨天顺手自己写了一个django版的。哈哈。仅仅支持txt,每次查询都动态生成转成html条目。就不发表了。
  • TA的每日心情
    开心
    2024-4-13 19:35
  • 签到天数: 679 天

    [LV.9]以坛为家II

    发表于 2020-12-2 15:29:41 | 显示全部楼层
    谢谢,下来看看!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-27 16:47 , Processed in 0.146213 second(s), 14 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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