掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5533|回复: 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
    4 T/ Q! P! e9 X楼主呀,ubuntu的详细安装教程能不能发个呀?
    : F4 j, e* X' ?4 I

    - _. U7 ^, P- j" Q9 qubuntu 更简单,方法更多:' p6 p* _. u5 r/ p& l8 E

      y3 j# b6 g$ V& E. d1 ?1. 打开 terminal 窗口,  安装 apt install python3  python3-pip git unzip wget9 ~9 d& l" Q" C; p
    2. 下载  wget https://github.com/liuyug/flask-mdict/archive/master.zip
    ( Z0 i, a+ e% J+ l3 F3 i; u- J3.  unzip master.zip .  用 git clone https://github.com/liuyug/flask-mdict/ 也可以+ `9 y5 z( t  X! I  R  r. f2 e8 t/ Z
    3 [, Q# ~4 h. C: v) n6 a
    4. 安装依赖包,pip3 install -r requirements.txt& u. C7 p" U6 ?9 g/ i; G0 p& q2 f4 P) J
    5.建立 content 目录, mkdir content& G( S0 M% d& ^2 ?

    8 r7 N) Q( l" \  x6. 下载词频信息  https://github.com/skywind3000/ECDICT/raw/master/ecdict.csv7 R8 J! j' o9 k: b, A( @

    ' d  ]+ `( c% T: c0 J2 Z. }, l$ g7.将 ecdict.csv 转换为 sqlite3 格式,ecdict.db, 移动到 content 目录下,如果没有不能显示词频信息,其他不影响
    0 m8 U) g" k+ v$ g; ]) \
      c1 M" g6 B3 O3 G& m* }8.将词典文件,mdx/mdd 放到 content 目录下,牛津/朗文/汉典...
    8 e8 N" Z( k! W: i* J* S1 c9. 运行 flask run
    5 i- z6 e/ w6 r8 o! }- V10. 浏览器访问 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 编辑
    ; D: G( r4 P4 q" F
    Budha 发表于 2019-3-23 17:24" t" T7 \6 _+ ~* V
    我的意思是我电脑一直开着,我人在外面上班或在外地出差,我远程访问家里的电脑,调用词典,楼主的程序可以 ...

    $ `0 Q( w6 Q! z4 j可以办到,但主要功能不是我提供的6 o7 u% a' Q+ u- h2 h1 N
    ( M. E8 M) ?  c8 ^& {4 E
    1. 首先,运行我的程序,家里内网的机器可以正常访问
    * j) m3 C% s2 P& }* {5 v2. 在家里 AP 路由上做地址转换
    & h3 T  m6 |0 i0 l- f! D& p    例如,映射外部端口 5000,到家里内网  <pc_ip>:5000
    ' Q" M4 x2 S  C# `' y  q- C, c; P& B6 r4 ~6 c
    注意:
    6 _1 g3 R' i5 k! @$ E& C   1. 家里 PC IP 要求是静态 IP,动态 IP (DHCP) 不可以: h$ x. Z6 c* L9 d/ s$ I% J  j
       2. 你要知道当前确切的外网地址,即 家里 AP 路由在 Internet 上的 IP 地址。这个地址可能每天都会变化,可以通过 DDNS 解决
    " ~0 v4 J' U- W4 G0 R- {   3. 映射的外网端口不能是 80,或 443 ,ISP 禁止" o( M5 |. s- b* v5 A4 X. f, M
    $ h# ?1 Y" ?1 \
    总之,主要是网络的问题,不是我程序的问题。太多 IT 术语,属于专业问题,没法细说。
    : M. a& f6 m# w2 n
    . H9 ?) x( ^; [/ i7 V/ g: i
  • TA的每日心情
    慵懒
    2020-7-19 14:44
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2019-3-22 16:57:31 | 显示全部楼层
    我按楼主说的flask run运行提示:没有模块 ‘mdict’ pip安装后运行提示
    3 T; u% r5 z2 gAttributeError: module ‘mdict’ has no attribute 'init_app'
    1 b% H9 S9 B) K1 n7 Y) M不能正常访问网页
  • 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 编辑
    : X1 z! @7 Z, L# M8 C# s8 N
    dengao 发表于 2019-3-22 16:575 n6 F8 Q+ X* I. ^
    我按楼主说的flask run运行提示:没有模块 ‘mdict’ pip安装后运行提示 3 I( u7 \  V4 F, h
    AttributeError: module ‘mdict ...
    ) n1 J7 H2 D4 t7 j% c4 X8 E" o" y
    运行:flask run  [6 T6 w8 @" C* ]# t3 J) u
    试试
  • TA的每日心情

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

    [LV.7]常住居民III

     楼主| 发表于 2019-3-22 21:26:58 | 显示全部楼层
    , Q2 }% m; ?- v* M. Y' M  z
    这个版本有点问题,我已经更新,请重新下载,链接不变9 _, B* v% ?4 ?* S

    + {  ?% X1 V. h/ \0 ^
    7 U) O' i2 K) i& u5 l3 y* m) l2 J+ g  T; s
  • 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 编辑
    9 Q/ p+ d9 O# v* x' F
    Budha 发表于 2019-3-23 09:45
    $ |( v/ ?1 V' y! _3 K# M/ M楼主,我刚才没说清楚,我说的是用手机打开http://127.0.0.1:5000,出现了127.0.0.1拒绝连接的提升,可能还 ...

    2 p" }4 ]7 p8 s, l: qhttp://127.0.0.1:5000 只能用本机访问$ i& U' C* Y+ Y% Y

    0 M( O; y( s% \: p. \9 e如果用手机访问,需要改写下 mdict_start.cmd 文件,然后访问你电脑的 http://<your_pc_ip>:5000/
    % E$ @5 x' x9 g* f, h$ }改为
    # M. `2 Y- G  ^" c7 f* ^: `
    1. python\scripts\flask.exe run --host 0.0.0.0
    复制代码
    3 f6 i$ a5 F- t5 l  v! J+ b* {( M
  • 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 编辑 2 T' d$ T( X7 _+ `$ w& |, K7 d# T
    Budha 发表于 2019-3-23 14:44
    & W& C; U9 o( d6 p; ]/ {, Z我运行绿色版的失败了,我就用第一种方法在本机上访问成功,但在手机上失败,按照第一种方法的话要改啥文件 ...
    ; y. H/ o9 \8 x
    如果你自己安装的 python/flask 运行环境,那么直接运行 flask.exe run --host 0.0.0.0
    ; L5 j6 F3 ~1 L5 e0 b# f1 ]2 `2 f* y% H5 q, [/ s5 g" P# K( b
    如果用我提供的运行环境 python\scripts\flask.exe run --host 0.0.0.0, 前面就多个路径
    5 y8 A( [1 H1 ]2 _, ^1 N, t6 j4 S6 N) T& t% ^
    查看您 PC的IP地址,用手机或其他在同一网络的电脑访问 http://<pc_ip>:5000/
    , w# |. i' R* N' m请重新下载 mdict 源码文件,刚修复一个界面问题。
    " e5 T$ ~7 |% o- @1 Q
  • 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 编辑 ; p0 |. f5 [$ Y6 s; E
    Budha 发表于 2019-3-23 17:245 C8 P& e6 |3 m/ `2 Q! t
    我的意思是我电脑一直开着,我人在外面上班或在外地出差,我远程访问家里的电脑,调用词典,楼主的程序可以 ...
    + j, J1 |0 |2 L$ ^" r, j( X
    这个和程序没关系,关键在于你能不能远程访问家里的电脑6 U* o: B6 z; q$ c7 s- j
    ) B0 k& ~9 \( q9 \

    ! [0 \5 {. W/ W$ O& c+ |在Ubuntu上简单试用了一下,很不错。6 ~0 }$ u. o9 n
  • TA的每日心情
    开心
    2019-3-26 21:36
  • 签到天数: 178 天

    [LV.7]常住居民III

    发表于 2019-3-23 23:32:47 | 显示全部楼层
    本帖最后由 流星冲击 于 2019-3-23 23:36 编辑
    6 V9 d0 ]" b$ a/ h4 C! H, C5 T  j: g. q3 K+ y) d3 r2 F2 t
    词典code一定要规范,是不是做到xhtml标准的那种程度?
    * {2 G. n) l3 g3 C0 ^+ H- c还有就是,可不可以做成直接支持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
    3 @: l3 u' r4 [+ C词典code一定要规范,是不是做到xhtml标准的那种程度?" A1 b9 c" I& f
    还有就是,可不可以做成直接支持mdx的txt源码?并且进 ...

    " f* ~! H; _, R词典code一定要规范,是不是做到xhtml标准的那种程度?  U5 v) j. N: w5 N( H) e0 j7 Z( s
    确切的说,是的。因为词典code是 HTML 代码,各大软件都按 XHTML 标准支持,现在是 HTML5,其次再做一些冗余性调整,越规范,兼容性越好。6 J: s" V: @; ^# u* a! |; }

    . S. E0 K/ l/ J5 ~, R0 k# U4 itxt源码没做过,不清楚,但理论上可以,但可能会牺牲通用性。HTML 软件原生支持,TXT 格式千变万化,没有统一标准,支持性就差了
  • TA的每日心情
    开心
    2019-3-26 21:36
  • 签到天数: 178 天

    [LV.7]常住居民III

    发表于 2019-3-24 05:48:07 | 显示全部楼层
    zzzz_sleep 发表于 2019-3-24 05:297 t. N- u( J* o+ N" q
    词典code一定要规范,是不是做到xhtml标准的那种程度?- \. D# z1 r$ e! {# U! K# Q9 X
    确切的说,是的。因为词典code是 HTML 代码,各大 ...
    # j' ~: W% v& j3 a# w( Y
    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* L: c# N: B' S3 Y
    可以办到,但主要功能不是我提供的
    3 R1 d3 c2 E# D# k0 Z- A) j2 t% @/ }0 P$ `7 c3 r: B( R
    1. 首先,运行我的程序,家里内网的机器可以正常访问

    3 o, Z" e7 }4 \; r谢谢楼主解答,我家里的电脑是直接连在“光猫”上,500M的宽带,一个月1T流量后会降到300M,这是个基本情况,这样设置的话是不是要简单点?
  • TA的每日心情

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

    [LV.7]常住居民III

     楼主| 发表于 2019-3-24 11:09:59 | 显示全部楼层
    Budha 发表于 2019-3-24 07:37
    : h5 \8 e# }% T7 i* P谢谢楼主解答,我家里的电脑是直接连在“光猫”上,500M的宽带,一个月1T流量后会降到300M,这是个基本情 ...
    * ]% a( A$ k# \: E. ^- }4 |; Y

    ; E8 @+ r+ Y2 G; b是简单些,但是会危险些
    6 b5 E1 k4 Q% A' b. B9 V( m+ x2 ~+ Z( A
    简单:# C: p  S/ _. v' U" ?
    直接连光猫上,PC 是需要拨号才能上网吧,查看拨号后的IP,应当是 Internet 公网IP,直接用手机访问这个 公网 IP 加 5000,即可。不需要网络端口映射- _% d' n8 s9 m/ Z( g* }' K$ l
    ; g- r, ?- b% o' Q2 m& k
    危险:/ M( c4 _) H, ]+ W+ @
    PC 直连到 Internet 上,没有经过防火墙隔离(Windows自带的不算)容易招到网络攻击,windows 补丁不能及时更新,容易被人攻入
  • TA的每日心情

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

    [LV.7]常住居民III

     楼主| 发表于 2019-3-24 11:18:08 | 显示全部楼层
    流星冲击 发表于 2019-3-24 05:48
    9 n/ g9 T" `1 X0 C* y8 |- umdx源码的txt都是有规律的,利用正则可以提取词头生成索引,txt文件太大,可以用dictzip压缩成dz(gzip文 ...

    9 {; m2 B7 K: Q  B) r( |- M是可以生成索引,直接显示,但 TXT 格式变化有限,不支持字体,颜色,排版等复杂需求,直接显示到用户终端很丑陋,需要根据 TXT 指令转换为复杂的 HTML 格式才能解决。/ j8 v) U- ]! @+ j% g' @# t0 L: \

    4 A. h8 i( x: M  Y( e8 @这个转换可以动态转换,即显示一个词条时,先将 TXT 转换为 HTML,再显示
    * I! S. e% z: y2 D* K静态转换,先全部转换 TXT 格式到 HTML,显示时直接传递  L% b2 }" e: R! p+ e
    6 X  A  U+ e) D& I  |
    显然第二种方法更有效率,用户体验更好。
    . T# p  U* L- B+ k' J) S# B5 T
  • TA的每日心情
    开心
    2022-6-5 11:40
  • 签到天数: 814 天

    [LV.10]以坛为家III

    发表于 2019-3-24 13:16:05 | 显示全部楼层
    zzzz_sleep 发表于 2019-3-24 11:09" ?9 W; k5 J7 c; `# L
    是简单些,但是会危险些
    9 I4 e" \4 a0 l
    , G$ |- ?2 i6 P3 {8 R4 X简单:

    7 s) x8 ~' M7 p4 s3 h) a4 U1 h. \我看了下一共有5个地址
    $ k$ t9 [$ d1 [) F, P! b1.物理(mac)地址7 s( ?4 w, j# N; i8 H; C% h2 S
    2.ipv4地址
    5 \7 n: B1 U5 R# E( S3.ipv6地址! ]1 l6 ?3 X1 {/ q% Y- D
    4.默认网关, A) N# |4 {- ^) A7 V; U
    5.dns服务器  U8 W$ c* |8 Q8 [* |
    我再手机上应该在哪个地址后加5000?
  • TA的每日心情

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

    [LV.7]常住居民III

     楼主| 发表于 2019-3-25 05:57:49 | 显示全部楼层
    Budha 发表于 2019-3-24 13:165 B) I+ t/ t# G( K
    我看了下一共有5个地址. i- Y; }, ~5 V7 j" ~* r
    1.物理(mac)地址; ^  I, Q$ j2 t2 L2 P& Z$ K
    2.ipv4地址

    8 H( r* }  D- r2.ipv4地址" Y5 y7 t& F; c4 A( P* {

    " A( W8 h7 N* X- n5 wipv4:5000
  • TA的每日心情
    开心
    2021-4-11 18:44
  • 签到天数: 88 天

    [LV.6]常住居民II

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

    [LV.9]以坛为家II

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

    本版积分规则

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

    GMT+8, 2024-3-29 16:46 , Processed in 0.058867 second(s), 14 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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