[PYTHON] Ich habe ein Paket wie das Weblio-Popup-Wörterbuch Englisch-Japanisch mit Sublime Text3 erstellt

Das Weblio-Popup-Wörterbuch Englisch-Japanisch war praktisch, daher dachte ich, es wäre schön, wenn der Texteditor eine solche Funktion hätte.

Das Weblio-Popup-Wörterbuch Englisch-Japanisch zeigt die Suchergebnisse des Wörterbuchs wie ↓ an. weblioポップアップ英和辞典.png
Im obigen Beispiel ist das zu suchende Wort invertiert, es gibt jedoch auch eine Einstellung, mit der Sie es einfach mit der Maus anzeigen können.

Zielfunktion

Es stellte sich heraus, dass es so etwas war.

PopTranslateEnglishIntoJapaneseの見た目.png

Umgebung

Referenzierte Site

Code

PopTranslateEnglish.py


# coding=UTF-8
import sublime, sublime_plugin
import urllib.request
import xml.etree.ElementTree as ET

class popTranslateEnglishIntoJapaneseCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        search_word = self.view.substr(self.view.sel()[0])
        if search_word == "":
            print('none select word')
            return
        else:
            print(search_word)

        item_id = self.getItemID(search_word)
        text = self.getTranslatedText(item_id)
        if text == '':
            return

        text_arr = self.splitTranslatedText(text, '\t')
        self.view.show_popup_menu(text_arr, None)


    def getXmlElementText(self, url, tag):
        print('url : ' + url)
        try:
            xml = urllib.request.urlopen(url)
        except urllib.error.HTTPError as e:
            print('error code : ' + str(e.code))
            print('error read : ' + str(e.read()))
            return ''

        print(xml)
        tree = ET.parse(xml)
        root = tree.getroot()
        element = root.find('.//{http://btonic.est.co.jp/NetDic/NetDicV09}' + tag)
        text = element.text
        print(text)
        return text

    def getItemID(self, search_word):
        head = 'http://public.dejizo.jp/NetDicV09.asmx/SearchDicItemLite?Dic=EJdict&Word='
        end = '&Scope=HEADWORD&Match=EXACT&Merge=OR&Prof=XHTML&PageSize=20&PageIndex=0'
        url = head + search_word + end
        return self.getXmlElementText(url, 'ItemID')

    def getTranslatedText(self, item_id):
        head = 'http://public.dejizo.jp/NetDicV09.asmx/GetDicItemLite?Dic=EJdict&Item='
        end = '&Loc=&Prof=XHTML'
        url = head + item_id + end
        return self.getXmlElementText(url, 'Body/div/div')

    def splitTranslatedText(self, translated_text, split_word):
        return translated_text.split(split_word)

Was hast du getan?

  1. Suchen Sie zunächst nach einem Paket Erfahren Sie die grundlegende Methode zum Erstellen unter dem folgenden Link. [Seit ich sublime-text3 verwende, habe ich auch ein Plug-In erstellt](http://wood-roots.com/web%E5%88%B6%E4%BD%9C/%E3%83%84%E3% 83% BC% E3% 83% AB% E3% 82% A8% E3% 83% 87% E3% 82% A3% E3% 82% BF / erhabener Text3% E3% 82% 92% E4% BD% BF% E3% 81% 84% E3% 81% AF% E3% 81% 98% E3% 82% 81% E3% 81% 9F% E3% 81% AE% E3% 81% A7% E3% 83% 97% E3% 83% A9% E3% 82% B0% E3% 82% A4% E3% 83% B3% E3% 82% 82% E4% BD% 9C% E3% 81% A3% E3% 81% A6% E3% 81% BF% E3% 81% 9F) Ich habe übrigens das Gefühl, die Beschreibung von Python zu verstehen.

  2. Wie übersetze ich ... Zuerst habe ich nach Weblios API gesucht, sie aber nicht gefunden. Ich habe festgestellt, dass ich es anscheinend unter dem folgenden Link übersetzen kann. Beispiel für einen Ruby-Code, der die Englisch-Japanisch / Japanisch-Englisch-Wörterbuch-API dejizo aufruft Wenn Sie die englischen Wörter und Parameter, die Sie in der URL suchen möchten, wie eine Funktion beschreiben, wird anscheinend das XML des Übersetzungsergebnisses zurückgegeben. Es fühlt sich an, als würde man das zurückgegebene XML analysieren und das Übersetzungsergebnis erhalten. Da es sich bei dem Beispiel jedoch um Ruby handelt, wie kann man es mit Python realisieren ...

  3. urllib und xml.etree.ElementTree Es scheint, dass dies mit diesen beiden Bibliotheken realisiert werden kann. Sie können die Daten abrufen, wenn Sie mit urllib auf die URL zugreifen. Diesmal können Sie die XML-Datei abrufen. Der Ablauf des Parsens des von xml.etree.ElementTree erfassten XML. Sie können herausfinden, wie Sie jede Bibliothek von Google verwenden.

  4. Zeitaufwändiger Teil

Ich bekomme das Element hier, aber der in '{}' eingeschlossene Teil ist der Namespace. Weitere Informationen finden Sie unter Bearbeiten von XML mit Namespace in Python (Elementbaum). Übrigens, wenn Sie './/' hinzufügen, können Sie nicht nur untergeordnete Elemente, sondern auch Enkelelemente und darüber hinaus suchen.

  1. Schließlich Ich habe das Paket zum ersten Mal gemacht, aber es war an einem Tag so einfach wie möglich. Ich habe GitHub registriert, aber es gibt kein Repository. Ich werde es schaffen, wenn ich Lust dazu habe.

Recommended Posts

Ich habe ein Paket wie das Weblio-Popup-Wörterbuch Englisch-Japanisch mit Sublime Text3 erstellt
Ich habe einen Python-Text gemacht
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht
Ich habe mit Python eine Lotterie gemacht.
Ich habe mit Python einen Daemon erstellt
Ich habe ein Paket erstellt, das morphologische Analysegeräte mit Python vergleichen kann
W3C-Validatoren haben mit Sublime Text3 nicht funktioniert, also habe ich es zum Laufen gebracht
Ich habe mit Python einen Zeichenzähler erstellt
Anfänger: Ich habe einen Launcher mit dem Wörterbuch erstellt
Ich habe einen Gesprächspartner wie Siri gemacht
Ich habe mit Python eine Hex-Map erstellt
Ich habe ein Lebensspiel mit Numpy gemacht
Ich habe einen Hanko-Generator mit GAN gemacht
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe eine WEB-Bewerbung bei Django gemacht
Ich habe mit Python einen Neuronensimulator erstellt
Ich habe einen Stempelersatzbot mit Linie gemacht
Ich habe eine Python-Wörterbuchdatei für Neocomplete erstellt
Ich habe mit Python eine Bot-Wettervorhersage gemacht.
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
Ich habe eine einfache Brieftasche aus Bitcoin mit Pycoin gemacht
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Ich habe mit Numpy eine Grafik mit Zufallszahlen erstellt
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Mattermost Bot mit Python gemacht (+ Flask)
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Ich habe mit LINE Bot ein Haushaltsbuch für Bot erstellt
Ich habe mit Play with Docker einen gebrauchsfertigen Syslog-Server erstellt
Ich habe mit Python ein Weihnachtsbaum-Beleuchtungsspiel gemacht
Ich habe mit Tkinter ein Fenster für die Protokollausgabe erstellt
Ich habe mit Python eine App für die Benachrichtigung über Netznachrichten erstellt
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Ich habe ein Tool zur Erzeugung sich wiederholender Textdaten "rpttxt" erstellt.
Ich habe mit Sense HAT ein gefallenes Monospiel gemacht
Richten Sie mit Sublime Text 2 eine Python-Entwicklungsumgebung ein
〇✕ Ich habe ein Spiel gemacht
Pythonbrew mit erhabenem Text
Eine Geschichte, die stolperte, als ich mit Transformer einen Chat-Chat-Bot erstellte
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
Ich habe eine einfache Buch-App mit Python + Flask ~ Introduction ~ erstellt
Ich habe einen Ressourcenmonitor für Raspberry Pi mit einer Tabelle erstellt
Ich möchte das Paket aus den Anforderungen.txt mit Poesie installieren
Ich habe einen harten Pomodoro-Timer entwickelt, der mit CUI funktioniert
Ich habe zum ersten Mal eine Überwachungskamera mit Raspberry PI gemacht.
[AWS] Ich habe BOT mit LINE WORKS (Implementierung) in Erinnerung gerufen.
Ich habe einen Blackjack mit Python gemacht!
Ich habe einen Zwietrachtbot gemacht
Ich habe COVID19_simulator mit JupyterLab erstellt
Ich habe Word2Vec mit Pytorch gemacht
Ich habe Wordcloud mit Python gemacht.
Ich habe eine einfache Schaltung mit Python gemacht (AND, OR, NOR, etc.)