in reply to Re^3: De-googleizing translation scripts
in thread De-googleizing translation scripts
Thanks everyone who told me directly that I had left my fly undone. I was amazed that the example code worked right out of the gate...I guess it wasn't just an example, I got a little fooled as I hadn't searched for my key yet. (now changed) It's a pretty slick operation at deepl.
First of all, bliako, thank you for your response, and it's good to hear from you. I had feared for your welfare with your proximity to ...Charybdis, but you sound no worse for the wear. I got some better results and then tried to extend it, make it more bliako-esque, and didn't quite get there. The writeup will be better in readmores:
Ok. I relegated config values to a config file, and used some cyrillic for what was homophonic to "tiny." The thing I know is that if I'm trying to work with that file and I don't have a cyrillic keyboard, I'm screwed. I'm intentionally trying to make that subroutine and file prickly pears. We're gonna be hip deep in utf8 real soon, so let's allow it into the source:
#!/usr/bin/perl # tiny is homophonic to тайный, me +aning secret in russian use v5.030; # strictness implied use warnings; use Path::Tiny; use HTTP::Tiny; use JSON::MaybeXS; use utf8; my $file_in = path("/home/fritz/Desktop/1.enchanto.txt"); my $file_out = path('/home/fritz/Desktop/1.enc_trans.txt'); my $lang = 'es'; # slurp file my $guts = $file_in->slurp_utf8; my @spl = split( '\n', $guts ); # get credentials my ( $url, $key ) = get_тайный(); #say "$url, $key"; my $ua = HTTP::Tiny->new( 'verify_SSL' => '1' ); for my $para (@spl) { say $para; my $payload = "text=$para&target_lang=$lang"; my $payloadlen = length($payload); my $response = $ua->request( 'POST' => $url, { headers => { 'Authorization' => "DeepL-Auth-Key $key", 'Content-Length' => $payloadlen, 'Accept' => '*/*', 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' => 'curl/7.55.1' }, content => $payload, }, ); die "Failed!\n" unless $response->{success}; print $response->{content} if length $response->{content}; my $content = $response->{content}; say "content is $content"; my $data = decode_json($content); say "data is $data"; my $text1 = $data->{'translations'}->[0]->{'text'}; $file_out->append_utf8( $para, $text1 ); sub get_тайный { use Config::Tiny; my $ini_path = qw( 1.тайный.tx +t ); my $sub_hash = "deepl"; my $Config = Config::Tiny->new; $Config = Config::Tiny->read( $ini_path, 'utf8' ); # -> is optional between brackets my $url = $Config->{$sub_hash}{'url'}; my $key = $Config->{$sub_hash}{'key'}; #dial up the server $DB::single = 1; return ( $url, $key ); } } __END__
And, yay, this compiles and behaves. I always get something from the translations. I wouldn't have thought that anything I had written would sound like a gangster, but it kind of did:
I have noticed that a sign went up in yard indicating that you were lo +oking to leave Eagle Meadows. ...Me he dado cuenta de que se ha puest +o un cartel en el jardín indicando que querías dejar Eagle Meadows.
fritz@laptop:~/Documents$ trans "puesto un cartel" puesto un cartel put up a poster Translations of puesto un cartel [ Español -> English ] puesto un cartel put up a poster, put a sign fritz@laptop:~/Documents$
I don't want to be casually mentioning a cartel to my hispanic neighbors, so I'll give the translator a better idea of a real-estate sign.
*They* have now linked your CC, your translations and your monk handle and thus your comments. Brrrr (but hey the danger is not with "They" but with evil dictators outside Western Democracies /sic/ /sarcasm-off)I'm much less worried about my enemies, who don't know me, than my "friends" who get the raw feed from the all-slurping back door of google. "They" give that data to a "they" in London and Jerusalem. I would just as soon eat a cheeseburger without Benjamin Netanyahu knowing where that was happening in real time. Meanwhile, his thesis regarding Americans is that he can do whatever he wants to, as he has stated before, in his twisted version of "Philadelphia Freedom." Able to beat every rap..., but I can't change him, I've gotta change things on the me side of it.
Q1) Let's premise that we all live in some type of battlefield, that the battlefield is everywhere (Snowden). Being able to locate a telephone signal literally or through digital means is how a lot people get got in this world. Is a VPN in conjunction with your phone a good idea if you don't want to be broadcasting your meta-data to the usual listeners?
Definitely-OT Q2) Does one have any less exposure with an Apple phone than an android?
Let me get back to perl.
Where would I like to go with this script? I don't think it's finished mod one until the data is segregated from the code. Clearing things out of main. For example,
my $file_in = path("/home/fritz/Desktop/1.enchanto.txt"); my $file_out = path('/home/fritz/Desktop/1.enc_trans.txt'); my $lang = 'es';
These are hard-coded in main. No bueno. Also, I want to isolate the http section as a subroutine. Why this? Because I don't understand it, so I'm trying to contrast it with something I know better, namely HTTP::Request and Data::Roundtrip.
But I just can't put it all together. I get confused with hashes versus arrays, and while I aspire to be able to put together that perfectly-economical data structure like bliako does, but I don't get there without hitting every branch of the tree. Here's what I have now:
#!/usr/bin/perl # tiny is homophonic to тайный, me +aning secret in russian use v5.030; # strictness implied use warnings; use utf8; our $debug = 1; my $ref_events = init_event(); my $ref_from_http = http_tiny($ref_events, $debug); sub http_tiny { my ($ref_events, $debug) = (@_); use Path::Tiny; use HTTP::Tiny; use JSON::MaybeXS; $debug //= 0; my %h = %$ref_events; my $file_in = $h{infile}; my $file_out = $h{outfile}; my $lang = $h{lang}; # slurp file my $guts = $file_in->slurp_utf8; my @spl = split( '\n', $guts ); # get credentials my ( $url, $key ) = get_тайный(); #say "$url, $key"; my $ua = HTTP::Tiny->new( 'verify_SSL' => '1' ); for my $para (@spl) { say $para; my $payload = "text=$para&target_lang=$lang"; my $payloadlen = length($payload); my $response = $ua->request( 'POST' => $url, { headers => { 'Authorization' => "DeepL-Auth-Key $key", 'Content-Length' => $payloadlen, 'Accept' => '*/*', 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' => 'curl/7.55.1' }, content => $payload, }, ); die "Failed!\n" unless $response->{success}; if ( $debug > 0 ) { print "$0 : $payload\n$0 : sending above payload, of $payloadlen + bytes..."; } #print $response->{content} if length $response->{content}; my $content = $response->{content}; #say "content is $content"; my $data = decode_json($content); #say "data is $data"; my $text1 = $data->{'translations'}->[0]->{'text'}; $file_out->append_utf8( $para, $text1 ); } sub get_тайный { use Config::Tiny; my $ini_path = qw( 1.тайный.tx +t ); my $sub_hash = "deepl"; my $Config = Config::Tiny->new; $Config = Config::Tiny->read( $ini_path, 'utf8' ); # -> is optional between brackets my $url = $Config->{$sub_hash}{'url'}; my $key = $Config->{$sub_hash}{'key'}; #dial up the server $DB::single = 1; return ( $url, $key ); } } sub init_event { my $hr = { infile => '/home/fritz/Desktop/1.enchanto.txt', outfile => '/home/fritz/Desktop/1.enc_trans.txt', lang => 'es', }; return $hr; } __END__
It compiles but doesn't behave, acting as if it can't find Path::Class in a strange place. I'm mystified by it, but since I'm rusty, I'm in the process of hitting every branch on the mistake tree. To wit:
fritz@laptop:~/Documents$ ./5.trans.pl Name "DB::single" used only once: possible typo at ./5.trans.pl line 9 +6. Can't locate object method "slurp_utf8" via package "/home/fritz/Deskt +op/1.enchanto.txt" (perhaps you forgot to load "/home/fritz/Desktop/1 +.enchanto.txt"?) at ./5.trans.pl line 35. fritz@laptop:~/Documents$
So what do I want to do with it? Well, get it working again, and thanks for comments in that regard, but then I'd also like to work up what this would look like instead using HTTP::Request and Data::Roundtrip.
una velada agradable para el monasterio,
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: De-googleizing translation scripts
by bliako (Abbot) on Nov 07, 2022 at 10:26 UTC | |
by Aldebaran (Curate) on Nov 18, 2022 at 08:07 UTC | |
by karlgoethebier (Abbot) on Nov 18, 2022 at 16:56 UTC | |
by bliako (Abbot) on Nov 29, 2022 at 10:13 UTC |