Objective-C CSS JavaScript LiveScript HTML Perl Other
Latest commit 3b48be1 Dec 26, 2016 @audreyt * Deploy
Permalink
Failed to load latest commit information.
a * Fix #168. Jun 22, 2015
android png img optimize using zopfli 300 iterations Mar 14, 2016
bin update binary data Oct 4, 2013
c * Import CSLD 2015-06 data. Jun 27, 2015
character png img optimize using zopfli 300 iterations Mar 14, 2016
css png img optimize using zopfli 300 iterations Mar 14, 2016
experimental-mps * More small tweaks Sep 8, 2013
fonts * Fix astral characters in ligature substitution. Thanks @ethantw++ f… Apr 13, 2015
fxos png img optimize using zopfli 300 iterations Mar 14, 2016
h * Early adoption of iso10646:2014 Ext-E: Jan 1, 2015
images png img optimize using zopfli 300 iterations Mar 14, 2016
ios png img optimize using zopfli 300 iterations Mar 14, 2016
js Fix #192 Sep 16, 2016
lookup/pinyin/h * Symlinks Oct 1, 2016
opensearch * AddSearchProvider, thanks to @roisac Oct 28, 2013
sass * Fix y[ptk] issue as well as hiding pref-h using css Oct 1, 2016
scripts * Fix y[ptk] issue as well as hiding pref-h using css Oct 1, 2016
t * Unify variants and remove non-defined words. Jan 25, 2015
translation-data * Chase cfdict format change Jul 22, 2014
.gitignore * Add styles.css to .gitignore Jun 22, 2015
API.md * Beginning of API.md for docs.moedict.apiary.io Sep 21, 2014
Android.html * Android 0.4.6, not including CSLD for now since we are still in Dra… Oct 30, 2013
Android.md * Update license disclaimer Feb 3, 2013
Dockerfile * make off-linedev and deps for build-pinyin-lookup.pl Jan 27, 2015
Makefile * Update upstream URL as per CFDict team Jan 17, 2016
README.md Update README.md Sep 1, 2016
TODO * Add TODO Apr 16, 2013
a.txt * Re-generate a.txt from upstream 20160523 with docker: Jun 20, 2016
about.html * 日星初號楷體 support Oct 29, 2016
about.jade * 日星初號楷體 support Oct 29, 2016
autolink.ls * Re-generate a.txt from upstream 20160523 with docker: Jun 20, 2016
back.png png img optimize using zopfli 300 iterations Mar 14, 2016
build-pinyin-lookup.pl add $pinyin_type to lookup file paths. Jan 28, 2015
c.txt * Import CSLD 2015-06 data. Jun 27, 2015
config.rb * Various tweaks to the sass/jade settings Nov 26, 2013
config.xml * CSLD 0.5.1 final Jan 23, 2014
dict-concised.audio.json * Normalize bopomofo May 18, 2013
down.png png img optimize using zopfli 300 iterations Mar 14, 2016
erase.png png img optimize using zopfli 300 iterations Mar 14, 2016
g0v.json Update g0v.json Aug 7, 2013
gulpfile.ls * Add link to amis-mp 校對活動 @miaoski Feb 22, 2016
h.txt * Fix #163. May 2, 2015
icon.png png img optimize using zopfli 300 iterations Mar 14, 2016
index.html * Remove timeline to FB page (inactive) Dec 23, 2016
index.jade * Remove timeline to FB page (inactive) Dec 23, 2016
info.png png img optimize using zopfli 300 iterations Mar 14, 2016
json2prefix.ls * Early adoption of iso10646:2014 Ext-E: Jan 1, 2015
lang.png png img optimize using zopfli 300 iterations Mar 14, 2016
link2pack.pl * Sort the resulting pack row files Jul 10, 2014
logout.html Fix JavaScript RegEx Feb 9, 2016
main.ls Fix #192 Sep 16, 2016
manifest.appcache * Deploy Dec 26, 2016
manifest.webapp * Working build for Firefox OS! @stevesgill++ for the cordova-firefox… Dec 9, 2013
manifest.webapp.ls * Working build for Firefox OS! @stevesgill++ for the cordova-firefox… Dec 9, 2013
package.json * Re-generate a.txt from upstream 20160523 with docker: Jun 20, 2016
precomputed.json * Initial sketch at rendering Apr 14, 2013
quit.png png img optimize using zopfli 300 iterations Mar 14, 2016
server.js * Do not display in pulldown until we confirm with Rixing Ltd Oct 31, 2016
server.ls * Do not display in pulldown until we confirm with Rixing Ltd Oct 31, 2016
special2pack.pl * specialpack should work for c too Oct 20, 2013
static-here.js * livescript 1.4.0 May 25, 2015
t.txt Fix #150. Add python script used to generate up-to-date t/index.json. Jan 25, 2015
twblg_index.py Fix #150. Add python script used to generate up-to-date t/index.json. Jan 25, 2015
view.ls * Fix #201 Oct 10, 2016
webpack.config.js * Android 5.5.3: Fix howler.js Oct 3, 2015

README.md

這是 http://moedict.tw/ 線上及離線查詢 App 的源碼庫。

Docker

可以從 Docker Hub 取回開發環境:

docker@boot2docker:~$ docker pull miaoski/moedict-webkit
docker@boot2docker:~$ docker run -p 8888:8888 -t -i miaoski/moedict-webkit /bin/bash
root@4a7bd751fd9e:/usr/local/src/moedict-webkit# make

需求

  • Node.js 0.10.x
  • Perl 5.8.0+
  • Python
    • lxml

前置作業 (Debian/Ubuntu)

sudo apt-get update
sudo apt-get install -y python-software-properties python g++ make
sudo add-apt-repository -y ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs python-lxml curl

安裝環境

npm i
pip install lxml
sudo npm i -g gulp

建置

建置離線檔案

建置離線瀏覽所需要的檔案:

make offline

手動逐步建置

來源 JSON 檔 dict-revised.unicode.jsondict-revised.pua.jsonhttps://github.com/g0v/moedict-data 提供, 再經由 https://github.com/g0v/moedict-epub 造字轉換程式 json2unicode.pl 轉為 Unicode 編碼:

git clone --depth 1 https://github.com/g0v/moedict-data.git
git clone --depth 1 https://github.com/g0v/moedict-epub.git
cp -v moedict-data/dict-revised.json moedict-epub/
cd moedict-epub
perl json2unicode.pl > dict-revised.unicode.json
perl json2unicode.pl sym-pua.txt > dict-revised.pua.json

packat 資料目錄由 json2prefix.lsautolink.lslink2pack.pl 程式產生:

lsc json2prefix.ls a
lsc autolink.ls a > a.txt
perl link2pack.pl a < a.txt

lsc json2prefix.ls t
lsc autolink.ls t > t.txt
perl link2pack.pl t < t.txt

本機運行

# quick static server, uses the pre-built js/deps.js ( watches: sass/ .jade )
npm start

# auto-reloads with react-hot-loader ( watches: sass/ .jade .ls )
npm run dev

# builds for deployment, using webpack and uglify
npm run build

API 說明

首先請注意,萌典 API 必須去詢問 https://www.moedict.tw/,因為這個網址才有開 CORS。不要去訪問 http://moedict.org/ ,會噴 No 'Access-Control-Allow-Origin' header 的錯誤。

API 的原始資料,請參考連結,本段落的說明是參考連結整理後並加上範例。

目前 API 已有 7 個端點,分別是 /a/, /t/, /h/, /c/, /raw/, /uni/, /pua/

1. /raw/

原始 json 檔,Big5 區之外的字以造字碼 {[abcd]} 表示。

範例: https://www.moedict.tw/raw/%E8%90%8C

{
  "heteronyms": [
    {
      "bopomofo": "ㄇㄥˊ",
      "bopomofo2": "méng",
      "definitions": [
        {
          "def": "草木初生的芽。",
          "quote": [
            "說文解字:「萌,艸芽也。」",
            "唐.韓愈、劉師服、侯喜、軒轅彌明.石鼎聯句:「秋瓜未落蒂,凍芋強抽萌。」"
          ],
          "type": ""
        },
        {
          "def": "事物發生的開端或徵兆。",
          "quote": [
            "韓非子.說林上:「聖人見微以知萌,見端以知末。」",
            "漢.蔡邕.對詔問{[9264]}異八事:「以杜漸防萌,則其救也。」"
          ],
          "type": ""
        },
        {
          "def": "人民。",
          "example": [
            "如:「萌黎」、「萌隸」。"
          ],
          "link": [
            "通「氓」。"
          ],
          "type": ""
        },
        {
          "def": "姓。如五代時蜀有萌慮。",
          "type": ""
        },
        {
          "def": "發芽。",
          "example": [
            "如:「萌芽」。"
          ],
          "quote": [
            "楚辭.王逸.九思.傷時:「明風習習兮龢暖,百草萌兮華榮。」"
          ],
          "type": ""
        },
        {
          "def": "發生。",
          "example": [
            "如:「故態復萌」。"
          ],
          "quote": [
            "管子.牧民:「惟有道者,能備患於未形也,故禍不萌。」",
            "三國演義.第一回:「若萌異心,必獲惡報。」"
          ],
          "type": ""
        }
      ],
      "pinyin": "méng"
    }
  ],
  "non_radical_stroke_count": 8,
  "radical": "",
  "stroke_count": 12,
  "title": ""
}

2. /uni/

將原始 json 檔,Big5 區之外的字轉成相應的 Unicode 字元表示。

範例: https://www.moedict.tw/uni/%E8%90%8C

{
  "heteronyms": [
    {
      "bopomofo": "ㄇㄥˊ",
      "bopomofo2": "méng",
      "definitions": [
        {
          "def": "草木初生的芽。",
          "quote": [
            "說文解字:「萌,艸芽也。」",
            "唐.韓愈、劉師服、侯喜、軒轅彌明.石鼎聯句:「秋瓜未落蒂,凍芋強抽萌。」"
          ],
          "type": ""
        },
        {
          "def": "事物發生的開端或徵兆。",
          "quote": [
            "韓非子.說林上:「聖人見微以知萌,見端以知末。」",
            "漢.蔡邕.對詔問灾異八事:「以杜漸防萌,則其救也。」"
          ],
          "type": ""
        },
        {
          "def": "人民。",
          "example": [
            "如:「萌黎」、「萌隸」。"
          ],
          "link": [
            "通「氓」。"
          ],
          "type": ""
        },
        {
          "def": "姓。如五代時蜀有萌慮。",
          "type": ""
        },
        {
          "def": "發芽。",
          "example": [
            "如:「萌芽」。"
          ],
          "quote": [
            "楚辭.王逸.九思.傷時:「明風習習兮龢暖,百草萌兮華榮。」"
          ],
          "type": ""
        },
        {
          "def": "發生。",
          "example": [
            "如:「故態復萌」。"
          ],
          "quote": [
            "管子.牧民:「惟有道者,能備患於未形也,故禍不萌。」",
            "三國演義.第一回:「若萌異心,必獲惡報。」"
          ],
          "type": ""
        }
      ],
      "pinyin": "méng"
    }
  ],
  "non_radical_stroke_count": 8,
  "radical": "",
  "stroke_count": 12,
  "title": ""
}

3. /pua/

與 /uni/ 相同,已使用 Unicode 字元,但動態組字改用 @medicalwei 的造字替代。

以「淘漉」為例,內容有一字在 raw 是 {[9ad7]},在 uni 是 ⿰扌層,在 pua 是 U+F9AD7。

若要顯示 PUA,必須引用萌典字型 woffttf

範例: https://www.moedict.tw/pua/%E8%90%8C

{
  "heteronyms": [
    {
      "bopomofo": "ㄇㄥˊ",
      "bopomofo2": "méng",
      "definitions": [
        {
          "def": "草木初生的芽。",
          "quote": [
            "說文解字:「萌,艸芽也。」",
            "唐.韓愈、劉師服、侯喜、軒轅彌明.石鼎聯句:「秋瓜未落蒂,凍芋強抽萌。」"
          ],
          "type": ""
        },
        {
          "def": "事物發生的開端或徵兆。",
          "quote": [
            "韓非子.說林上:「聖人見微以知萌,見端以知末。」",
            "漢.蔡邕.對詔問灾異八事:「以杜漸防萌,則其救也。」"
          ],
          "type": ""
        },
        {
          "def": "人民。",
          "example": [
            "如:「萌黎」、「萌隸」。"
          ],
          "link": [
            "通「氓」。"
          ],
          "type": ""
        },
        {
          "def": "姓。如五代時蜀有萌慮。",
          "type": ""
        },
        {
          "def": "發芽。",
          "example": [
            "如:「萌芽」。"
          ],
          "quote": [
            "楚辭.王逸.九思.傷時:「明風習習兮龢暖,百草萌兮華榮。」"
          ],
          "type": ""
        },
        {
          "def": "發生。",
          "example": [
            "如:「故態復萌」。"
          ],
          "quote": [
            "管子.牧民:「惟有道者,能備患於未形也,故禍不萌。」",
            "三國演義.第一回:「若萌異心,必獲惡報。」"
          ],
          "type": ""
        }
      ],
      "pinyin": "méng"
    }
  ],
  "non_radical_stroke_count": 8,
  "radical": "",
  "stroke_count": 12,
  "title": ""
}

4. 國語 /a/

已使用 PUA 造字,再加上內文自動斷詞。

範例: https://www.moedict.tw/a/%E8%90%8C.json

{
  "n": 8,
  "t": "",
  "r": "`艸~",
  "c": 12,
  "h": [
    {
      "d": [
        {
          "q": [
            "`說文解字~:「`萌~,`艸~`芽~`也~。」",
            "`唐~.`韓愈~、`劉~`師~`服~、`侯~`喜~、`軒轅~`彌~`明~.`石~`鼎~`聯句~:「`秋~`瓜~`未~`落~`蒂~,`凍~`芋~`強~`抽~`萌~。」"
          ],
          "type": "`名~",
          "f": "`草木~`初~`生~`的~`芽~。"
        },
        {
          "q": [
            "`韓非子~.`說~`林~`上~:「`聖人~`見~`微~`以~`知~`萌~,`見~`端~`以~`知~`末~。」",
            "`漢~.`蔡邕~.`對~`詔~`問~`灾~`異~`八~`事~:「`以~`杜漸防萌~,`則~`其~`救~`也~。」"
          ],
          "type": "`名~",
          "f": "`事物~`發生~`的~`開端~`或~`徵兆~。"
        },
        {
          "type": "`名~",
          "l": [
            "`通~「`氓~」。"
          ],
          "e": [
            "`如~:「`萌黎~」、「`萌隸~」。"
          ],
          "f": "`人民~。"
        },
        {
          "type": "`名~",
          "f": "`姓~。`如~`五代~`時~`蜀~`有~`萌~`慮~。"
        },
        {
          "q": [
            "`楚辭~.`王~`逸~.`九思~.`傷~`時~:「`明~`風~`習習~`兮~`龢~`暖~,`百草~`萌~`兮~`華~`榮~。」"
          ],
          "type": "`動~",
          "e": [
            "`如~:「`萌芽~」。"
          ],
          "f": "`發芽~。"
        },
        {
          "q": [
            "`管子~.`牧民~:「`惟~`有道~`者~,`能~`備~`患~`於~`未~`形~`也~,`故~`禍~`不~`萌~。」",
            "`三國演義~.`第一~`回~:「`若~`萌~`異心~,`必~`獲~`惡報~。」"
          ],
          "type": "`動~",
          "e": [
            "`如~:「`故態復萌~」。"
          ],
          "f": "`發生~。"
        }
      ],
      "p": "méng",
      "b": "ㄇㄥˊ",
      "=": "0676"
    }
  ],
  "translation": {
    "francais": [
      "germer"
    ],
    "Deutsch": [
      "Leute, Menschen  (S)",
      "Meng  (Eig, Fam)",
      "keimen, sprießen, knospen, ausschlagen "
    ],
    "English": [
      "to sprout",
      "to bud",
      "to have a strong affection for (slang)",
      "adorable (loanword from Japanese `萌~え moe, slang describing affection for a cute character)"
    ]
  }
}

5. 閩南語 /t/

結構基本同 /a/

範例: https://www.moedict.tw/t/%E7%99%BC%E7%A9%8E.json

{
  "t": "`發~`穎~",
  "h": [
    {
      "_": "8778",
      "T": "huat-ínn",
      "s": "`發芽~",
      "d": [
        {
          "type": "`動~",
          "f": "`發芽~、萌`芽~。`植物~`的~`種子~`發出~`芽~。",
          "e": [
            "`樹仔~`發穎~`矣~!Tshiū-á huat-ínn--ah! `樹~`發芽~`了~!"
          ]
        }
      ]
    }
  ]
}

6. 客語 /h/

結構基本同 /a/

範例: https://www.moedict.tw/h/%E7%99%BC%E8%8A%BD.json

{
  "t": "`發~`芽~",
  "h": [
    {
      "=": "02735",
      "p": "四?⃞fad²nga¹¹ 海?⃞fad⁵nga⁵⁵ 大?⃞fad²¹nga¹¹³ 平?⃞fad²nga⁵⁵ 安?⃞fad²⁴nga⁵³",
      "s": "`暴~`芽~,`暴筍~",
      "d": [
        {
          "e": [
            "`春天~`一~`到~,`草~`仔~`樹仔~`相賽~`開始~`發芽~。`春天~`一~`到~,`草~`木~`相~繼`開始~萌`芽~。"
          ],
          "f": "`植物~`的~`種~`子~,`因~`本身~`的~`生理~、`外~`部~`環~`境~`條件~`的~`合適~,`而~`開始~萌`發~`的~`一~`種~`現象~。",
          "type": "`動~"
        }
      ]
    }
  ]
}

7. 兩岸詞典 /c/

結構基本同 /a/

範例: https://www.moedict.tw/c/%E9%BE%8D.json

{
  "t": "",
  "h": [
    {
      "p": "lónɡ",
      "A": "",
      "d": [
        {
          "e": [
            "例?⃝「`飛~`龍~`在~`天~」、「`生龍活虎~」、「`葉公好龍~」、「`畫龍點睛~」。"
          ],
          "f": "`傳說~`中的~`神異~`動物~,`有~`角~、`鱗~、`爪~、`鬚~,`能~`上天~`入~`水~,`興~`雲~`降雨~。"
        },
        {
          "e": [
            "例?⃝「`龍顏~`大~`怒~」、「`龍~`體~`欠安~」、「`龍~`子~`龍~`孫~」。"
          ],
          "f": "`古代~`用作~`帝王~`的~`象徵~;`也~`指~`與~`帝王~`相關~`的~`物~`或~`人~。"
        },
        {
          "e": [
            "例?⃝「`人中~`之~`龍~」。"
          ],
          "f": "`借~`指~`首領~`或~`豪傑~`才~`俊~。"
        },
        {
          "e": [
            "例?⃝「`龍~`旗~」、「`龍舟~」、「`龍~`票~」。"
          ],
          "f": "`形狀~`像~`龍~`或~`裝飾~`著~`龍~`的~`圖案~`的~。"
        },
        {
          "e": [
            "例?⃝「`排~`成長~`龍~」、「`車水馬龍~」、「`大火~`蔓延~`一片~,`形成~`一~`條~`火龍~」。"
          ],
          "f": "`指~`某~`些~`連~`成~`一~`串~,`形狀~`像~`龍~`的~`東西~。"
        },
        {
          "e": [
            "例?⃝「`恐龍~」、「`翼~`手~`龍~」。"
          ],
          "f": "`指~`遠~`古~`某~`些~`巨大~`的~`爬行動物~。"
        },
        {
          "f": "`姓~。"
        },
        {
          "f": "`二~`一~`四部~`首~`之~`一~。"
        }
      ],
      "_": "1048060000",
      "b": "ㄌㄨㄥˊ"
    }
  ],
  "translation": {
    "francais": [
      "dragon",
      "impérial",
      "(nom de famille)",
      "212e radical"
    ],
    "Deutsch": [
      "Drache  (S)",
      "Long (Name)  (Eig, Fam)",
      "Schlange (auf der Speisekarte)  (Ess)",
      "Radikal Nr. 212 = Drache, Drachen "
    ],
    "English": [
      "surname Long",
      "dragon",
      "CL:`條~|条[tiao2]",
      "imperial"
    ]
  }
}

API 使用範例

Ajax

/uni/ 範例

 $.ajax({
   url: "https://www.moedict.tw/uni/萌",
   dataType: "json",
   success: function(result) {
     console.log(result);
   }
 });

/a/ 範例

 $.ajax({
   url: "https://www.moedict.tw/a/萌.json",
   dataType: "json",
   success: function(result) {
     console.log(result);
   }
 });

jsonp

callback= 參數須固定為 moedict_jsonp_callback

範例: https://www.moedict.tw/uni/萌?callback=moedict_jsonp_callback

ajax 範例

 $.ajax({
   url: "https://www.moedict.tw/uni/萌",
   dataType: "jsonp",
   jsonpCallback: "moedict_jsonp_callback",
   success: function(result) {
     console.log(result);
   }
 });

Terminal

/uni/ 範例

$ curl "https://www.moedict.tw/uni/萌"

/a/ 範例

$ curl "https://www.moedict.tw/a/萌.json"

其他

index.*.json 為「重編國語辭典(修訂本)」的完整詞條清單。

dict-concised.audio.json 為「國語辭典簡編本」的詞條發音 檔名清單。

其他平台版本、API 及原始資料等,均可在 http://3du.tw/ 取得。

感謝 http://g0v.tw/ 頻道內所有協助開發的朋友們。

CC0 1.0 公眾領域貢獻宣告

除前述資料檔之外,本目錄下的所有其他檔案,由作者 唐鳳 在法律 許可的範圍內,拋棄該著作依著作權法所享有之權利,包括所有相關 與鄰接的法律權利,並宣告將該著作貢獻至公眾領域。

教育部國語辭典公眾授權網

http://resources.publicense.moe.edu.tw/

教育部版權頁

    =====================================================
    編  輯  者:        教育部國語推行委員會
    國語推行委員會主任委員:童春發
    編輯委員會主任委員:    李 鍌
    總  編  輯:        李殿魁
    副 總 編 輯:        曾榮汾

    發  行  人:        杜正勝
    發  行  所:        教育部
    地     址:        臺北市中山南路5號
    電     話:        (02)7736-6801
    =====================================================