-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparse.php
More file actions
72 lines (58 loc) · 2.48 KB
/
Copy pathparse.php
File metadata and controls
72 lines (58 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
declare(strict_types=1);
use JsonMachine\Items;
use JsonMachine\JsonDecoder\ExtJsonDecoder;
use League\Csv\Writer;
require __DIR__ . '/vendor/autoload.php';
// The names of the languages as used in the bdsp text dump files.
$languages = [
'jpn',
'english',
'french',
'german',
'italian',
'spanish',
'korean',
'jpn_kanji',
'simp_chinese',
'trad_chinese',
];
$filesToParse = [
// The data in this first file isn't really necessary, but it's a good file to use to test the overall script.
['inputFilename' => 'input/1.3.0/[language]/[language]_ss_monsname.json', 'outputFilename' => 'output/pokemon_names.csv'],
// Pokédex entries.
['inputFilename' => 'input/1.3.0/[language]/[language]_dp_pokedex_diamond.json', 'outputFilename' => 'output/pokedex_entries_diamond.csv'],
['inputFilename' => 'input/1.3.0/[language]/[language]_dp_pokedex_pearl.json', 'outputFilename' => 'output/pokedex_entries_pearl.csv'],
// Ability names and descriptions.
['inputFilename' => 'input/1.3.0/[language]/[language]_ss_tokusei.json', 'outputFilename' => 'output/ability_names.csv'],
['inputFilename' => 'input/1.3.0/[language]/[language]_ss_tokuseiinfo.json', 'outputFilename' => 'output/ability_descriptions.csv'],
// Item names and descriptions.
['inputFilename' => 'input/1.3.0/[language]/[language]_ss_itemname.json', 'outputFilename' => 'output/item_names.csv'],
['inputFilename' => 'input/1.3.0/[language]/[language]_ss_iteminfo.json', 'outputFilename' => 'output/item_descriptions.csv'],
// Move names and descriptions.
['inputFilename' => 'input/1.3.0/[language]/[language]_ss_wazaname.json', 'outputFilename' => 'output/move_names.csv'],
['inputFilename' => 'input/1.3.0/[language]/[language]_ss_wazainfo.json', 'outputFilename' => 'output/move_descriptions.csv'],
];
foreach ($filesToParse as $file) {
$outputRecords = [];
foreach ($languages as $language) {
$inputFilename = str_replace('[language]', $language, $file['inputFilename']);
$items = Items::fromFile($inputFilename, [
'pointer' => '/labelDataArray',
'decoder' => new ExtJsonDecoder(true),
]);
foreach ($items as $key => $value) {
$str = [];
foreach ($value['wordDataArray'] ?? [] as $wordData) {
$str[] = $wordData['str'];
}
$str = implode("\\n", $str);
$outputRecords[$key][$language] = $str;
}
}
$outputCsv = Writer::createFromPath($file['outputFilename'], 'w+');
$outputCsv->insertOne($languages);
foreach ($outputRecords as $key => $outputRecord) {
$outputCsv->insertOne($outputRecord);
}
}