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形式ファイルを保存

1<span class="hljs-comment"># codng: utf-8</span>
2require 'csv'
3 
4Encoding.default_internal = 'UTF-8'
5<span class="hljs-comment"># 入出力エンコード設定確認用</span>
6puts "Encoding.default_external = <span class="hljs-comment">#{Encoding.default_external}"  # =>Windows-31J</span>
7puts "Encoding.default_internal = <span class="hljs-comment">#{Encoding.default_internal}"  # =>UTF-8</span>
8 
9work_path = 'C:/work/'
10mt_file_name = work_path + "mtdata.txt"
11total_line_no = 0
12File.delete(mt_file_name) <span class="hljs-keyword">if</span> File.exists?(mt_file_name)
13File.open(mt_file_name, <span class="hljs-string">"w"</span>) <span class="hljs-keyword">do</span> |mt_file|   <span class="hljs-comment"># MTファイルオープン</span>
14    csv_filenames = Dir.glob(work_path + <span class="hljs-string">'*.csv'</span>) <span class="hljs-comment"># workにある *.csvファイル</span>
15    puts csv_filenames
16    puts <span class="hljs-string">"start..."</span>
17    csv_filenames.each <span class="hljs-keyword">do</span> |csv_file|
18        puts csv_file
19        <span class="hljs-comment"># 作業ID   作業者 作業者ページURL   承認日時    1. 記事タイトル   2. 記事本文</span>
20        csv_data = CSV.read(csv_file, headers: <span class="hljs-literal">true</span>)
21        line_no = <span class="hljs-number">0</span>
22        csv_data.each <span class="hljs-keyword">do</span> |<span class="hljs-keyword">data</span>|
23            line_no += <span class="hljs-number">1</span>
24            total_line_no +=<span class="hljs-number">1</span>
25            title = <span class="hljs-keyword">data</span>[<span class="hljs-string">"1. 記事タイトル"</span>]
26            kiji = <span class="hljs-keyword">data</span>[<span class="hljs-string">"2. 記事本文"</span>]
27            mt_form = <<~MTFORM
28                AUTHOR:
29                TITLE: <span class="hljs-comment">#{title}</span>
30                BASENAME: post<span class="hljs-comment">#{total_line_no}</span>
31                <span class="hljs-keyword">STATUS</span>: Future
32                <span class="hljs-keyword">ALLOW</span> COMMENTS: <span class="hljs-number">0</span>
33                <span class="hljs-keyword">CONVERT</span> BREAKS: __default__
34                <span class="hljs-keyword">ALLOW</span> PINGS: <span class="hljs-number">0</span>
35                PRIMARY <span class="hljs-keyword">CATEGORY</span>:
36                <span class="hljs-keyword">CATEGORY</span>:
37                AUTHOR:
38                AUTHOR:
39 
40                <span class="hljs-built_in">DATE</span>: <span class="hljs-number">07</span>/<span class="hljs-number">04</span>/<span class="hljs-number">2016</span> <span class="hljs-number">23</span>:<span class="hljs-number">00</span>:<span class="hljs-number">36</span>
41                <span class="hljs-comment">-----</span>
42                <span class="hljs-keyword">BODY</span>:
43                <span class="hljs-comment">#{kiji}</span>
44                <span class="hljs-comment">-----</span>
45                <span class="hljs-keyword">EXTENDED</span> <span class="hljs-keyword">BODY</span>:
46 
47                <span class="hljs-comment">-----</span>
48                EXCERPT:
49 
50                <span class="hljs-comment">-----</span>
51                KEYWORDS:
52 
53                <span class="hljs-comment">-----</span>
54 
55 
56                <span class="hljs-comment">--------</span>
57            MTFORM
58            mt_file.write(mt_form)   
59        <span class="hljs-keyword">end</span>
60        puts <span class="hljs-string">"\n#{total_line_no}:#{line_no}"</span>
61    <span class="hljs-keyword">end</span>
62<span class="hljs-keyword">end</span>

コメント

タイトルとURLをコピーしました