Editing
Talk:Судьба/Ночь схватки:Чистка скриптов
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Скрипт на Python== Скрипт на Python, по-моему только word wrap убьет. Ещё нужно убивать всё что в квадратных скобках, а также все строки, начинающиеся на @ вместе с символом возврата каретки. Строки типа *page заменять убивать, н осимвол возврата каретки оставлять. --[[User:Rung|Rung]] 15:46, 11 May 2008 (PDT) ---- Скрипт мой, поэтому я отвечаю за свои слова: "сохраняющим '''только отображаемый текст''' из всех *.ks-файлов в каталоге, куда он помещен". Питон отличается высокой читабельностью кода, поэтому я не думал, что скрипт придется комментировать... <pre>import os	#импорт необходимого модуля def debrack(line):	#функция, вырезающая фрагменты между квадратными скобками в переданной ей строке start = line.find('[') end = line.find(']') if start == -1: return line if start < end: return line[:start]+line[end+1:] return '' files = []	#инициализация списка для сбора *.ks-файлов for file in os.listdir(os.getcwd()):	#обход списка всех файлов в каталоге со скриптом if file.endswith('.ks'): files.append(file)	#...и его фильтрация - выбор только *.ks-файлов if len(files) == 0: print 'No *.ks file(-s) to decode in current directory!'	#*.ks-файлы в текущем каталоге не найдены exit() for file in files:	#обработка каждого найденного *.ks-файла print file,	#сообщаем о начале обработки файла raw = open(file, 'rb') res = open(file.replace('.ks', '.txt'), 'wb')	#если такой *.txt-файл уже существует, он будет перезаписан! for line in raw: if line.find('\x00[\x00w\x00r\x00a\x00p\x00 \x00t\x00e\x00x\x00t\x00=\x00"\x00"\x00]') >= 0: #отбираются только строки, начинающиеся с [wrap text=""] templine = debrack(line)	#из строки убирается первый фрагмент в квадратных скобках for i in range (1,100):	#макс.100 итераций (= макс.100 слов в строке) - защита от зацикливания newline = debrack(templine)	#из строки удаляется следующий фрагмент if newline == templine:	#если результат такой же, в строке скобок не осталось res.write(newline.replace('\x00', '')[2:])	#т.ч. сохряняем её, убрав все нулевые байты и два пробела в начале break else:	#был убран еще один фрагмент, поэтому обрабатываем строку дальше templine = newline	#постепенно оставляя в ней только текст raw.close() res.close() print '-> '+file.replace('.ks', '.txt')	#отчет пользователю, чтобы тот не заскучал</pre> Скрипт писал исключительно для себя, поэтому рюшек типа обработки ошибок и справки не предусмотрено. Работоспособность проверена неоднократно на разных машинах. Тем не менее, прошу сообщать сюда, если вдруг возникнут какие-либо проблемы. Например, я не знаю, есть ли в игре фразы в квадратных скобках (по идее, их быть не должно, но я не проверял) - если есть, при обработке они будут вырезаны. [[User:Const2k|Const2k]] 00:25, 12 May 2008 (PDT) ---- Проверил скрипт, он убивает вообще все символы возврата каретки промежуточные между строками. Нужно оставлят их между разными страницами в игре. Тэги *page и @pg указывают на смену страницы. --[[User:Rung|Rung]] 11:14, 12 May 2008 (PDT) ---- Обнаружил, что тэги могут быть вложенными, типа '''[word wrap="...[l]"]'''. Первая версия скрипта такие строки не обрабатывала, поэтому "фильтровалось" больше, чем нужно. Потери были минимальными (примерно 5 строк (5,06 строки) на мегабайт ks-скрипта или, в среднем, одна строка на пять *.ks-файлов), но если кто-то успел использовать скрипт для подготовки перевода, обновите ваши файлы. Также теперь сохраняются "линии" из дефисов (например, раньше вместо 'Wha---' сохранялось 'Wha'), и не сохраняются строки, состоящие только из двух двойных кавычек. Кстати, скрипт и не должен был сохранять ничего, кроме текста и внутристрочного форматирования, но добавить лишний CR/LF не проблема. Сделал так, что вместо *page в результат пишется пустая строка: if line.find('*page')+1: res.write('\r\n') (четвертая снизу строчка скрипта). При желании любой может подогнать скрипт под себя: например, чтобы сохранять метки страниц в родном виде вместо их замены на новую строку, нужно вместо '\r\n' использовать line: if line.find('*page')+1: res.write(line) [[User:Const2k|Const2k]] 13:52, 12 May 2008 (PDT) ---- Еще одно обновление. Теперь скрипт Unicode-совместим. Не исключено, что "сломалась" совместимость с древними не-Unicode ОС (типа Win98), но зато убрана необходимость использования японской локали для XP или переименования файлов. Получаемые текстовые файлы содержат самый минимум разметки, необходимый для возврата отфильтрованных тэгов на их место (при наличии оригинальных ks-файлов, откуда эти тэги будут браться). Разметка, будучи оформлена как комментарии, не отображается движком вики, поэтому никаких неудобств при чтении *.txt через вики не будет. "Восстанавливающий" скрипт выложу как только, так сразу. [[User:Const2k|Const2k]] 11:15, 1 September 2009 (UTC)
Summary:
Please note that all contributions to Baka-Tsuki are considered to be released under the TLG Translation Common Agreement v.0.4.1 (see
Baka-Tsuki:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
To protect the wiki against automated edit spam, please solve the following captcha:
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
English
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
Add topic
View history
More
Search
Navigation
Charter of Guidance
Project Presentation
Recent Changes
Categories
Quick Links
About Baka-Tsuki
Getting Started
Rules & Guidelines
IRC: #Baka-Tsuki
Discord server
Annex
MAIN PROJECTS
Alternative Languages
Teaser Projects
Web Novel Projects
Audio Novel Project
Network
Forum
Facebook
Twitter
IRC: #Baka-Tsuki
Discord
Youtube
Completed Series
Baka to test to shoukanjuu
Chrome Shelled Regios
Clash of Hexennacht
Cube × Cursed × Curious
Fate/Zero
Hello, Hello and Hello
Hikaru ga Chikyuu ni Itakoro......
Kamisama no Memochou
Kamisu Reina Series
Leviathan of the Covenant
Magika no Kenshi to Basileus
Masou Gakuen HxH
Maou na Ore to Fushihime no Yubiwa
Owari no Chronicle
Seirei Tsukai no Blade Dance
Silver Cross and Draculea
A Simple Survey
Ultimate Antihero
The Zashiki Warashi of Intellectual Village
One-shots
Amaryllis in the Ice Country
(The) Circumstances Leading to Waltraute's Marriage
Gekkou
Iris on Rainy Days
Mimizuku to Yoru no Ou
Tabi ni Deyou, Horobiyuku Sekai no Hate Made
Tada, Sore Dake de Yokattan Desu
The World God Only Knows
Tosho Meikyuu
Up-to-Date (Within 1 Volume)
Heavy Object
Hyouka
I'm a High School Boy and a Bestselling Light Novel author, strangled by my female classmate who is my junior and a voice actress
The Unexplored Summon://Blood-Sign
Toaru Majutsu no Index: Genesis Testament
Regularly Updated
City Series
Kyoukai Senjou no Horizon
Visual Novels
Anniversary no Kuni no Alice
Fate/Stay Night
Tomoyo After
White Album 2
Original Light Novels
Ancient Magic Arc
Dantega
Daybreak on Hyperion
The Longing Of Shiina Ryo
Mother of Learning
The Devil's Spice
Tools
What links here
Related changes
Special pages
Page information