ไฟล์ต้นฉบับนิยายภาษาจีนที่ผมได้รับเพื่อนำมาแปลไทย จะอยู่ในรูปแบบที่เป็น text file ซึ่งรวมทุก chapter ทั้งหมดไว้ในไฟล์เดียวกัน เนื่องด้วยวิธีการแปลงานของผมจะต้องตัดแยกแต่ละ chapter เก็บแยกเป็น record ในฐานข้อมูลเพื่อความสะดวกเวลาค้นหาข้อความ จึงต้องเขียนโปรแกรมเพื่อตัดข้อมูล
สมัยตอนแรกๆ นั้นผมเขียนเป็นโปรแกรม PHP ซึ่งการตัดแบ่งไฟล์นั้นจะใช้เวลาอยู่บ้าง โดยเฉพาะไฟล์ขนาดใหญ่ตามประสานิยายจีน และช่วงหลังๆ นี้การแปลงข้อมูลในรูปแบบ plain text เป็น html (หรือฟอร์แมตอื่น) ผมจะใช้ Pandoc เป็นหลัก
แต่หลังจากที่ลองเขียนเป็น python พบว่าสามารถทำงานได้เร็วกว่าใช้ PHP ผสม Pandoc มาก เลยเอามาจดเป็นบล็อกไว้กันลืม (ใช้ ChatGPT ให้สร้างโปรแกรมขึ้นมา)
โปรแกรม novel-convert.py อันนี้เอามาใช้งานแปลงไฟล์ได้ค่อนข้างสะดวก วิธีใช้งานต้องสั่งการด้วย command บน terminal โดยมีพารามิเตอร์ดังนี้
novel-convert.py [-h] [-v] [-clean] [-rn2n] [-line] [-html] [-cuthtml]
[-cuttext] [-h1] [-h2] [-h3] [-h4] [-h5] [-h6]
[input] [output]
- -h แสดง help
- -v แสดงเลขเวอร์ชัน
- -clean ลบช่องว่าง (full space รหัส \u3000) ที่อยู่หน้าย่อหน้า
- -rn2n แปลงรหัสขึ้นบรรทัดใหม่ จาก \r\n เป็น \n
- -line เพิ่ม \n ให้กับทุกๆ บรรทัด เพื่อเว้นระยะบรรทัด (สำหรับใช้ในฟอร์แมต markdown)
- -html ใส่แท็ก <p></p> ไว้ทุกบรรทัด และบรรทัดที่อยู่ในรูปแบบ 第(\d+)章(.*?) ให้ทำเป็น heading โดยสามารถกำหนดว่าจะให้เป็น h1, h2, h3, ... หากไม่ได้กำหนดไว้ จะถูกตั้งให้เป็น h1
- -cuthtml ตัดไฟล์ html โดยให้ตัดบรรทัดที่เป็น heading ไปไว้ในไฟล์ใหม่ โดยไฟล์จะอยู่ในโฟลเดอร์ตามชื่อที่กำหนดไว้ใน output และตามด้วยเลข 4 หลัก
- -cuttext ตัดไฟล์ text โดยให้ตัดบรรทัดที่เป็น heading ไปไว้ในไฟล์ใหม่ โดยไฟล์จะอยู่ในโฟลเดอร์ตามชื่อที่กำหนดไว้ใน output และตามด้วยเลข 4 หลัก
- -h1, -h2, -h3, -h4, -h5, -h6 เป็นการกำหนดระดับของ heading ที่จะให้แปลง
- input ชื่อไฟล์ที่เป็น input
- output ชื่อไฟล์ที่เป็น output
ตัวอย่างการใช้งาน แปลงไฟล์ a.txt ให้เป็นฟอร์แมต html ชื่อ a.html
novel-convert.py -clean -html a.txt a.htm
novel-convert.py -clean -rn2n -line -html -cuthtml a.txt a.htm
ฟีเจอร์ที่จะทำเพิ่มในอนาคต
- พารามิเตอร์ตัวเลข เพื่อกำหนดว่าหากให้ตัดไฟล์ ตัวเลขจะเริ่มต้นที่เลขอะไร
- ตรวจสอบ encoding ของไฟล์ text ต้นฉบับว่าเป็นอะไร แล้วให้แปลงเป็น utf-8
เอาไว้ถ้าขยันก็ว่าจะลองทำด้วย golang + Fyne เพื่อใช้งานแบบ GUI ไม่ต้องมานั่งพิมพ์คำสั่ง
** เพิ่มเติม **
โปรแกรม convert_auto_uft8.py ที่เขียน (ChatGPT) ไว้ก่อนนี้ แปลง encoding อื่นๆ (เช่น GBK) เป็น utf-8 โดยจะตรวจสอบเองอย่างอัตโนมัติ
วิธีใช้คือ มันจะแปลงทุกไฟล์ที่อยู่ในโฟลเดอร์ย่อยชื่อ file ซึ่งไฟล์ที่ถูกแปลงแล้วจะตั้งชื่อด้วยชื่อเดิมตามด้วย _utf8 เช่นไฟล์ชื่อ a.txt ที่ถูกแปลงแล้ว จะชื่อว่า a_utf8.txt
ตัวอย่างการใช้งาน
python convert_auto_utf8.py // แปลงปกติ
python convert_auto_utf8.py -line // เพิ่มบรรทัดว่าง
python convert_auto_utf8.py -html // แปลงเป็น html
python convert_auto_utf8.py -line -html // เพิ่มบรรทัดว่างและแปลงเป็น html
โปรแกรม convert-novel.php อันนี้เขียนใหม่เพื่อให้ใช้งานสะดวกขึ้น (3 มกราคม 2569) มีฟีเจอร์จากโปรแกรม python ด้านบนครบ และเพิ่มเรื่องการแปลง encoding เข้าไป ลากไฟล์ที่ต้องการจัดการมาวางได้เลย มีฟีเจอร์แปลง encoding ให้เป็น utf-8, ลบช่องว่างหัวท้ายบรรทัด, เพิ่มบรรทัดว่าง, แปลงเป็น html, ตัดแบ่งไฟล์แล้วบีบอัดเป็น zip เพื่อให้ดาวน์โหลดสะดวก
[ Keywords ]
นิยาย, นิยายจีน, แปลงไฟล์นิยายจีน, novel, chinese novel, convert chinese novel

ไม่มีความคิดเห็น:
แสดงความคิดเห็น