#!/usr/bin/perl # tiny is homophonic to тайный, meaning 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.тайный.txt ); 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__