File tổng hợp code | Collecting Code

 Part 1

1. Remove China 

<span class=["']chn_(tran|sent)["']>[^<]*?<[^>]+>
2. Front Template
<div class="word">{{Word}}</div>
<div class="ipa">{{IPA}}</div>
<div class="audio">{{Audio}}</div>
<div class="search">
<a href="https://dict.laban.vn/find?type=1&query={{text:Word}}">La bàn</a> //
<a href="https://www.thefreedictionary.com/{{text:Word}}">The Free Dictionary</a> //
<a href="https://getyarn.io/yarn-find?text={{text:Word}}">Get Yarn</a> //
<a href="https://youglish.com/search/{{text:Word}}/all?">YouGlish</a> //
<a href="http://images.google.com/search?tbm=isch&q={{text:Word}}">Image</a>
</div>
3. Back Template
{{FrontSide}}
<div class="mnemonic">{{Mnemonic}}</div>
<hr>
{{Picture}}
<div class="example">{{edit:Description}}</div>
<div class="definition">{{edit:Definition}}</div>
<div class="block">
<div class="sentence">{{edit:Sentence}}</div>
<div class="link"><a href="{{Url}}">web:{{Word}}</a></div>
</div>
<div class="vietnamese">{{edit:Vietnamese}}</div>
4. Styling Code
.card {
font-family: arial;
font-size: 20px;
text-align: center;
color: black;
background-color: white;
line-height: 1.5;
}
.search {
font-family: Arial;
font-size: 13px;
color: blue;
padding-bottom: 10px;
}
.word {
font-family: Times New Roman;
font-size: 60px;
padding-top: 20px;
padding-bottom: 10px;
color: green;
}
.ipa {
font-family: Times New Roman;
font-size: 20px;
}
.definition {
text-align: center;
font-family: Arial;
font-size: 20px;
padding-top: 10px;
padding-bottom: 10px;
}
.sentence {
font-family: Arial;
font-size: 20px;
padding-left: 10px;
text-align: left;
border-left: 2.5px solid lightblue;
}
.link {
font-family: Arial;
font-size: 15px;
text-align: right;
}
.block {
display: inline-block;
padding-top: 10px;
padding-bottom: 10px;
padding-left: 10px;
padding-right: 10px;
}
.vietnamese {
text-align: left;
}
.example {
font-size: 90%;
}
.audio {
font-size: 150%;
}

Part 2

1. Link remove Chinese Word
https://raw.githubusercontent.com/hieuvijjo/ODH/master/src/dict/enen_Oxford.js
/* global api, hash */
class encn_Oxford {
    constructor(options) {
        this.token = '';
        this.gtk = '';
        this.options = options;
        this.maxexample = 2;
        this.word = '';
    }

    async displayName() {
        return 'Oxford EN->EN Dictionary';
    }


    setOptions(options) {
        this.options = options;
        this.maxexample = options.maxexample;
    }

    async getToken() {
        let homeurl = 'https://fanyi.baidu.com/';
        let homepage = await api.fetch(homeurl);
        let tmatch = /token: '(.+?)'/gi.exec(homepage);
        if (!tmatch || tmatch.length < 2) return null;
        let gmatch = /window.gtk = '(.+?)'/gi.exec(homepage);
        if (!gmatch || gmatch.length < 2) return null;
        return {
            'token': tmatch[1],
            'gtk': gmatch[1]
        };
    }

    async findTerm(word) {
        this.word = word;
        let deflection = await api.deinflect(word) || [];
        let promises = [word, deflection].map(x => this.findOxford(x));
        let results = await Promise.all(promises);
        return [].concat(...results).filter(x => x);
    }

    async findOxford(word) {
        // helper function
        function buildDefinitionBlock(exp, pos, defs) {
            if (!defs || !Array.isArray(defs) || defs.length < 0) return '';
            let definition = '';
            let sentence = '';
            let sentnum = 0;
            for (const def of defs) {
                if (def.text) definition += `<span class='tran'><span class='eng_tran'>${def.text}</span></span>`;
                if (def.tag == 'id' || def.tag == 'pv')
                    definition += def.enText ? `<div class="idmphrase">${def.enText}</div>` : '';
                //if (def.tag == 'xrs')
                //    definition += `<span class='tran'><span class='eng_tran'>${def.data[0].data[0].text}</span></span>`;
                if (def.tag == 'd' || def.tag == 'ud')
                    definition += pos + `<span class='tran'><span class='eng_tran'>${def.enText}</span></span>`;
                if (def.tag == 'x' && sentnum < maxexample) {
                    sentnum += 1;
                    let enText = def.enText.replace(RegExp(exp, 'gi'), `<b>${exp}</b>`);
                    sentence += `<li class='sent'><span class='eng_sent'>${enText}</span></li>`;
                }
            }
            definition += sentence ? `<ul class="sents">${sentence}</ul>` : '';
            return definition;
        }
        const maxexample = this.maxexample;
        let notes = [];
        if (!word) return notes;
        let base = 'https://fanyi.baidu.com/v2transapi?from=en&to=zh&simple_means_flag=3';

        if (!this.token || !this.gtk) {
            let common = await this.getToken();
            if (!common) return [];
            this.token = common.token;
            this.gtk = common.gtk;
        }

        let sign = hash(word, this.gtk);
        if (!sign) return;

        let dicturl = base + `&query=${word}&sign=${sign}&token=${this.token}`;
        let data = '';
        try {
            data = JSON.parse(await api.fetch(dicturl));
            let oxford = getOxford(data);
            let bdsimple = oxford.length ? [] : getBDSimple(data); //Combine Youdao Concise English-Chinese Dictionary to the end.
            let bstrans = oxford.length || bdsimple.length ? [] : getBDTrans(data); //Combine Youdao Translation (if any) to the end.
            return [].concat(oxford, bdsimple, bstrans);

        } catch (err) {
            return [];
        }

        function getBDTrans(data) {
            try {
                if (data.dict_result && data.dict_result.length != 0) return [];
                if (!data.trans_result || data.trans_result.data.length < 1) return [];
                let css = '<style>.odh-expression {font-size: 1em!important;font-weight: normal!important;}</style>';
                let expression = data.trans_result.data[0].src;
                let definition = data.trans_result.data[0].dst;
                return [{ css, expression, definitions: [definition] }];
            } catch (error) {
                return [];
            }
        }

        function getBDSimple(data) {
            try {
                let simple = data.dict_result.simple_means;
                let expression = simple.word_name;
                if (!expression) return [];

                let symbols = simple.symbols[0];
                let reading_uk = symbols.ph_en || '';
                let reading_us = symbols.ph_am || '';
                let reading = reading_uk && reading_us ? `uk[${reading_uk}] us[${reading_us}]` : '';

                let audios = [];
                audios[0] = `http://fanyi.baidu.com/gettts?lan=uk&text=${encodeURIComponent(expression)}&spd=3&source=web`;
                audios[1] = `http://fanyi.baidu.com/gettts?lan=en&text=${encodeURIComponent(expression)}&spd=3&source=web`;

                if (!symbols.parts || symbols.parts.length < 1) return [];
                let definition = '<ul class="ec">';
                for (const def of symbols.parts)
                    if (def.means && def.means.length > 0) {
                        let pos = def.part || def.part_name || '';
                        pos = pos ? `<span class="pos simple">${pos}</span>` : '';
                        definition += `<li class="ec">${pos}<span class="ec_chn">${def.means.join()}</span></li>`;
                    }
                definition += '</ul>';
                let css = `<style>
                ul.ec, li.ec {margin:0; padding:0;}
                span.simple {background-color: #999!important}
                span.pos  {text-transform:lowercase; font-size:0.9em; margin-right:5px; padding:2px 4px; color:white; background-color:#0d47a1; border-radius:3px;}
                </style>`;
                notes.push({ css, expression, reading, definitions: [definition], audios });
                return notes;
            } catch (error) {
                return [];
            }
        }

        function getOxford(data) {
            try {
                let simple = data.dict_result.simple_means;
                let expression = simple.word_name;
                if (!expression) return [];

                let symbols = simple.symbols[0];
                let reading_uk = symbols.ph_en || '';
                let reading_us = symbols.ph_am || '';
                let reading = reading_uk && reading_us ? `uk[${reading_uk}] us[${reading_us}]` : '';

                let audios = [];
                audios[0] = `https://fanyi.baidu.com/gettts?lan=uk&text=${encodeURIComponent(expression)}&spd=3&source=web`;
                audios[1] = `https://fanyi.baidu.com/gettts?lan=en&text=${encodeURIComponent(expression)}&spd=3&source=web`;

                let entries = data.dict_result.oxford.entry[0].data;
                if (!entries) return [];

                let definitions = [];
                for (const entry of entries) {
                    if (entry.tag == 'p-g' || entry.tag == 'h-g') {
                        let pos = '';
                        for (const group of entry.data) {
                            let definition = '';
                            if (group.tag == 'p') {
                                pos = `<span class='pos'>${group.p_text}</span>`;
                            }
                            if (group.tag == 'd') {
                                definition += pos + `<span class='tran'><span class='eng_tran'>${group.enText}</span></span>`;
                                definitions.push(definition);
                            }

                            if (group.tag == 'n-g') {
                                definition += buildDefinitionBlock(expression, pos, group.data);
                                definitions.push(definition);
                            }


                            //if (group.tag == 'xrs') {
                            //    definition += buildDefinitionBlock(pos, group.data[0].data);
                            //    definitions.push(definition);
                            //}

                            if (group.tag == 'sd-g' || group.tag == 'ids-g' || group.tag == 'pvs-g') {
                                for (const item of group.data) {
                                    if (item.tag == 'sd') definition = `<div class="dis"><span class="eng_dis">${item.enText}</span></div>` + definition;
                                    let defs = [];
                                    if (item.tag == 'n-g' || item.tag == 'id-g' || item.tag == 'pv-g') defs = item.data;
                                    if (item.tag == 'vrs' || item.tag == 'xrs') defs = item.data[0].data;
                                    definition += buildDefinitionBlock(expression, pos, defs);
                                }
                                definitions.push(definition);
                            }
                        }
                    }
                }
                let css = encn_Oxford.renderCSS();
                notes.push({ css, expression, reading, definitions, audios });
                return notes;
            } catch (error) {
                return [];
            }

        }

    }

    static renderCSS() {
        let css = `
            <style>
                div.dis {font-weight: bold;margin-bottom:3px;padding:0;}
                span.grammar,
                span.informal   {margin: 0 2px;color: #0d47a1;}
                span.complement {margin: 0 2px;font-weight: bold;}
                div.idmphrase {font-weight: bold;margin: 0;padding: 0;}
                span.eng_dis  {margin-right: 5px;}
                span.chn_dis  {margin: 0;padding: 0;}
                span.pos  {text-transform:lowercase; font-size:0.9em; margin-right:5px; padding:2px 4px; color:white; background-color:#0d47a1; border-radius:3px;}
                span.tran {margin:0; padding:0;}
                span.eng_tran {margin-right:3px; padding:0;}
                ul.sents {font-size:0.9em; list-style:square inside; margin:3px 0;padding:5px;background:rgba(13,71,161,0.1); border-radius:5px;}
                li.sent  {margin:0; padding:0;}
                span.eng_sent {margin-right:5px;}
            </style>`;
        return css;
    }
}
2. Front 

//Front Template

<div style='font-family:  Segoe U; font-size: 40px; color:blue '>{{cloze}}</div>

<br>

<div style='font-family:  Segoe U; font-size: 25px; color:green '>{{definition}}</div>

{{type:word}}

<div class="search">

  <a href="https://dict.laban.vn/find?type=1&query={{text:word}}">La bàn</a> //  

  <a href="https://www.thefreedictionary.com/{{text:word}}">The Free Dictionary</a>  //  

  <a href="https://getyarn.io/yarn-find?text={{text:word}}">Get Yarn</a>  //  

  <a href="https://youglish.com/search/{{text:word}}/all?">YouGlish</a>  //  

  <a href="http://images.google.com/search?tbm=isch&q={{text:word}}">Image</a>

</div>

<br>

<div style='font-family:  Segoe U; font-size: 20px;'>{{picture}}</div>


3. Back

{{type:word}}

<hr id=answer>

<div style='font-family:  Segoe U; font-size: 25px;'>{{phonetic symbol}}</div>

<div style='font-family:  Segoe U; font-size: 20px;'>{{audio}}</div>

<div style='font-family:  Segoe U; font-size: 25px; color:green '>{{definition}}</div>

<div class="search">

  <a href="https://dict.laban.vn/find?type=1&query={{text:word}}">La bàn</a> //  

  <a href="https://www.thefreedictionary.com/{{text:word}}">The Free Dictionary</a>  //  

  <a href="https://getyarn.io/yarn-find?text={{text:word}}">Get Yarn</a>  //  

  <a href="https://youglish.com/search/{{text:word}}/all?">YouGlish</a>  //  

  <a href="http://images.google.com/search?tbm=isch&q={{text:word}}">Image</a>

</div>

<div class="link"><a href="{{Url}}">web:{{word}}</a></div>

<br>

<div style='font-family:  Segoe U; font-size: 20px;'>{{ex}}</div>

<br>

<div style='font-family:  Segoe U; font-size: 20px;'>{{picture}}</div>

<div style='font-family: Cambria; font-size: 20px;'>{{Description}}</div>


4. Styling

.card {

 font-family: Segoe U;

 font-size: 35px;

 text-align: center;

 color: black;

 background-color: white;

}

.search {

 font-family: Arial;

 font-size: 13px;

 color: blue;

 padding-bottom: 10px;

}

.link {

 font-family: Arial;

 font-size: 15px;

 text-align: right;

}

#typeans { font-size:60px !important }

#typeans { text-align: center !important }


Không có nhận xét nào:

Đăng nhận xét