RubyでクラウドワークスのタスクCSV記事をMT形式に変換してみた

環境:windows10 + ruby 2.5.3

クラウドワークスのタスクのCSV記事(SJISで保存)を、MT形式ファイル(SJIS)に保存

work_path = ‘C:/work/’  (c:\work\) に置かれている *.csv を読み込み、
C:/work/mtdata.txt  (c:\work\mtdata.txt) にMT形式ファイルを保存

# codng: utf-8
require 'csv'

Encoding.default_internal = 'UTF-8'
# 入出力エンコード設定確認用
puts "Encoding.default_external = #{Encoding.default_external}"  # =>Windows-31J
puts "Encoding.default_internal = #{Encoding.default_internal}"  # =>UTF-8

work_path = 'C:/work/'
mt_file_name = work_path + "mtdata.txt"
total_line_no = 0
File.delete(mt_file_name) if File.exists?(mt_file_name)
File.open(mt_file_name, "w") do |mt_file|   # MTファイルオープン
    csv_filenames = Dir.glob(work_path + '*.csv') # workにある *.csvファイル
    puts csv_filenames
    puts "start..."
    csv_filenames.each do |csv_file|
        puts csv_file
        # 作業ID	作業者	作業者ページURL	承認日時	1. 記事タイトル	2. 記事本文
        csv_data = CSV.read(csv_file, headers: true)
        line_no = 0
        csv_data.each do |data|
            line_no += 1
            total_line_no +=1
            title = data["1. 記事タイトル"]
            kiji = data["2. 記事本文"]
            mt_form = <<~MTFORM 
                AUTHOR: 
                TITLE: #{title}
                BASENAME: post#{total_line_no}
                STATUS: Future
                ALLOW COMMENTS: 0
                CONVERT BREAKS: __default__
                ALLOW PINGS: 0
                PRIMARY CATEGORY: 
                CATEGORY: 
                AUTHOR: 
                AUTHOR: 

                DATE: 07/04/2016 23:00:36
                -----
                BODY:
                #{kiji}
                -----
                EXTENDED BODY:

                -----
                EXCERPT:

                -----
                KEYWORDS:

                -----


                --------
            MTFORM
            mt_file.write(mt_form)    
        end
        puts "\n#{total_line_no}:#{line_no}"
    end
end
↓ 参考になるブログがたくさんあります!ぜひどうぞ! ↓
にほんブログ村 その他日記ブログ 日々のできごとへ

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください