Утилиты-скрипты для экспорта/импорта переводов, а также поиска по всем главам
Если кому интересно, допилил свои скрипты для экспорта/импорта переводов и поиска по всем главам проекта.
Подробнее о функционале можно прочитать тут:
Про всё по чуть-чуть: http://anivisual.net/blog/2017-01-30-260
Про экспорт перевода: http://anivisual.net/blog/2014-09-29-64
Про импорт перевода: http://anivisual.net/blog/2014-10-14-72
Про проверку текстового файла: http://anivisual.net/blog/2014-12-15-73
Онлайн: http://vayurik.ru/tools/notabenoid/
Оффлайн: https://github.com/VaYurik/notabenoid-tools
По всем вопросам – обращайтесь.
Changelog:
24/11/2021: на GitHub выложена оффлайн-утилита для экспорта перевода отдельно взятой главы
07/11/2021: оффлайн (назовём ЭТО так) утилиты на 3-м Питоне для поиска по проекту и для экспорта проекта перевода: https://github.com/VaYurik/notabenoid-tools
22/04/2020: полностью переписан код утилиты для переноса текста, теперь она умеет переносить и по слогам.
02/03/2018: добавлена возможность удаления непереведённых фрагментов из главы (см. https://vk.com/vayurik?w=wall198054534_10239).
04/04/2017: добавлен поиск фрагментов с комментариями в проекте перевода (см. https://vk.com/vayurik?w=wall198054534_7532)
05/03/2017: добавлена настройка, позволяющая не импортировать повторно переводы, если они уже имеются на сайте.
30/01/2017: добавлены функции создания главы перевода, импорта (загрузки) оригиналов из текстового файла в уже созданную главу перевода и заодно очистка (т.е. удаление всего содержимого) главы перевода. (см.https://vk.com/vayurik?w=wall198054534_7343)
28/05/2016: добавлена функция создания резервной копии всего проекта перевода в виде ZIP-архива.(см.https://vk.com/vayurik?w=wall198054534_6369)
13/05/2016: добавлена настройка проверки только текста, расположенного между кавычками.(см.https://vk.com/vayurik?w=wall198054534_6274)
18/03/2016: добавлен экспорт перевода в XML-файл. (см.https://vk.com/vayurik?w=wall198054534_5912)
21/11/2015: добавлена передача параметров в скрипт поиска подстроки через ссылку (см.https://vk.com/wall198054534_5034)
6/08/2015: добавлен поиск и замена по всем главам проекта перевода.
6/05/2015: добавлен поиск по всем главам проекта перевода.
Подробнее о функционале можно прочитать тут:
Про всё по чуть-чуть: http://anivisual.net/blog/2017-01-30-260
Про экспорт перевода: http://anivisual.net/blog/2014-09-29-64
Про импорт перевода: http://anivisual.net/blog/2014-10-14-72
Про проверку текстового файла: http://anivisual.net/blog/2014-12-15-73
Онлайн: http://vayurik.ru/tools/notabenoid/
Оффлайн: https://github.com/VaYurik/notabenoid-tools
По всем вопросам – обращайтесь.
Changelog:
24/11/2021: на GitHub выложена оффлайн-утилита для экспорта перевода отдельно взятой главы
07/11/2021: оффлайн (назовём ЭТО так) утилиты на 3-м Питоне для поиска по проекту и для экспорта проекта перевода: https://github.com/VaYurik/notabenoid-tools
22/04/2020: полностью переписан код утилиты для переноса текста, теперь она умеет переносить и по слогам.
02/03/2018: добавлена возможность удаления непереведённых фрагментов из главы (см. https://vk.com/vayurik?w=wall198054534_10239).
04/04/2017: добавлен поиск фрагментов с комментариями в проекте перевода (см. https://vk.com/vayurik?w=wall198054534_7532)
05/03/2017: добавлена настройка, позволяющая не импортировать повторно переводы, если они уже имеются на сайте.
30/01/2017: добавлены функции создания главы перевода, импорта (загрузки) оригиналов из текстового файла в уже созданную главу перевода и заодно очистка (т.е. удаление всего содержимого) главы перевода. (см.https://vk.com/vayurik?w=wall198054534_7343)
28/05/2016: добавлена функция создания резервной копии всего проекта перевода в виде ZIP-архива.(см.https://vk.com/vayurik?w=wall198054534_6369)
13/05/2016: добавлена настройка проверки только текста, расположенного между кавычками.(см.https://vk.com/vayurik?w=wall198054534_6274)
18/03/2016: добавлен экспорт перевода в XML-файл. (см.https://vk.com/vayurik?w=wall198054534_5912)
21/11/2015: добавлена передача параметров в скрипт поиска подстроки через ссылку (см.https://vk.com/wall198054534_5034)
6/08/2015: добавлен поиск и замена по всем главам проекта перевода.
6/05/2015: добавлен поиск по всем главам проекта перевода.

Я часа два назад в качестве теста создавала и новую главу, и новый перевод. И оба раза оригинал нормально импортировался. Но воспользоваться утилитой не выходит. Но это, видимо, потому что я что-то не так делаю.
скрытые комментарии (4 шт.)
Если не сложно, дайте ссылку на главу, с которой проявляется проблема.
Можно в ЛС
Ага, я понял: если добавлять вручную фрагмент за фрагментом, то оригинал добавляется. Не работает именно импорт из файла/текста.
С остальным сейчас буду разбираться :)
Готово.
Реализована поддержка импорта srt-файлов, а заодно и многострочных фрагментов, разделённых пустыми строками.
Я, конечно, потестил, но настоятельно рекомендую не полениться, создать какую-нить тестовую главу и тоже немного потестировать. Всё же в случае, если что-то пойдёт не так, то по собственному опыту могу сказать, что будет проще удалить целиком главу и создать её заново, чем вручную удалять криво залитые фрагменты в огромных количествах :)
Так же напоминаю, что файлы должны быть в кодировке UTF-8, иначе результат может оказаться отличным от ожидаемого :) Автораспознавание кодировки именно в скрипт импорта я внедрять не хочу – чревато, лучше с кодировками ковыряться осмысленно ручками.
Возможно потом напишу скрипт для массового удаления всех переводов в проекте для тех случаев, если что-то пошло не так при импорте.
Если что – всегда готов помочь :D
Удачи!
да, все то же самое. при попытке добавить оригинал, выдается та же ошибка.
скрытые комментарии (2 шт.)
Если в обозримом будущем не починят, напишу скрипт для подстрочного добавления оригинала. Сперва закончу реализацию импорта srt-файлов для переезжающих обратно в родные пенаты из всяких Котранслейтов... :)
*построчного :)
Скажите, а те скрипты, которые вы делали для Mozilla, это тоже самое?
скрытые комментарии (5 шт.)
Что есть "скрипты, которые я делал для Mozilla"?
Или это были не ваши?
Так как я не очень понял, о каких скриптах речь, то не могу ответить на этот вопрос :)
Ну, скрипт greasemonkey для автоматического добавления перевода))
Не, я такого не писал :)
DOOMer, спасибо за скрипты!
скрытые комментарии (1 шт.)
На здоровье
@}->-
у меня не вышло( пишет, что глава доступна только модераторам, хотя я даже настройки перевода поменяла, сделала его польностью открытым( логин-пароль указала внизу, не помогло(
скрытые комментарии (7 шт.)
Если несложно, киньте мне ссылку на главу, которая взбрыкнула. Можно в личку. Поизучаю.
на главу? в описании было написано «проект».
я дала вот эту ссылку? надо было главу создать?
Не-не, главу, конечно.
Ведь «молекулой» тут является именно глава (по аналогии – атомом является фрагмент) :)
Т.е., например, http://www.notabenoid.org/book/56317/248670
(Какое милое название :D)
Мде... Пожалуй, сейчас переименую «проект» в «главу» или типа того. Во избежание.
Исправил
спасибо) попробую еще раз.
Удачи!
Если что – обращайтесь.
http://www.notabenoid.org/book/56317
DOOMer, огромное спасибо!
скрытые комментарии (9 шт.)
Не за что :)
Как оказалось, при импорте могут теряться фрагменты (если сервер не успевает «усвоить» данные): проверяйте количество реально залитых фрагментов.
Со своей стороны я в ближайшее время постараюсь что-нить с этим придумать. Пока же поставил небольшую задержку после заливки каждого фрагмента – наберитесь терпения :)
На баннеры там кликайте, вам минута – а мне хоть раз в несколько лет хостинг оплатить :D
Не вопрос, обязательно) И не раз кликнем. :)
ЗЫ. Я спецом проверила оба файла – идут ноздря в ноздрю, что называется.
Ну и хорочо :)
А я вот в своих нашёл несколько косяков :(
Но сегодня, надеюсь, поборю :)
А как вы обнаружили косяки?
Я просто пролистала и сверила: немного в начале, немного в конце.
Или этого недостаточно для выявления косяков?
Еще раз спасибо за очень нужные и полезные инструменты)
Я посчитал количество фрагментов после заливки на Ноту за моим авторством и количество фрагментов в файле. Заодно обнаружил такую вот ошибку: http://notabenoid.org/blog/33933
:)
Но в моём случае в проекте уже были переводы. В общем же случае (когда до импорта переводов нет) достаточно посмотреть, есть ли в главе фрагменты БЕЗ переводов.
А в этом случае статистика перевода в главе не показывает, что чего-то не хватает?
ЗЫ. Хотя, наверное, у меня для вашей утилиты очень простой случай и, соответственно, задание:
перевод полностью готов. Файлы оригинала и перевода полностью соответствуют друг другу по стат. показателям)
Ну и славно :)
В любом случае, я проблему почти уже решил и минут через 10, надеюсь, залью исправленный код
Что-то я там наколдовал.
Костыли, костыли, 302, костыли...
:D
Спасибо большое за ваши труды!
Огромное Вам спасибо! Незаменимый скрипт!
Возможно ли добавлять в импортируемые с нотабеноида тексты содержимое комментариев? У нас там довольно интересные изыскания происходили порой.
скрытые комментарии (1 шт.)
Думал об этом тоже... Не помню, что надумал. Если мне не изменяет память, то возникли техническо-этические трудности: переводы явно лежат на странице, а комменты выдаются сервер по запросу, т.е. чтобы получить комментарии для одной строки оригинала придётся дёргать отдельным запросом сервер. Сколько строк – столько потребуется запросов. Не уверен, что стоит создавать такой трафик как минимум без санкции Дмитрия.
Подскажите пож, что я делаю не так. При попытке импорта текста возникает ошибка:
Ошибка отправки данных; начиная с фрагмента 0 переводы импортированы не будут
Что это значит? Текст в utf-8, впрочем с ansi то же самое.
скрытые комментарии (18 шт.)
Когда количество строк отличается, то там другой текст ошибки. Естественно количество строк одинаковое. Дело в чем-то другом. =/
Попробовал UTF с BОМ и без BОМ – все равно не работает =(
Можно ссылку на проект, который хочется залить?
Такая ошибка выдаётся в случае, если сервер... не отвечает взаимностью :)
Дык это... Статус-то какой у главы? :D При таком статусе невозможно добавлять переводы.
Кто ж знал! =) Спасибо, все получилось.
А можно отследить этот момент в ходе работы скрипта, чтобы вместо безликой фразы отобразить реальную суть проблемы?
Теоретически возможно всё, вопрос в целесообразности :)
В данном случае, чтобы получить статус перевода, нужно парсить ещё и страницу проекта, что, по-моему, не имеет смысла. В тех проектах, где я участвовал и участвую, статус меняется только тогда, когда это действительно нужно. А чаще так и вовсе не меняется :)
В целом согласен. Это скорее исключение. Тем не менее, предлагаю добавить предупреждение о том, что статус перевода не должен быть «готов» в инструкцию по работе скрипта.
Тогда другой вопрос =)
А можно внедрить автоматическое конвертирование в UTF-8? Чтобы не забивать себе голову хотя бы этим.
Дык оно это... уже это умеет вроде. Лезть смотреть лень, но я с той поры, кажись, уже добавил автоопределение кодировки и приведение её к UTF-8. Раньше потому что там висело предупреждение об UTF-8, сейчас уже не висит.
Неа, с ANSI не работает:
Ошибка отправки данных; начиная с фрагмента 1 переводы импортированы не будут
Прошу принять меры =)
Завтра, может, гляну. Но кому нафиг нужен этот ANSI?! :D
Ну как же! Это стандарт от Микрософта! А вот «кому нафиг нужен этот KOИ8-Р?!» – это да, поддерживаю =)
Да уж, это я, значит, что-то другое тогда мутил – не было там автоопределения кодировки :(
Зато теперь есть :) Хоть тебе ANSI, хоть UTF-8 с BOM и без, да хоть UTF-16! :D
Потестил – работает вроде: http://notabenoid.org/book/52362/248537
Прошу проверить. Если что – пиши :)
Отлично! Вечером прлверю, а плка еще один вопрос впроброс. Не было в планах сделать пакетную заливку? Чтобы заливать соазу хотя бы по 5 файлов. А то у меня тут 300+ файлов, по одному их заливать чересчур уныло...
Скажу так: у меня такой скрипт есть, но работает он исключительно локально и заточен под конкретный проект. Заливка переводов – действие потенциально деструктивное, нагрузку на сервер создаёт большую, поэтому, увы, в паблик такой скрипт я выкладывать не буду.
Я понял. Значит буду мучиться...
Да! Все работает! Спасибо!
Однако, перейдем к следующему вопросу...
А можно как-нибудь упростить процедуру со вводом пароля? Опять же утомляет его вбивать каждый раз. Допустим через нотабеноидские кукисы или свои. Конечно же опционально. Чтобы тот, кто не против рискнуть своим паролем, мог бы поставить соответствующую галочку и тем самым избавить себя от вбивания пароля НАВСЕГДА! Ну или хотя бы на какое-то время.
скрытые комментарии (6 шт.)
Странно... У меня мой пароль сам подставляется браузером... Разве что после нажатия кнопки «Назад» в браузере приходится его вводить. Предлагаю порыться в настройках браузера; возможно, когда-то ты просто выбрал «не сохранять пароль для этого сайта».
Сохранять пароли ни в каком виде я не буду. Это вопрос из разряда религиозно-этических :)
Не, у меня установлено расширение, которое препятствует запоминанию паролей. Буду временно отключать значит.
Вахаха~!!! Молодец! :)
Действительно, а почему оно не запоминает? :D
Ну это типа настройки приватности...
Доверять стороннему расширению такие вопросы? Моя паранойя против :) Предпочитаю или запоминать пароли средствами браузера там, где это некритично, либо «Никогда не сохранять пароль для этого сайта» и никаких гвоздей! :D
Ваша точка зрения ясна! ;)
Добавил новую галочку в импорте – «удалять пустые строки». А то в одном из проектов сейчас столкнулись с тем, что при втягивании оригинала, где есть пустые строки, Нота их игнорирует, а из-за того, что и в переводах они есть, приходится ручками вычищать их из файла, иначе скрипт справедливо ругался, что кол-во строк разное. Теперь этой проблемы нет.
скрытые комментарии (6 шт.)
Я пустые строки удаляю другим скриптом, который заодно удаляет нотабеноидские хвостовики. Собственно, предлагаю тоже добавить в твой скрипт этот функционал. Лично мне не пригодится, но кто-то наверняка оценит.
Что есть «нотабеноидские хвостовики»?
несколько строк, добавляемых автоматически в конец файла при скачивании. всего три варианта, в зависимости от статуса перевода главы. типа таких:
Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется
Переведено на Нотабеноиде
http://notabenoid.org/book/***
Переводчики: ***
А... Ясно. Подумаю, ага :)
Брррр! В получаемых моим скриптом файлах такого нет!
Это есть в файлах полученных классическим нотабеноидовским скачиванием.
И еще одно рационализаторское предложение.
Вряд ли кто-то заполняет строку со ссылкой на главу перевода вручную, поэтому кнопочка «Вставить из буфера» рядом с этой строкой была бы весьма актуальна.
скрытые комментарии (7 шт.)
Это уже извращения пошли :)
Там прогресс-бар-то толком не работает, потому что чтобы оперативно вывести хоть какую-то информацию из PHP-скрипта нужно знатные костыли писать (21-й век, ага :)), чем мне заниматься категорически лень, да и велосипеды изобретать не интересно; я таки не кодер :)
Вовсе не извращения! Это реально будет удобно. Конечно, если один файл залить, то нет проблем, а чтобы вставить ссылку на главу для последующего файла, надо мышкой выделить ссылку предыдущего. Именно это вызывает неудобства. Сделай хотя бы так, чтобы предыдущий текст выделялся целиком при нажатии на это поле. Типа как в адресной строке браузера.
А к прогресс-бару у меня как раз нет претензий. =)
Нет, всё должно быть дефолтно. Безобразно, но единообразно :) Извращения над стандартным поведением контролов оставим школоте :)
Я пробовал в одном из своих рабочих скриптов сделать такое вот «автовыделение», так до сих пор сам себя матерю, потому что вместо привычного действия, которое руки выполняют сами, автоматично, получаю какую-то фигню.
Кстати, прям сейчас я этот велосипед там уберу, раз уж вспомнил :)
Что ж, похоже, эта инициатива тоже мимо кассы... =(
>Там прогресс-бар-то толком не работает,
По-моему, все привыкли и следят за прогрессом прям на ноте, наблюдая за те, как добавляются варианты перевода))
Вот нет... У меня один знакомый так дважды перевод залил из-за этого прогресс-бара :(
Но сейчас вроде нормально работает.
потому что большая красная кнопка)
Вот думаю, сделать ещё скриптег для поиска подстроки по всему проекту?
http://notabenoid.org/blog/34999
скрытые комментарии (2 шт.)
Да-да-да-да-да-да-да-да.
Можно даже пойти дальше – на основе ноты ведь получился бы шикарнейший языковой корпус, если бы тут были соответствующие инструменты.
Добавил скрипт поиска по всем главам перевода: http://vayurik.ru/tools/notabenoid/search_string.php
Об ошибках и пожеланиях пишите.
НО сразу хочу сказать, что от выбора того, где искать (в переводах или в оригиналах) я не откажусь, т.к. в большинстве случаев пользователь прекрасно понимает, где он хочет искать, а нагрузка на сервер возрастает вдвое. Не стоит злоупотреблять.
Не работает импорт.
Пишет: «Эта глава доступна только модераторам перевода»
Хотя в правах доступа к переводу ограничений не выставлено.
скрытые комментарии (10 шт.)
Можно ссылочку на главу? Можно в ЛС.
Только что проверил «на кошках» – построчный импорт точно работает:
http://notabenoid.org/book/52362/248537
http://notabenoid.org/book/53951
Это ссылка на проект перевода, а нужно давать ссылку на конкретную главу, например: http://notabenoid.org/book/53951/254089
Если так указать, то что говорит?
Я пытался делать импорт указывая конкретную ссылку на главу
http://notabenoid.org/book/53951/254089
Пишет: «Эта глава доступна только модераторам перевода»
А какой режим импорта выбран?
Смотрю, там есть многострочные фрагменты. И вообще, там в оригинале рус уже вроде...
Я вообще хотел попробовать, на будущее может пригодиться.
Режим импорта пробовал «Субтитры» и «Построчный», результат один:
«Эта глава доступна только модераторам перевода»
Как бы то ни было, вариант «построчный» тут не подойдёт, т.к. есть многострочные фрагменты.
Там надо мышку подвести к радиобуттону и почитать описание для каждого из режимов: есть нюансы. Особенно если есть многострочные фрагменты.
Вот, я только что выполнил «выборочный» импорт нескольких фрагментов – всё норм.
Если что, я просто сохранил оригинал со ссылками в http://vayurik.ru/tools/notabenoid/create_text_file.php, потом оставил 5 первых фрагментов и выполнил выборочный импорт.
Примерно так я и сам работаю.
Сработал «Пофрагментный» импорт.
Благодарю, что помогли разобраться.
Возможно, в будущем пригодится.
Не вопрос :)
Удачи!
Написал очередную тулзу, которая ищет и заменяет текст как в рамках всего проекта, так и одной отдельно взятой главы.
Обращаю внимание, что такого рода операции вы проводите исключительно на свой риск.
Поиск и, разумеется, замена регистрозависимые.
Сделано средство для одного конкретного проекта для приведения в большом количестве скриптов имён и прочих именований к единообразию (ох эти ваши Поливановы с Хэпбернами :))
Но, может, кому ещё пригодится.
Об обнаруженных ошибках, как всегда, пишите в комментах.
скрытые комментарии (1 шт.)
Ой, собственно ссылка: http://vayurik.ru/tools/notabenoid/replace_string.php
Добавил возможность передачи параметров в скрипт поиска по проекту через URL (GET-запрос).
Теперь можно не вбивать каждый раз ссылку на проект, например, или логин/пароль, а просто один раз ввести их в URL, остальные параметры уже заполнять в форме.
Подробности: https://vk.com/wall198054534_5034
скрытые комментарии (2 шт.)
нужная вещь, спасибо! это реально задалбывало.
по моим хотелкам/предложениям пока не решился? ;)
Нет :)
Добавил экспорт перевода в XML-файл.
(см.https://vk.com/vayurik?w=wall198054534_5912)
скрытые комментарии (6 шт.)
https://en.wikipedia.org/wiki/Translation_Memory_eXchange
О! Спасибо, покурю на досуге. Не знал, что есть нечто унифицированное.
Блин, вот это печально:
For 7-bit files, extended (non-ASCII) characters are always represented by numeric character references.
А как же яп? :(
Не, нафиг. Я этой фигнёй не пользуюсь, маны мутные (например, совершенно непонятно, что есть в https://www.gala-global.org/tmx-14b#segtype те или иные значения, в той фигне, на которую там приводится ссылка (https://en.wikipedia.org/wiki/Segmentation_Rules_eXchange), я этого тоже не нашёл (да чё уж, там ссылки все мёртвые)), а ковыряться с этой неведомой фигнёй непонятно зачем, собирая по всему интернету крупицы информации, смысла не вижу. Впрочем, если кто-то мне поможет внятно разъяснить, что там и как, то я без проблем изменю формат XML-файла (точнее, видимо, просто добавлю ещё одну опцию – «TMX»).
Вместо манов можно посмотреть чужую реализацию... например, реализацию из OmegaT
https://sourceforge.net/p/omegat/code/ci/master/tree/src/org/omegat/util/
Файлы «TMXWriter.java» и «TMXWriter2.java»
Ковырять чужой код, да ещё и на Яве – увольте :)
Т.е. оно, конечно, можно, только в данном случае трудозатраты получатся неадекватны результату. Меня и текущая реализация устраивает (я же под конкретную задачу этим озадачился, а не от скуки), а если кому-то очень нужно TMX и этот человек в состоянии объяснить нюансы этой штуки, не описанные в манах, – милости прошу.
Добавил возможность проверки соответствующим скриптом только текста, содержащегося между кавычками (двойными и одинарными).
Этот функционал может пригодиться в тех проектах, где в переводах пишется не только текст, но и сопутствующая ему обвязка, например некоторые проекты на Ren'Py (та же Альфа Катавы):
Хотя сейчас я бы, конечно, заливал бы для перевода ТОЛЬКО текст, а уж потом написал отдельный скрипт для обратной сборки (как в итоге и было сделано недавно в FUTUR) что логично. Что ж, век живи – век учись, как говорится :)
А без этой настройки скрипт ругался на каждую первую строчку с идентификатором персонажа, что, в общем-то, по-своему правильно, ибо не должно предложение начинаться с маленькой буквы... :)
скрытые комментарии (1 шт.)
В этом комменте кавычки изуродованы движком Ноты :(
День добрый, никто не пользовался вот этим плагином http://vayurik.ru/tools/notabenoid/replace_string.php, почему-то я указываю ему имя персонажа, который встречается десяток раз и ниже перевод, но почему-то не находит он имени((( Может кто сталкивался?
скрытые комментарии (3 шт.)
Проверьте, что вы поставили галочку в нужном месте (оригинал-перевод). А вообще настоятельно рекомендую не делать автоматическую замену, лучше плагином искать нужное, а изменения делать вручную. А то ведь могут быть разные падежи.
настоятельно рекомендую не делать автоматическую замену
Категорически плюсую :)
+1
Спасибо за ответ. Я думал тут принцип немного другой. Я думал программа так поступает только с фразами совпадающими на 100%. То есть имя в тексте Вася, а в фалах есть 500 Вася и 100 ВасяЛ, так вот переводятся только фразы со 100% совпадением, то есть 500 Вась))). Мой знакомый реализовал это в своей программе для перевода игр. Но в ней к сожалению нельзя переводить толпой. Может возможно такое сделать на ноте?
скрытые комментарии (4 шт.)
Я, если честно, не помню, по какому алгоритму там всё работает, позже гляну. Поиск (точнее, фильтр) используется точно штатный Нотабеноидовский, который порой работает не так, как того хотелось бы.
В последнее время я пользовался этим скриптом для замены трёх точек «...» на знак многоточия «…» – работало корректно. А вот для убирания кавычек в одном из проектов пришлось писать отдельный, довольно сложный с точки зрения логики, скрипт.
Я не рисковала делать автозамены, но при поиске этой же утилитой находятся и ВасиЛ, так что и менять наверняка их будет тоже.
С большой долей вероятности. Кстати! Может, мне туда поддержку логики встроить? Или как это называется? Как на гугле при поиске в кавычках, например... Надо будет подумать :D
Ребят может мы о разных утилитах говорим? точно эта? http://vayurik.ru/tools/notabenoid/replace_string.php
скрытые комментарии (1 шт.)
Там есть еще аналогичная, но только для поиска, без замены.
а можно ссылочку для проверки.
скрытые комментарии (1 шт.)
В заглавном посте темы.
В свете как уже имевших некогда проблем с копирастами, а также возможными в будущем (http://notabenoid.org/blog/37552), решил написать скрипт для создания резервных копий проектов переводов. Конечно, у меня уже были подобные скрипты для основных больших проектов (если бы не они и не моя паранойя, судьба пары больших проектов после закрытия старой Ноты была бы под большим вопросом), но они были без гуя и работали на локальном сервере, так что технология в некотором роде уже отработанная :D
Однако попрошу коллег-переводчиков не злоупотреблять и не создавать лишний раз нагрузку на сервер уважаемого Дмитрия.
скрытые комментарии (1 шт.)
Как оказалось, есть проблемы с именами файлов в архиве, если в названия глав входя иероглифы и прочие символы, отсутствующие с CP866 – имейте это в виду.
Исходники в публичном доступе будут?
скрытые комментарии (1 шт.)
Могу выслать на почту. Пиши в ЛС.
А что случилось? Не работает что-то :( Как без рук.
скрытые комментарии (6 шт.)
Прошу прощения.
Сегодня в районе 5 утра ЧТО-ТО или КТО-ТО стёрло все скрипты из соответствующей папки. Бекапы уже подготовлены, но перезаливать старые скрипты до выяснения и изучения логов я не буду – уж больно это всё странно.
Потерпите, няши, всё будет! Постараюсь сегодня вечером уже перезапустить.
Спасибо, ждем. И пусть страшная кара постигнет виновного :))
Всё, сделал максимально оперативно, раз это кому-то нужно (даже не ожидал, честно говоря :))
Проверил (кроме импорта и поиска-и-замены) – вроде всё работает. Если обнаружите ошибки – пишите.
очень-очень нужно. приходилось в одном сериале подсвечивать шведскую речь с помощью тегов, так ваши утилиты прям таки спасли.
а ещё когда 100500-й сезон переводишь, и нужно посмотреть, как ты переводил что-то в первых сезонах, но не помнишь в какой серии это было, поиск по проекту – незаменимая вещь. низкий поклон за труды.
а если вдруг у вас имеется веб-мани кошелёк, напишите на сайте, хотелось бы отблагодарить копеечкой, уверен, не только мне :)
так написано же)
В связи с работами по написанию утилит для автоматизации заливки оригиналов, вносятся изменения в уже существующие утилиты, что может (теоретически) привести к ошибкам. Совершенно точно, что у всех сбросятся настройки: в связи с разрастанием функционала пришлось переименовать кукисы.
Об ошибках, коли такие обнаружатся, сообщайте в этой теме.
О завершении работ над новыми утилитами сообщу отдельно.
Всем спасибо за понимание.
Новые скрипты запилены. Подробный пост о них будет чуть позже.
скрытые комментарии (1 шт.)
Пост: https://vk.com/vayurik?w=wall198054534_7343
Если вкратце: снова можно загружать главы до 4к фрагментов. А применив смекалку, то и больше ;)
Добавил возможность передавать в скрипт-бекапер параметры через ссылку, например:
Список параметров (перечислен в «Истории версий»):
Удобно выносить в виде ссылки с настройками в описание проекта.
скрытые комментарии (4 шт.)
Не могли бы вы объяснить это еще раз, но только для тупых? Инструкцию для чайников, так сказать.
«Вместо тыщи слов» :)
Теперь можно делать вот так:
Сделать бекап!
(Ссылка: http://vayurik.ru/tools/notabenoid/backup_project.php?urlProject=51939&isLink=0&isOriginal=1&isTranslate=1&isMaxRate=1&isTranslator=3&isSpace=0&isCR=0&isFormat=1&userName=vasya&userPassword=pupkin)
Разумеется, параметры можно указывать не все, а избирательно. Например, логин-пароль пропустить, тогда перед запуском их надо будет вводить руками просто.
Спасибо, теперь дошло :)
Подскажите, что считается закрытым проектом?
У меня есть такой проект: http://notabenoid.org/book/45556
Он закрытый? Я не могу скачивать с него главы анонимно. Как его сделать открытым?
скрытые комментарии (28 шт.)
Вопрос не очень понятен, потому что проект открытый, и скачивать может кто угодно. Но если вы воспользуетесь этими утилитами, то придется вводить пароль к нотабеноиду, потому что сам-то сайт закрытый.
Из описания утилиты:
«Далее необходимо ввести логин и пароль для доступа, если проект закрыт, и нажать кнопку «Сгенерировать». На выходе получится файл ...»
Я предположил, что у меня проект закрыт, но сама формулировка предполагает то, что проект может быть и открыт.
В общем, мне нужно, чтобы перевод мог скачать аноним. Это реально?
Хотя, в принципе, можно зарегать бота, и им логиниться, чтобы скачать. Если ваша утилита позволяет простым пост-запросом передать параметры, пароль, логин, и в ответ вернёт содержимое главы.
На нотабеноиде так нельзя, потому что там авторизация через куки, а у меня запрос не позволяет отслеживать http заголовки (и, соответственно, нельзя работать с куками). Но вашу утилиту можно было бы использовать как нечто вроде прокси с интерфейсом для подключения к ноте.
> На нотабеноиде так нельзя, потому что там авторизация через куки
Нет, там всё весьма прозаично. FireBug в руки, и всё как на ладони :)
Авторизацию я делал очень давно, сейчас уже точно не помню, но какого-то секса (в худшем смысле этого слова) там не было, это не МТС и не некоторые дистрибуторы, у которых порой весьма извращённые авторизации попадаются, с паролями-отзывами-явками :)
> Хотя, в принципе, можно зарегать бота, и им логиниться, чтобы скачать.
Для систематической работы в составе разных групп заведение бота является порой жизненной необходимостью :)
Я смотрел, там можно авторизироваться, но потом тебе выдадут куки на сессию. Без них оставаться залогиненным нельзя. Ну или приведите мне пример запроса без кук, позволяющий, например сразу с авторизацией просмотреть первую страницу какой нибудь главы.
Как-то так там всё:
';return;
}
}
$snoopy->fetch($urlProject);
Чуток поломалось, но суть, думаю, ясна.
Почему я использовал snoopy, а не curl? Фиг знает, не помню уже.
Простая авторизация понятна. Только как я её сохраню? Ну авторизировался я, сервер выдал мне куки с PHPSESSID, по нему меня и узнаёт.
Эту куку я должен прикладывать к каждому запросу, чтобы он меня помнил.
Ну или есть способ сделать запрос, к примеру, на http://notabenoid.org/book/45556/353666, и одновременно авторизироваться?
Думаю, нужно пояснить, я не через браузер заходу, а через игру. Она шлёт httpRequest с строго заданым header-ом, в котором нет кук, ну и естественно, не следит за куками в ответах (не запоминает их, не удаляет и т.п.), как это делает браузер.
> я не через браузер заходу, а через игру.
А батенька знает толк... :D
Ну а что, у меня игра сама себе обновления качает. Это же классно :)
Вот это: submit('http://notabenoid.org', $post_array);
было бы неплохо сделать настраиваемым (хотя бы скрытое поле в форме для post-запроса, если не хотите на тарелочке выкладывать). Я знаю ещё три проекта на движке ноты, для которых ваша заливка подошла бы.
Очистку глав организовали повторной заливкой пустого контента? :)
У меня на lua написан скрипт полной синхронизации глав с содержимым po файлов. Добавляет, удаляет, перемещает записи на ноте, чтобы они всегда были в актуальном состоянии. Ещё он пометки ставит для записей, когда те дублируются, начинаются/заканчиваются пробелами и т.п.
Я сейчас подумываю Си Шарп освоить, а т.к. осваивать надо «на кошечках», то попытаюсь все эти тулзы перенести в приложение.
А так у всех свои задачи, это абсолютно нормально. Ещё бы API бы нормальное, может и появились бы оффлайн-клиенты нормальные. Но насколько я помню, Дмитрий заявлял, что API не будет.
А что, Дима ещё тут появляется? Я думал, он вообще пустил всё на самотёк.
Я особо не слежу. Просто проскакивает иногда, порой знакомые ссылки кидают, кто следит.
Однако неспешное приращение номера версии как бы намекает... :)
Не хочу ничего кардинально менять, работает – не трожь :)
Нет, не заливкой. Точнее, заливкой, но не пустого контента. Даже не так...
Короче. Если вызвать скрипт заливки оригиналов из файла (в общем случае ссылка на него, когда в главе уже есть данные, недоступна), то старые данные грохаются. Т.е. достаточно залить один пустой фрагмент через эмуляцию заливки оригиналов из файла – и вуаля!
Ну да, я это и имел ввиду. Тоже случайно нарыл.
Не знаю, почему Ромахин не включил эту возможность официально.
Ровно как и поиск фразы по всему проекту, например...
Однако грех жаловаться – он молодец, он проделал огромный объём работы и поддерживает до сих пор такого монстра. Честь ему и хвала :)
А ещё есть скрипт слива всей базы, как у вас, только мой ещё комменты собирает.
Отказался от этой затеи – при таймлимите на хостинге 15 минут эта затея лишена смысла. Да и нужды в этом большой не было, честно говоря.
Если вдруг понадобится это дело на луа (кросс-платформенный же),
стучите.
Окей! :)
Долго ли планируется хостить утилиты? Года два-три ещё пробудут?
Не понял сути вопроса. Я хостю свой сайт, а утилиты – малая часть того, что там живёт. Живёт, хлеба (какого-то дополнительного) не просит. Ещё бы денег кто на хостинг закинул – было б совсем хорошо :D
Скорее на Ноте что-то изменится и их придётся переписывать, а мне будет лень. Но сколько лет я ни пытаюсь найти себе более... выгодное хобби, всё как-то никак :)
Суть в том, что если я буду использовать вашу утилиту как прокси, то желательно, чтобы она жила как минимум ещё пару лет.
Хех, ну да, описание там ещё со времён старой Ноты. Надо и правда поправить.
Драсте.
Ну во-первых, конечно спасибо огроменное за утилиту для импорта переводов.
А вопрос такой. Вот я перевожу сабы от одной серии локально, Чего-то – но не все – перевел и залил в главу. Потом опять же локально еще попереводил ту же серию (ну тоись в русском srt добавились новые блоки) и опять заливаю в ту же главу. А в результате получаю по два экземпляра ранее переведенных титров, ну то бишь translation unit'ов. А хотелось бы, чтобы новые просто затирали старые.
Это как-то можно сделать?
скрытые комментарии (2 шт.)
Типа инкрементарно?
Неплохая идея, на недельке подумаю.
Пока я
ебутрахасовокупляюсь с C# на предмет переноса утилит в десктоп. Ох уж это ООП...Да на первом заходе можно даже без инкрементности. Тупо галочка «Заменить все старые версии на новые (даже если они совпадают)». Хотя тут может быть засада, если в старой версии юнита перевод есть, а в новой он пустой. Хз, надо маленько подумать.
А вот если делать версионность, то наверно нужен такой типа 4-позиционный радио-батон:
1. «Сохранить все старые версии»;
2. «Сохранить только те старые версии, которые отличаются от новых»;
3. «Сохранить только те старые версии, которые отличаются от новых и у которых есть комментарий(и)»
Ну типа чтоб потом можно было бодаться с редактором, если ему вдруг новый вариант не нра, и он грит, что старый был более лучше.
4. Ну и наконец «Заменить все старые версии на новые»;
Добавлена возможность «подтягивания» имени файла в поле «название главы» в утилите создания главы в переводе.
Внимание!
При заливке нескольких глав, после загрузки одной главы и нажатия на кнопку «Назад», некоторые браузеры запоминают имя уже загруженного файла и тогда в поле названия уже будет прописано имя уже загруженного файла, тогда, после выбора следующего файла, нужно просто встать в поле названия главы и стереть старое название – новое будет подставлено автоматически.
Ответ на http://notabenoid.org/blog/33891#cmt_2582930 , вынес отдельным комментом, что было заметнее.
В общем, что-то я там сделал, хотя и без фанатизма.
Добавлен чекбокс «не импортировать уже имеющиеся переводы» в утилите импорта перевода. Доступна во всех режимах, кроме «Выборочного» (потому что при таком режиме даже опроса сайта не происходит – нечего анализировать).
Можно комбинировать с «удалять лишние пробелы внутри строк» (потому что пробелы – тоже символы и учитываются при анализе).
Рабоспособность на текстах проверил, на сабах – нет, но должно работать.
Помимо этого ощутимо изменил структуру всех скриптов (вынес функции из одного файла в разные – кто бы мог подумать, что проект настолько разрастётся :))
Добавил преобразование парных символов перевода строки «\r\n» в «\n» во всех файлах, загружаемых пользователем.
Об обнаруженных ошибках сообщайте сюда или в ВК.
Новая возможность: поиск в проекте перевода фрагментов с комментариями.
Подробности: https://vk.com/vayurik?w=wall198054534_7532
И спасибо всем, кто меня поддерживает!
Печеньки (и сиськи) наше всё :)
Спасибо, парни!
https://vk.com/vayurik?w=wall198054534_7462
Минорное обновление скрипта проверки главы перевода (http://vayurik.ru/tools/notabenoid/check_translate.php), а попутно и скрипт проверки просто текстовых файлов (http://vayurik.ru/tools/text/check_text_file.php): добавлен поиск дубликатов слов.
Новая фича – удаление непереведённых фрагментов из главы перевода.
https://vk.com/vayurik?w=wall198054534_10239
А на сколько реально сделать поиск по дате? Чтобы увидеть строки, созданные за указанный период времени. Актуально например при проверке перевода большой главы, когда народ переводит не по порядку, а рандомно.
скрытые комментарии (2 шт.)
Сделать-то можно что угодно, вопрос в том, как это должно работать и можно ли будет потом этим пользоваться.
Я лично с трудом представляю себе подобный функционал, если он не реализован на уровне самого движка Ноты, чтобы им реально можно было потом пользоваться.
Так-то в файл я могу надёргать эти фрагменты – толку-то от этого? Нужно же иметь возможность сразу что-то делать с этими фрагментами6 исправлять перевод, например, а то и просто удалять. И вот в таком контексте генерация файла, содержащего такие вот переводы, лишена практического смысла, мне кажется.
согласен. проехали =)
Я смотрю, наметился застой в разработке новых утилит, катастрофически не хватает свежих идей, верно? =)
скрытые комментарии (27 шт.)
Просто решил закончить с переводами: уж очень много времени на это уходит, а есть и более важные дела.
НО! Недавно переделал утилиту для расстановки переносов в тексте. Теперь она и по слогам переносить умеет :P
только не закрывайте, пожалуйста, проект с утилитами, очень нужный.
Разве что коронавирус меня заберёт :)
Но вы тогда просто заносите денежек на хостинг (там вроде внизу указан номер лицевого счёта, да и на основном сайте моём – vayurik.ru – есть), и оно будет жить даже если меня не станет :)
переносы? а зачем это нужно? есть же ворд – он отлично расставляет переносы! =))
а, понял. это действительно может быть полезно, но лично мне всегда хватало автозамены в блокноте. но возможно я просто не сталкивался с ситуациями, где этот функционал мог быть полезен...
Есть такая штука – визуальные новеллы. Кои я и переводил/редачил/ломал/собирал/фотошопил ну и т.д. все эти годы. И вот там бывает ситуация, когда движок (например, Kirikiri) ну никак не заставить переносить текст, потому что японцам переносы эти нафиг не нужны с их кракозябрами. Можно подшаманить скринты и научить-таки движок переносить фрагменты хотя бы по пробелу (https://anivisual.net/blog/2017-10-01-313), но это далеко не всегда возможно, т.к. всё чаще встречаются закодированные соответствующие служебные файлы (с сигнатурой TJS2100), и вот тогда приходится извращаться с хард-переносом.
А в Ворде никто из моих знакомых переводчиков ВНок не работает, зато NP++ в почёте. Но в нём нет соответствующей возможности (либо я о ней не знаю). Вот я и написал свои грабли :)
НП++ мне не зашол чот, я работаю в акелпаде (с кучей плагинов), и тут можно автозаменой расставить переносы, заменив ими что угодно, можно заменить переносы операторами \n в любом количестве и туда и обратно. Но с японским творчеством я никогда не сталкивался, поэтому по делу сказать особо нечего...
Теперь по делу =)
Недавно тут взялись за ёфикацию текста и в процессе возникло несколько вопросов-предложений к тебе.
Например, если я ищу «идет» (чтобы заметить на идёт), то твой поиск мне выдает кроме самих «идет» еще и «видеть», «увидеть» и т.п. Таким образом, автозаменой воспользоваться нельзя, все будет запорото...
Пробелы вокруг слова съедаются, это тоже не вариант. Есть возможность искать слово целиком? Если нет, то прошу тебя реализовать это!
Как большой сторонник буквы Ё я рекомендовал бы погуглить специальные утилиты для этого. Ну, это если лень делать это вручную при вычитке/редактуре. Я когда-то пользовался надстройкой для M$ Word, но давно дело было и я сейчас не скажу, как оно называлось. Работало практически идеально! Слова, где ТОЧНО должна быть Ё, обрабатывались автоматически, а везде, где возможны были и Е, и Ё, оно спрашивало, как же в конкретном месте верно. Так что Ё-фикация даже весьма большого файла занимала считанные минуты.
А использовать для этих целей поиск... Ну, такое себе, прямо скажем.
Да, утилита есть, так и называется: Ёфикатор, она работает, но не в автоматическом режиме, как ты верно отметил, и чтобы пройти ею весь мой текст, а это примерно 5мб, требуется почти целый день монотонного щелкания мышкой с перерывами на потребности. А что в твоем понимании большой файл? 150кб? =)
Если бы одного раза было достаточно, то этот вопрос бы не возник. Однако, за время перевода я скачал текст уже три раза, ввиду постоянных правок и допереводов, и это еще не конец!
Теперь, когда весь имеющийся текст готов (до выхода очередного дополнения), я решил проставить ё на ноте, чтобы упростить себе задачу в будущем. Но столкнулся с невозможностью отлова нужных мне слов твоими утилитами. =( Я не хочу сказать, что утилиты говно, они очень полезны и много раз выручали, экономя время! Но ты отлично знаешь, что в любом редакторе есть возможность поиска слова целиком, и в данном случае эта функция тоже необходима для полноценного поиска и в частности для ёфикации ;) СДЕЛАЙ ПОЖАЛУЙСТА!!!
Я тебе рассказал про «идет», а знаешь, что получается, когда пытаешься найти «её»? =))
А вот как раз «её» довольно легко замутить через утилиту, насколько я знаю. Прогнать заменой «Пробел+ее+пробел» => «пробел+её+пробел». Если я сейчас с ходу ничего не упускаю и вы уверены, что в тексте нет странных вывертов, начинающихся с «ее», то можно даже без пробела в конце, просто « ее», тогда и перед запятой/точкой прекрасно сработает.
Я таким образом не раз прогоняла замену дефисов на тире в нужных местах.
Какую утилиту? Юрина утилита сжирает пробелы, поэтому кроме ее, она найдет все прилагательные и наречия, закнчивающиеся на ее : (
это легко можно сделать в ворде
После скачивания э о легко сделать, но мне нужно это сделать на ноте. Я скачиваю проект не один раз, и не хочу проставлять ё после каждого скачивания. Хочу скачивать уже максимально готовый гтекст.
а кто мешает подставить ё в готовый текст?
Попробуй проставить ё в 5мб текста — поверь, тебе больше не захочется. Вот и мне не хочется, поэтому проставляю на ноте, ДО скачивания.
Регулярно этим занимаюсь, кстати. Вы же текст читаете целиком? Вот заодно и поправить можно. А тире и кавычки – автозаменой.
Я его читаю на ноте, после скачивания не читаю.
Еще раз подчеркну: я скачиваю один и тот же текст. У меня выбор между: проставлять ё каждый раз после скачивания и проставить ё на ноте и забыть про это действие навсегда. Я предпочту второй вариант, а что бы выбрали вы?
А кто мешает проставлять Ё во время чтения? Если прям так уж необходимо. Все равно ведь правите.
я так и делаю, разумеется, но глаз замыливается, а от поиска ничего не скроется! =)
Почему-то у меня с пробелами всё было прекрасно, vayurik ещё ни разу ничего не сожрал
пруф в студию! прошу!
только что искал « еще » и получил в результатах «увещевание».
Скриптами делу не поможешь, движок ноты, судя по всему, пробелы игнорирует.
Обходной манёвр – загружать по главам в оффлайн версию, там делать поиск-замену, потом выгружать обратно. В оффлайне поиск работает с учётом пробелов.
Такое чувство, что мы из параллельных вселенных и у меня какая-то другая утилита. Специально сейчас создала липовый отрывок и протестила замену « ее». Мне заменило только то, что было нужно, пробелы никуда не убежали
Суть в том, что моя тулза использует штатный поиск самой Ноты. А как бы она могла ещё работать? Т.е. вот прям по действиям? Я когда-то думал над этим, но так и не придумал.
Кроме того, всегда надо помнить, что на написание любого нестандартного средства уходит огромная куча времени и тут надо сильно думать, что быстрее: писать неделю-две утилиту или потратить час-два-пять на то же действие вручную.
Вдогонку.
Вообще, как я редачил (Ё-фикация – частный случай).
1. Я скачивал оригиналы + переводы своей тулзой.
2. Заливал полученные файлы на телефон (Nokia e71) и на нём уже вычитывал + редачил (DEdit в помощь).
Правки и комменты писал после фрагмента, в начале строки ставил символ процента «%» – его быстро и удобно поставить с клавы на теле, плюс он довольно редко встречается в тексте – легко найти поиском.
3. После вычитки/редактуры на теле, скидывал получившееся на комп, открывал в NP++ с включённым DSpellCheck (словарь «Russian (with Io)») и подсветкой синтаксиса, которая подсвечивала мне все мои комменты (пишется за 1 минуту), и ещё раз просматривал (хотя сколько ни вычитывай... эх...) Вносил правки в переводы.
4. Заливал уже исправленные фрагменты обратно на Ноту (http://vayurik.ru/tools/notabenoid/import_translate_file.php).
Хотя такая методика не всегда приемлема, особенно при работе в большой команде.
Добрый день!
У меня вопрос – я сделала резервную копию проекта. А где её найти? Помогите пожалуйста.
скрытые комментарии (1 шт.)
Добрый день.
Если всё прошло успешно, скрипт предложит сохранить файл. Если этого не произошло, значит скрипт по какой-то причине не отработал до конца. Эта операция довольно длительная и провайдер может прерывать выполнение скрипта по таймауту, считая, что скрипт завис. Там об этом висит предупреждение сверху, хотя с того момента провайдер (каким-то волшебным образом) пошёл мне на встречу и теперь скрипты могут выполняться до 10 минут примерно. Если они опять мне там не сделали «как у всех».