Witam!
Szacunek dla misterLu. Pomysł jak najbardziej słuszny i jak najbardziej git. Tyle że miałem to samo co kolega wyżej.
Więc nie siedząc na daremno zabrałęm się za małe korekty, które na początku nic nie dawały. Nie znajomość perla. Więc przyjaciel google wywalił mi parę kursów.
Nasunełą mi się myśl. Właściwie na onecie wszystkie słowniki są z ograniczonym dostępem więc czego nie bezpośrednio do
http://www.translate.pl/.
I dalej potoczyło się to tak:
1.Kilka zmian w skrypcie misterLu.
Code: Select all
#!/usr/bin/perl -w
use Getopt::Std;
%options=();
getopts("naf",\%options);
if($options{a}){
$direction=2;
}else{
$direction=1;
}
#adres slownika
$baseUrl="http://www.translate.pl/odp.php4?";
$GET{'word'}=$ARGV[0] or die("uzycie: $0 slowo_do_tlumaczenia");
$GET{'direction'}=$direction;
#$GET{'x'}=0;
#$GET{'y'}=0;
foreach $key (keys %GET){
$baseUrl.=$key."=".$GET{$key}."&";
}
$baseUrl=~s/\&$//;
use LWP::UserAgent;
use HTTP::Request;
my $userAgent = LWP::UserAgent->new();
$userAgent->agent("Opera/7.54 (X11; Linux i686; U)");
my $request = HTTP::Request->new(GET => $baseUrl);
$request->referer("http://www.translate.pl/");
$response=$userAgent->request($request);
if($response->is_error()){
printf("%s\n",$response->status_line);
exit;
}
my $content=$response->content();
$content=~s/<BR>/[BR]/ig;
#wywalmy tagi HTMLowe
use HTML::TreeBuilder;
my $tree=HTML::TreeBuilder->new;
$tree->parse($content);
$tree->eof;
$word=$GET{'word'};
$content=$tree->as_text();
$content=~ s/$word\w/$word /i;
$content=~s/\[BR\]/\n/g;
@versions=split("\n", $content);
$retList=$versions[8];
printf("%s\n", $retList);
exit;
2. I jeszcze w związku z tym że używam kodowania UTF-8 w systemie a strona jest w kodowaniu windowsa:
Code: Select all
#!/bin/bash
tlumacz.pl `echo "$@" |iconv -f UTF-8 -t CP1250` | iconv -f CP1250 -t UTF-8
3. Obydwa skrypty odpowiednio tlumacz.pl i tlumacz z prawami wykonywalnymi umieściłemw /usr/bin
ten serwis w przeciwieństwie do onetu nie rozpoznaje automatycznie czy polskie czy angielskie podało się słowo więc skrypt z opcją -a tłumaczy na język angielski (bez odwrotnie).
Wiec ostatecznie:
- tlumaczenie z angielskiego:
Code: Select all
$ tlumacz reload
Tłumaczenie: reload PRZEŁADOWAĆ; ZAREPETOWAĆ
- tłumaczenie na angielski i tu małe schody:
w przypadku polskich znaków skrypt nie potrafi odszukać odpowiednio ich wielkich liter.
Code: Select all
$ tlumacz -a PRZEŁADOWAĆ
Tłumaczenie: PRZEŁADOWAĆ TRANS-SHIP; RELOAD; OVERLOAD; OVERBURDEN
Code: Select all
$ tlumacz -a przeładować
Tłumaczenie: PRZEŁADOWAĆVTRANS-SHIP; RELOAD; OVERLOAD; OVERBURDEN
Co do przeróbek jak pisałem wcześniej jestem zaledwie początkującym w tym temacie i właściwie mimo tego jest to nadal skrypt działający na pomyśle misterLu. Same przeróbki skończyłem gdy skrypt zaczoł wypisywać to co powinien więc napewno wymaga poprawek z czym ja już mogę nie podołać.
Pozdrawiam!