Visit Our UNIX and Linux User Community


Combining two perl commands into one


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Combining two perl commands into one
# 8  
Old 04-03-2020
Hello
A good idea. I also started up. nezabudka / srt_to_ass . GitLab
I tried to work with your script, but since I have slow Internet, I was not able to translate the file over all night. I tried to send requests in a non-blocking cycle in the background, but after around 75% percent of translated in 5 minutes banned me in Google. Smilie
I had to look for workarounds. That's what I did. I translate in portions of 50 renumbered lines. The script runs 1 to 2 minutes. I just made a release, I still need to write explanations and test. If it will be interesting, I will write a little later
These 2 Users Gave Thanks to nezabudka For This Post:
# 9  
Old 04-04-2020
Quote:
Originally Posted by nezabudka
Hello
A good idea. I also started up. nezabudka / srt_to_ass . GitLab
I tried to work with your script, but since I have slow Internet, I was not able to translate the file over all night. I tried to send requests in a non-blocking cycle in the background, but after around 75% percent of translated in 5 minutes banned me in Google. Smilie
Google only bans for an hour or two. You'll be up and running again quickly. Smilie



Quote:
I had to look for workarounds. That's what I did. I translate in portions of 50 renumbered lines. The script runs 1 to 2 minutes. I just made a release, I still need to write explanations and test. If it will be interesting, I will write a little later
Nice script! You are much better at this than I am. Much of the code is new to me, so it might take a while for me to understand it.



It runs fine for me with file.srt or if I use any .srt file that is English with no strange characters, but if I use a source file that has French in it, it doesn't work:



Code:
parameters selected: en[source] ru[target] ru[top screen]
seq: missing operand
Try 'seq --help' for more information.
file .srt is Ok...
file .text is Ok...
Translating...

It will continue to translate but the translation will end up scrambled. This would be so great to get working. I put in a few hours today trying to fix it with no luck.
# 10  
Old 04-05-2020
Hi
I added a description to the repository. your 'seq' swears either at the wrong format or at the absence of a parameter. Try in the terminal first:
Code:
seq -f'(%.f)' 5

If everything works well then in the script in line 60 add
Code:
echo ${lastn//[!0-9]}
exit

It should output the last record number from the .srt file in the original it is 1237
I tried to run into Debian and also got an error in the first break point.
In fedora 30
Code:
parameters selected: en[source] ru[target] ru[top screen]
file .srt is Ok...
file .text is Ok...
Translating...
1250/1237
file .trans is Ok...
all files are moved to the fil-ass.bd7 directory
done!

Gone to debug
I apologize for the late reply. Notifications do not reach. I need to check spam filter

--- Post updated at 23:26 ---

I push the output files in the 'develop' branch

--- Post updated at 23:55 ---

I found out that Debian didn't work. 'mawk' was installed by default, did so
Code:
sudo apt install gawk
sudo apt install translate-shell
./to.sh file.srt
parameters selected: en[source] ru[target] ru[top screen]
file .srt is Ok...
file .text is Ok...
Translating...
350/1237[WARNING] Connection timed out. Retrying IPv4 connection.
650/1237[WARNING] Connection timed out. Retrying IPv4 connection.
700/1237[WARNING] Connection timed out. Retrying IPv4 connection.
750/1237[WARNING] Connection timed out. Retrying IPv4 connection.
950/1237[WARNING] Connection timed out. Retrying IPv4 connection.
1200/1237[WARNING] Connection timed out. Retrying IPv4 connection.
1250/1237
file .trans is Ok...
all files are moved to the fil-ass.heA directory
done!

Small network problems but everything worked correctly without changes in the script
This User Gave Thanks to nezabudka For This Post:
# 11  
Old 04-05-2020
I'm going to give it a try tomorrow when I can dedicate more time to it. Thank you so much! Smilie


Updated:


Code:
user@localhost:~$ seq -f'(%.f)' 5
(1)
(2)
(3)
(4)
(5)

With:
Code:
echo ${lastn//[!0-9]} exit

The response was 1237.

Your English to Russian file seems to work fine. Whenever I've tried to use an English for French file, there was nothing inside of mysub.trans. mysub.text would look like this:

Code:
 1
 I'd been living with Marianne
 almost 3 years
 
 2
 in an apartment belonging to her.
 
 3
 Things were fine between us,
 till she said one day:
 
 4
 Got a second?
 
 5
   Yes, why?

Note the space before the text and the absence of brackets. The mysub.srt file was a UTF-8, like yours.

I've attached the files I used to this post. And I'll continue to keep testing as you update it.

Last edited by bedtime; 04-06-2020 at 12:03 PM..
This User Gave Thanks to bedtime For This Post:
# 12  
Old 04-07-2020
Hi
Code:
file Mother.srt
Mother.srt: UTF-8 Unicode text, with CRLF line terminators
sed -i 's/\r//g'  Mother.srt
file Mother.srt
Mother.srt: UTF-8 Unicode text

./to.sh Mother.srt
parameters selected: fr[source] ru[target] ru[top screen]
file .srt is Ok...
file .text is Ok...
Translating...
100/100
file .trans is Ok...
all files are moved to the Mot-ass.zyH directory
done!
cd Mot-ass.zyH
tail -6 Mother.ass
Dialogue: 0,0:14:13.14,0:14:14.68,ru,,0000,0000,0000,,Я большой поклонник.
Dialogue: 0,0:14:13.14,0:14:14.68,fr,,0000,0000,0000,,Je suis un grand admirateur.
Dialogue: 0,0:14:15.31,0:14:17.52,ru,,0000,0000,0000,,- 'ы читали это? - Много раз.
Dialogue: 0,0:14:15.31,0:14:17.52,fr,,0000,0000,0000,,- Vous l'avez lu ? - Plein de fois.
Dialogue: 0,0:14:17.69,0:14:19.69,ru,,0000,0000,0000,,Твои слова изменили мою жизнь.
Dialogue: 0,0:14:17.69,0:14:19.69,fr,,0000,0000,0000,,Vos mots ont changé ma vie.


Last edited by nezabudka; 04-07-2020 at 11:45 AM..
This User Gave Thanks to nezabudka For This Post:
# 13  
Old 04-08-2020
Quote:
Originally Posted by nezabudka
file Mother.srt
Mother.srt: UTF-8 Unicode text, with CRLF line terminators
sed -i 's/\r//g' Mother.srt
file Mother.srt
Mother.srt: UTF-8 Unicode text
This did help a lot. There still seems to be several missing translations. I've attached the files for you.

Example:
Code:
Dialogue: 0,0:18:22.35,0:18:24.83,en,,0000,0000,0000,,one day he left his car unlocked.
Dialogue: 0,0:18:22.35,0:18:24.83,fr,,0000,0000,0000,,un jour, il a laissé sa voiture déverrouillée.
Dialogue: 0,0:18:26.67,0:18:27.75,en,,0000,0000,0000,,I even...
Dialogue: 0,0:18:26.67,0:18:27.75,fr,,0000,0000,0000,,
Dialogue: 0,0:18:28.35,0:18:29.71,en,,0000,0000,0000,,Wait, what am I saying?
Dialogue: 0,0:18:28.35,0:18:29.71,fr,,0000,0000,0000,,
Dialogue: 0,0:18:29.87,0:18:31.39,en,,0000,0000,0000,,It was before. I was younger.
Dialogue: 0,0:18:29.87,0:18:31.39,fr,,0000,0000,0000,,C'était avant. J'étais plus jeune.
Dialogue: 0,0:18:33.71,0:18:35.87,en,,0000,0000,0000,,Anyway, I opened the door...
Dialogue: 0,0:18:33.71,0:18:35.87,fr,,0000,0000,0000,,
Dialogue: 0,0:18:41.35,0:18:43.47,en,,0000,0000,0000,,and took a picture of myself inside,
 Dialogue: 0,0:18:41.35,0:18:43.47,fr,,0000,0000,0000,,et a pris une photo de moi à l'intérieur,

This might be due to the way Google sometimes sends back the information that is between brackets. Often Google will add a space here and there as such: (1 ) instead of (1) and then the program won't recognise it and it'll be skipped. I was able to fix this issue in my new program by accounting for spaces between the brackets.


Google will also sometimes flip the brackets, like this:

Code:
Source: (1) Hello
Translation: Hello (1)

Then the program attempts to grab everything that is beyond the (1) but being flipped there is nothing there to grab. I found that using double brackets '((1))' seemed to stop the flipped numbers and deliver more consistent results than using single brackets. The program below will do batch translations of entire .srt files in minutes. I've only tested it on a few files, but so far it works well doing English to French or French to English as well as Russian. The code was rushed, and I'll need to do some optimization:


Subtitle .srt to .ass translator . GitHub
# 14  
Old 04-08-2020
The files from your code are here:

Previous Thread | Next Thread
Test Your Knowledge in Computers #508
Difficulty: Easy
A variable is basically a memory location in which a value can be stored.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Combining 2 commands

Hello all, I need to send an attachment and text in the body, both in the same Email. Below are two cammand that send the required data in separate Emails. I need to combine them so that I get just 1 Email containing the attachment & text in the body. uuencode ${filename} "${file_}" |... (6 Replies)
Discussion started by: Junaid Subhani
6 Replies

2. Shell Programming and Scripting

How to combining awk commands?

I can achieve two tasks with 2 different awk commands: 1) awk -F";;WORD" '{print $2}' file | sed '/^$/d' #to find surface_word 2) awk -F"bw:|gloss:" '// {print $2}' file | sed '/\//!d; s:/*+*: + :g; s:^+::; s: *+ *$::;' #to find segmentation of surface_word Number 1) finds surface_word... (7 Replies)
Discussion started by: Viernes
7 Replies

3. UNIX for Dummies Questions & Answers

Help with combining the ls and 'file' commands

I have a directory of 3000 files without extensions (Solaris 5.10). I would like to iterate the file names through the 'file' command and output their mime types (most are pdf or jpg, but a very few might be psd or swf which show simply as 'data') So, I would like the output of the 'ls'... (2 Replies)
Discussion started by: pwallace
2 Replies

4. UNIX for Dummies Questions & Answers

Combining resukts of ls commands

Hi, I have a directory with some XML files in it. I can use wildcards to get the list of XMLs I want say I have following XMLs in same dir Employee1.xml Employee2.xml Employee3.xml and Salary1.xml Salary2.xml Salary3.xml apart from other .txt .dat files etc I want to write a unix... (7 Replies)
Discussion started by: dsrookie
7 Replies

5. UNIX for Dummies Questions & Answers

Combining two commands that use sar.

hey can anyone tell me how can i combine these two commands so that it is executed only once, but gives me both the results. IDLE=`sar 30 6 | grep Average | awk '{print $1 $5}' ` sar 30 120 | awk '{print $1" "$5}' >> mailx -m -s "$MSG" xyz@abc.com. (5 Replies)
Discussion started by: Ankur Khatri
5 Replies

6. Shell Programming and Scripting

Combining multiple commands

Hi Guys, I am looking to optimze these 5 SSH lines to a single SSH to get my machine to not hang! lol! cat hosts.lst | xargs -n1 -t -i echo 'home/util/timeout 6 0 ssh -q {} top -b > util/{}.top &' >> r_query_info cat hosts.lst | xargs -n1 -t -i echo 'home/util/timeout 6 0 ssh -q {} uname -r... (5 Replies)
Discussion started by: wick3dsunny
5 Replies

7. UNIX for Advanced & Expert Users

Combining two commands.

Is there anyway to achieve "find /home -name "*.bashrc" 2>/dev/null" and "PS1="\n>"" in the same command? I just wanna add a line to the previous command to change the PS1 variable to ">". (1 Reply)
Discussion started by: raidkridley
1 Replies

8. UNIX for Dummies Questions & Answers

combining commands

Hello all, I am trying to list and count all the files of a particular type in any given directory. I can use the commands separately but when I combine them they do not give an output. The command for counting the files is ls -1 | wc -l and for listing all the file of particular type say... (2 Replies)
Discussion started by: BigTool4u2
2 Replies

9. UNIX for Dummies Questions & Answers

combining sed commands

I would like to change the lines: originalline1 originalline2 to: originalline1new originalline1newline originalline2new originalline2newline To do this, id like to combine the commands: sed 's/^/&new/g' file > newfile1 and sed '/^/ a\\ newline\\ \\ (2 Replies)
Discussion started by: Dave724001
2 Replies

10. UNIX for Dummies Questions & Answers

Combining elements of different commands in history

What is the correct format for a single command that would combine portions of 2 different lines in the command history? I'm using a C shell. Here's a simplified command history to clarify: 4 rm file1 5 ls -ld file2 file3 file4 6 cat file 5 With the above history, what would be the... (5 Replies)
Discussion started by: Dbyte
5 Replies

Featured Tech Videos