s
- скрипт для перекладу іншомовного тексту українською
Назва від sync, синхронізація перекладу)
GNU/Linux та MacOS вже мають потрібне середовище, встановіть залежності(python deepl-cli
) скориставшись пакетним менеджером вашої операційної системи:
- ArchLinux:
sudo pacman -S python python-pipx
.python-pipx
потрібен щоб встановитиdeepl-cli
, і лише для ArchLinux, для інших ОС використовуйтеpython-pip
- Встановіть
deepl-cli
скориставшисьpip
(pipx
лише для ArchLinux):pipx install deepl-cli
Windows: Встановіть середовище MSYS2 виконуючи 1-5 кроки з наведеної на сайті інструкції.
- Встановіть залежності скрипта:
pacman -S python python-pip
- Встановіть
deepl-cli
скориставшисьpip
:pip install deepl-cli
У випадку з Windows скрипт потрібно виконувати не у звичайному терміналі, а в тому що постачає msys2
Взаємодія зі скриптом відбувається через передачу йому параметрів. Наприклад, s -c 1 -e 1 -E -r -S 120 файл1 файл2 файл3 ...
- виконає послідовний переклад по одному файлу, зачекає 120 секунд перед перекладом наступного щоб запобігти бану, якщо виникне помилка перекладу зачекає одну годину і спробує ще раз, інакше завершить виконання скрипта щоб запобігти бану. Переклад зберігається як [ім'я файлу].tr.txt
(можна змінити).
Файли які плануєте перекладати треба завчасно поділити по 1500
символів (обмеження DeepL
для користувачів без облікового запису) використовуючи програму fix, з параметрами -n 1500 -T файли
Скрипт зберігає результат своєї роботи у теці де він виконується, не перезаписуючи наявні файли перекладу.
Якщо якийсь файл не містить перекладу(у терміналі буде написано failed [ім'я файлу]...
) - перезапустіть скрипт.
Рекомендую виконувати скрипт з наступними параметрами(s -R -S 121 -T 3650 $(ls | sort -V)
), це дозволить менше потрапляти у бан DeepL і стабільно отримувати переклад.
Загальні рекомендації: не збільшуйте/зменшуйте -c
та -e
якщо не розумієте що ви робите, обов'язково подивіться опис що робить кожен параметр перед його зміною. Те ж стосується -t
,-s
і особливо -T
та -S
. Параметри підібрані так, щоб менше потрапляти у бан. Якщо все одно потрапляєте у бан - зачекайте годину, зменште -c
до 1
, збільште -S
та -T
, якщо не допомагає зачекайте ще декілька годин й повторіть спробу.
Приклад роботи:
@> s -r -E -S 120 $(ls | sort -V)
start at [13:00 2024-04-21]
sleep 120 seconds [15:56 2024-04-21] [done 80] [0 failed] [287 total] [2h 56m 21s elapsed]
$(ls | sort -V)
- передати до параметрів скрипта усі файли у теці. Наявні файли перекладу не перезаписуються.
Без параметрів зʼявиться пояснення які параметри приймає скрипт:
usege: s [-rhE] [-c count] [-C exit_count] [-e failed_count] [-s delay] [-S dalay_after] [-t timeout] [-T retry_after] files
-c, --count Перекласти вказану кількість файлів. З -r скрипт перекладатиме вказаними порціями
-C, --exit-count Завершити виконання після перекладу n-файлів
-e, --exit-after-failed Завершити виконання після n-послідовних помилок
-E, --try-again Після виникнення послідовних помилок перекладу зачекати 3600с(змінити чере -T) і спробувати ще раз, якщо знову невдало, то завершити виконання. Якщо кількість помилок не вказана, то 1 за замовчуванням. Якщо кількість файлів не вказана використовується 1 за замовчуванням
-r, --repeat Перекласти порцію файлів, почекати 120с(змінити через -S) щоб запобігти бану й перейти до наступної порції. Якщо кількість файлів не вказана використовується 1 за замовчуванням
-R, --repeat-on-failed Теж що й -r з -E, але не завершує виконання скрипта
-s, --sleep Засинати на вказану кількість секунд після перекладу файлу. 5с за замовчуванням
-S, --sleep-after Засинати на вказану кількість секунд після перекладу порції файлів. 120с за замовчуванням
-t, --timeout Скільки чекати на результат перекладу. 60 секунд за замовчуванням
-T, --try-again-after На скільки секунд засинати перед повторною спробою перекладу після послідовних помилок які мали спричинити завершення виконання. 3600 секунд за замовчуванням. Не рекомендовано вказувати менш ніж годину(3600с), бо отримаєте повноцінний бан, а не обмеження на кількість перекладів
-h, --help Показати цю довідку і завершити роботу
-c
,--count
- яку кількість файлів треба перекласти за раз(не залежно від отриманої кількості). Рекомендую використовувати з-r
, щоб зменшити можливість отримання бану.-C
,--exit-count
- перекласти певну кількість файлів й завершити роботу, щоб зменшити можливість отримання бану, навіть якщо ще є можливість безпечно перекладати.-e
,--exit-after-failed
- завершити роботу якщо виникли n-послідовних помилок. Послідовні помилки можуть свідчити про отримання бану, тому щоб не привертати ще більше уваги негайно припиняємо роботу. Рекомендую завжди використовувати цей параметр з1
.-E
,--try-again
- не завершати роботу після виникнення n-послідовних помилок, а зачекати 3600с(годину, змінити через-T
) і спробувати ще раз, якщо невдало, то припиняємо виконання інакше продовжуємо у звичайному режимі. Якщо кількість помилок не вказана, то 1 за замовчуванням. Якщо кількість файлів не вказана використовується 1 за замовчуванням Рекомендую завжди використовувати цей параметр у парі з-r
,-c 1
та-S
від 120.-r
,--repeat
- перекладати файли невеликими порціями(задається через-c
) і почекати декілька секунд після кожної щоб зменшити можливість отримання бану. Якщо використовується без-c
встановить кількість як 1.-R
,--repeat-on-failed
Теж що й -r з -E, але не завершує виконання скрипта. Рекумендую використовувати саме-R
, а не-r
з-E
щоб скрипт не простоював. Приклад:s -R -S 121 -T 3650 $(ls | sort -V)
-s
,--sleep
- вказує час який скрипт буде чекати після перекладу файлу. 5 за замовчуванням.-S
,--sleep-after
- вказує час який скрипт буде чекати після перекладу порції файлів. 120 за замовчуванням.-t
,--timeout
- переклад не відбувається миттєво, тому його треба очікувати. 60 секунд очікування за замовчуванням-T
,--try-again-after
- вказує на скільки секунд засинати перед повторною спробою перекладу після послідовних помилок які мали спричинити завершення виконання. 3600 секунд за замовчуванням. Не рекомендовано вказувати менш ніж годину(3600с), бо отримаєте повноцінний бан, а не обмеження на кількість перекладів.-h
,--help
- Показати довідку і завершити роботу
-c
більше 1 з параметром-r
і без-C
. Бо швидко потрапите у бан.- виконувати скрипт без
-e
. Бо замість обмеження на кількість символів на хвилину отримаєте справжній бан не декілька годин. - дуже мале значення
-s
,-S
,-t
та-T
. Бо швидко потрапите у бан. - виконувати скрипт без
-R
. Щоб скрипт не простоював без роботи.
З наведеного в горі прикладу ви можете побачити що за ~3 години можливо перекласти 80
файлів, це приблизно 8
розділів, тобто по 15000
символів на розділ(ваш твір може мати іншу кількість). Тому можна використовувати і його. Однак щоб впевнитись що ви стабільно отримуватимете нові розділи не отримуючи бан його треба трохи вдосконалити:
s -R -S 160 -T 4200 $(ls | sort -V)
Деякі параметри зникли, бо їх значення буде встановлено автоматично при використанні -R
.