Wikit - A universal dictionary

Related tags

Command-line wikit
Overview

Wikit - A universal dictionary

What is it?

To be short, Wikit is a tool which can (fully, may be in future) render and create dictionary file in MDX/MDD format.

This project is in very early stage, but you can try this demo online or download electron wrapped client from here Releases.

Why it?

MDX/MDD is a popular closed-source dictionary format which you can find many dictionaries made by a variety of folks on pdawiki or freedict. All of this should give appreciations to the hero of xwang which firstly released full reverse-engineering analysis of MDX/MDD format, which you can find here.

Several reasons make me write this project

  • I am a heavy user of dictionary since I often read english books or papers
  • For what I can tell now, no project about MDX/MDD is actively maintained
  • No platform-agnostic, user-friendly, fully-opensourced and free dictionary for now
  • I love rust programming

Development

Firstly, you should familiar with MDX/MDD format which can be found at here. For MDX 2.0, you may be also interested in the following illustraion (you can view it in fullscreen here): mdx format

Secondly, download a MDX/MDD dictionary from anywhere and save it to somewhere, run the following command to do quick and dirty development

TEST_MDX_FILE=/path/to/mdx cargo test test_parse_mdx -- --nocapture

Finally, turn your thoughts into codes and make the contributions, cool developer!

Roadmap

  • MDX 2.0 parsing
  • MDX 2.0 writing
  • MDX 1.2 parsing and writing

License

MIT

You might also like...
Front-coding string dictionary in Rust

Front-coding string dictionary in Rust This is a Rust library of the (plain) front-coding string dictionary described in Martínez-Prieto et al., Pract

A better customization password dictionary generator implementation by Rust.

abcdict A better customization password dictionary generator implementation by Rust. Features Cli Faster Customize Rules Build & Installation $ cargo

Fast PDF password cracking utility equipped with commonly encountered password format builders and dictionary attacks.
Fast PDF password cracking utility equipped with commonly encountered password format builders and dictionary attacks.

PDFRip Fast PDF password cracking utility equipped with commonly encountered password format builders and dictionary attacks. 📖 Table of Contents Int

A CLI tool for fetching Urban Dictionary definitions
A CLI tool for fetching Urban Dictionary definitions

udict - Urban Dictionary CLI A CLI tool for fetching Urban Dictionary definitions. Installation cargo cargo install udict Arch Linux Using an AUR pack

Program to determine the password of an encrypted ZIP file via dictionary attack.

zip-dict-attack Program to determine the password of an encrypted ZIP file via dictionary attack. Inspired by this article. Usage Cargo is used to bui

Tony Hawk's Underground 2: Remix Cheat Cracker - Performs dictionary attack on cheat code hashes for THU2R

Tony Hawk's Underground 2 Cheat Cracker A simple utility for cracking cheat codes for Tony Hawk's Underground 2, written in Rust. Background This proj

A parallel universal-ctags wrapper for git repository

ptags A parallel universal-ctags wrapper for git repository Description ptags is a universal-ctags wrapper to have the following features. Search git

Cargo subcommand to automatically create universal libraries for iOS.

cargo lipo Provides a cargo lipo subcommand which automatically creates a universal library for use with your iOS application. Maintenance Status Plea

Bindings for Binomial LLC's basis-universal Supercompressed GPU Texture Codec

basis-universal-rs Bindings for Binomial LLC's basis-universal Supercompressed GPU Texture Codec basis-universal functionality can be grouped into two

Universal Schema Analysis

schema_analysis Universal-ish Schema Analysis Ever wished you could figure out what was in that json file? Or maybe it was xml... Ehr, yaml? It was de

Universal configuration library parser

LIBUCL Table of Contents generated with DocToc Introduction Basic structure Improvements to the json notation General syntax sugar Automatic arrays cr

Universal changelog generator using conventional commit+ with monorepo support. Written in Rust.
Universal changelog generator using conventional commit+ with monorepo support. Written in Rust.

chlog Universal changelog generator using conventional commit+ with monorepo support. chlog can generate the changelog from the conventional commits w

a universal meta-transliterator that can decipher arbitrary encoding schemas, built in pure Rust
a universal meta-transliterator that can decipher arbitrary encoding schemas, built in pure Rust

transliterati a universal meta-transliterator that can decipher arbitrary encoding schemas, built in pure Rust what does it do? You give it this: Барл

A universal, distributed package manager

Cask A universal, distributed package manager. Installation | Usage | How to publish package? | Design | Contributing | Cask.toml If you are tired of:

An interactive, universal Wordle solver
An interactive, universal Wordle solver

Eldrow (Wordle in reverse) is an interactive, universal Wordle solver that attempts to achieve near to mathematically perfect performance without rely

A universal SDK for FDU. Powered by Rust.

libfdu A universal SDK for FDU. Building You need Rust Nightly installed: $ rustup default nightly Build the library by running: $ cargo build or $ ca

Universal Windows library for discovering common render engines functions. Supports DirectX9 (D3D9), DirectX10 (D3D10), DirectX11 (D3D11), DirectX12 (D3D12).
Universal Windows library for discovering common render engines functions. Supports DirectX9 (D3D9), DirectX10 (D3D10), DirectX11 (D3D11), DirectX12 (D3D12).

Shroud Universal library for discovering common render engines functions. Supports DirectX9 (D3D9), DirectX10 (D3D10), DirectX11 (D3D11), DirectX12 (D

ABQ is a universal test runner that runs test suites in parallel. It’s the best tool for splitting test suites into parallel jobs locally or on CI

🌐 abq.build   🐦 @rwx_research   💬 discord   📚 documentation ABQ is a universal test runner that runs test suites in parallel. It’s the best tool f

Truly universal encoding detector in pure Rust - port of Python version

Charset Normalizer A library that helps you read text from an unknown charset encoding. Motivated by original Python version of charset-normalizer, I'

Comments
  • Wikit 词典格式提案

    Wikit 词典格式提案

    wikit.db: sqlite 格式

      一共三列, 如下所示
    
          key, value_offset, value_size
    
      这里的 key 必须是唯一的不能重复的, 其值可以是单词, 图片名称, 音频名称,
      value_offset 和 value_size 分别表示对应值在 wikit.data 中的偏移地址和大小,
      比如当 key 为单词时, value_offset 就表示其释义在 wikit.data 中的偏移地址以及释义长度,
      当 key 为图片名称时, value_offset 就表示图片在 wikit.data 中的偏移地址及图片大小.
    

    wikit.cache: 用户查询缓存, 也就是 wikit.db 的一个子集

    wikit.data: binary

      meanings[0], meanings[1], ...
      imagns[0], images[1], ...
      audios[0], audios[1], ...
    
    enhancement 
    opened by ikey4u 8
  • Question about mdx 2.0

    Question about mdx 2.0

    Hi,

    I noticed the README mentioned the original mdx structure described by Xiaoqiang Wang and something called mdx 2.0. Is Xiaoqiang Wang's description considered 1.0? What's the difference between them? I'm a little confused as mdx is a pretty old file type and the original author started using a newer version in his mdict program several years ago. But the file structure of that version hasn't been reverse-engineered. Is mdx 2.- refer to this newer file format?

    Thanks.

    opened by 0x7FFFFFFFFFFFFFFF 1
  • Does not run on Wayland natively

    Does not run on Wayland natively

    Because global shortcuts is only supported on X11. See: https://github.com/tauri-apps/tao/issues/248

    Is there a way to disable global shortcuts as a workaround?

    opened by Congee 8
Releases(v0.4.0-beta.2)
Owner
bugnofree
bugnofree
A CLI tool for fetching Urban Dictionary definitions

udict - Urban Dictionary CLI A CLI tool for fetching Urban Dictionary definitions. Installation cargo cargo install udict Arch Linux Using an AUR pack

null 15 Nov 14, 2022
a universal meta-transliterator that can decipher arbitrary encoding schemas, built in pure Rust

transliterati a universal meta-transliterator that can decipher arbitrary encoding schemas, built in pure Rust what does it do? You give it this: Барл

Catherine Koshka 7 Dec 21, 2022
Universal Windows library for discovering common render engines functions. Supports DirectX9 (D3D9), DirectX10 (D3D10), DirectX11 (D3D11), DirectX12 (D3D12).

Shroud Universal library for discovering common render engines functions. Supports DirectX9 (D3D9), DirectX10 (D3D10), DirectX11 (D3D11), DirectX12 (D

Chase 6 Dec 10, 2022
ABQ is a universal test runner that runs test suites in parallel. It’s the best tool for splitting test suites into parallel jobs locally or on CI

?? abq.build   ?? @rwx_research   ?? discord   ?? documentation ABQ is a universal test runner that runs test suites in parallel. It’s the best tool f

RWX 13 Apr 7, 2023
Truly universal encoding detector in pure Rust - port of Python version

Charset Normalizer A library that helps you read text from an unknown charset encoding. Motivated by original Python version of charset-normalizer, I'

Nikolay Yarovoy 29 Oct 9, 2023
🗽 Universal Node Package Manager

?? NY Universal Node Package Manager node • yarn • pnpm Features Universal - Picks the right package manager for you based on the lockfile in your fol

Kris Kaczor 46 Oct 12, 2023
A universal load testing framework for Rust, with real-time tui support.

rlt A Rust Load Testing framework with real-time tui support. rlt provides a simple way to create load test tools in Rust. It is designed to be a univ

Wenxuan 129 Jul 20, 2024
Wikit - A universal dictionary

Wikit - A universal dictionary

bugnofree 120 Dec 3, 2022
A Rust library containing an offline version of webster's dictionary.

webster-rs A Rust library containing an offline version of webster's dictionary. Add to Cargo.toml webster = 0.3.0 Simple example: fn main() { le

Grant Handy 12 Sep 27, 2022
Ruo is a dictionary-based password cracker written in rust 🦀 .

Ruo is a dictionary-based password cracker written in rust ?? . The primary purpose is to crack weak hashes/commonly used passwords.

Asjid Kalam 10 Mar 6, 2022