Editing
Fate/stay night:Clean .KS files
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!
== Introduction == Decrypted *.ks-files contain not just decrypted text, but various service info as well (word wrapping tags, for example) that hinders translation process. To remove this service info and get text-only file, one can use: *MS Word 2003 macro (to edit one given script file within Word). Requires MS Word 2003 or above. *Python script (for batch processing of all *.ks-files in a given directory). Requires Python 2.x and (sometimes) MS Applocale. == MS Word 2003 Macro == Requires MS Word 2003 or newer.<br> To use the following macro, you have to insert it into your Word document, save changes and run it. It will remove most frequent tags from your script (you can tell by looking). Press '''Alt+F11''' to insert a macro in your document, copy and paste the following code ('''Ctrl+C, Ctrl+V''') and save changes ('''Ctrl+S'''). Then run a macro via menu, usually '''Service - Macro'''. <!-- Translation may be wrong, please fix it in this case, if you have English version of MS Word--> <pre>Sub FSN_CleanUp() ' ' macro for MS Word 2003 ' created at 11.05.2008 by DMC ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "\*page0*texton" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll With Selection.Find .Text = "\[wrap text=*\]" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll With Selection.Find .Text = "\[line*\]" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "[l][r]" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "\*page*|" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "@pgnl" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "\@textoff*texton^13" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "@pg" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "\@textoff*return^13" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "\@*^13" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = """""" .Replacement.Text = """...""" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub </pre> Original version is [http://www.baka-tsuki.org/project/index.php?title=%D0%A1%D1%83%D0%B4%D1%8C%D0%B1%D0%B0/%D0%9D%D0%BE%D1%87%D1%8C_%D1%81%D1%85%D0%B2%D0%B0%D1%82%D0%BA%D0%B8:%D0%A7%D0%B8%D1%81%D1%82%D0%BA%D0%B0_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2 here] (Russian). == Python Batch Script == Requires Python 2.x ([http://www.python.org/download/ download]). MS Applocale ([http://www.microsoft.com/globaldev/tools/apploc.mspx download], [http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=8c4e8e0d-45d1-4d9b-b7c0-8430c1ac89ab&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f8%2f568a8caf-29c4-43ec-a10f-97730f26977e%2fapploc.msi DDL] or [http://www.google.com/search?q=Applocale+download Google]) is required only if your .ks-files have Japanese characters in filenames.<br> The following script exports only text from all .ks-files in the directory it's run from. Text is saved in .txt-files that are created the same directory, one .txt per each .ks-file. Save the following code as text (*.txt) file, rename it into Python script (*.py) file and copy/move script file to a directory you have extracted .ks-files in. If you have Python installed, *.py-files can be run as other programs (e.g. by single or double-click). Python is bundled with many operating systems (Mac OS X, *nix and *BSD), <u>but not with OS from Microsoft</u>. To be able to use Python in Windows, you have to download and install Python 2.x (script isn't tested with Python 3.0 and above). If your Windows OS doesn't use Japanese local settings for programs that don't support Unicode, script won't work on .ks-files with Japanese characters in filenames. Hence you either should rename your *.ks-files in order for them to have only ASCII symbols in filenames (latin alphabet and/or digits) or run script under Microsoft Applocale. In latter case open command line console via Applocale (start Applocale and set it to run '''%windir%\system32\cmd.exe''' under Windows XP or 2003), change directory to the location of your *.ks-files and *.py-file (e.g. '''cd "C:\FSN Files\Scripts"'''), and run Python script (e.g by entering '''gettext.py''' in command line). Script file must contain the following (make sure you have indentation intact, Python is strict about this!): <pre>import os def debrack(line): linemark = line.find('[line') if linemark+1: line = line[:linemark]+'-----'+line[linemark+7:] start = line.find('[') end = line.find(']') if start == -1: return line if start < end: return line[:start]+line[end+1:] return '' files = [] for file in os.listdir(os.getcwd()): if file.endswith('.ks'): files.append(file) if len(files) == 0: print 'No *.ks file(-s) to decode in current directory!' exit() for file in files: print file, raw = open(file, 'rb') res = open(file.replace('.ks', '.txt'), 'wb') for line in raw: if line.find('\x00[\x00w\x00r\x00a\x00p\x00 \x00t\x00e\x00x\x00t\x00=\x00"\x00"\x00]') >= 0: line = line.replace('\x00', '') line = line.replace('[l]', '\r\n') templine = debrack(line) for i in range (1,100): newline = debrack(templine) if newline[2:4] == '""': break if newline == templine: res.write(newline[2:]) break else: templine = newline if line.find('*page')+1: res.write('\r\n') raw.close() res.close() print '-> '+file.replace('.ks', '.txt')</pre> Original version is [http://www.baka-tsuki.org/project/index.php?title=%D0%A1%D1%83%D0%B4%D1%8C%D0%B1%D0%B0/%D0%9D%D0%BE%D1%87%D1%8C_%D1%81%D1%85%D0%B2%D0%B0%D1%82%D0%BA%D0%B8:%D0%A7%D0%B8%D1%81%D1%82%D0%BA%D0%B0_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2 here] (Russian). Use [http://www.baka-tsuki.org/project/index.php?title=Talk:Fate/stay_night:Clean_.KS_files&action=edit discussion page] for comments or PM [http://www.baka-tsuki.net/forums/ucp.php?i=pm&mode=compose&u=1335 Const2k] on B-T forum.
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
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