Романизировать общий японский язык в командной строке

Я хотел бы транслитерировать общий японский язык, включая кандзи, с помощью стандартной системы Хепберна в команде bash линия.

Я оценил несколько вариантов, но

  • Переводчик Google (доступен через Translate Shell) точен только в Хирагане / Катакане.
  • KAKASI доставляет ASCII, но без транслитерации (поэтому Toukyou вместо Tōkyō)

Итак, я хотел бы проанализировать вывод http://nihongo.j-talk.com. находится в div.outputwrap или div.output

Если бесполезно делать это только с помощью инструментов Bash (curl / jq?), Как я могу достичь этого с помощью Python / BeautifulSoup?

Извините за то, что не предоставил фрагмент, я понятия не имею, как отправить данные на веб-сайт и использовать результат, если нет API.


person Darko Dordic    schedule 17.12.2017    source источник


Ответы (1)


Взглянув на исходный HTML-код сайта http://nihongo.j-talk.com, я я догадался об API.
Вот шаги:

1) Отправьте японскую строку на сервер с помощью wget и получите результат в index.html.
2) Разберите index.html и извлеките строки ромадзи.

Вот пример кода:

#!/bin/bash

string="日本語は、主に日本で使われている言語である。日本では法規によって「公用語」として規定されているわけではないが、各種法令(裁判所法第74条、会社計算規則第57条、特許法施行規則第2条など)において日本語を用いることが定められるなど事実>上の公用語となっており、学校教育の「国語」でも教えられる。"

uniqid="46a7e5f7e7c7d8a7d9636ecb077da485479b66bc"

wget -N --post-data "uniqid=$uiqid&Submit='Translate Now'&kanji_parts=standard&kanji=$string&converter=spaced&kana_output=romaji" http://nihongo.j-talk.com/ > /dev/null 2>&1 

perl -e ' 
$file = "index.html"; 
open(FH, $file) or die "$file: $!\n";

while (<FH>) {
    if (/<div id=.spaced. class=.romaji.>(.+)/) {
        ($str = $1) =~ s/<.*?>//g;
        $str =~ s/\&\#(\d+);/&utfconv($1)/eg;
        print $str, "\n";
    }
}

# utf16 to utf8
sub utfconv {
    $utf16 = shift;
    my $upper = ($utf16 >> 6) & 0b0001_1111 | 0b1100_0000;
    my $lower = $utf16 & 0b0011_1111 | 0b1000_0000;
    pack("C2", $upper, $lower);
}'

Некоторые комментарии:
- Я написал парсер на Perl только потому, что он мне довольно знаком, но вы можете изменить или преобразовать его на другой язык, прочитав файл index.html.
- Строка uniqid - это то, что я выбрал из html-источника сайта. Если это не сработает, убедитесь, что встроено в исходный HTML-код.

Надеюсь это поможет.

person tshiono    schedule 17.12.2017