Kategorien
Bearbeiten von „FreewarWiki:Bot/Skripts/npclist.php“
Zur Navigation springen
Zur Suche springen
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 8: | Zeile 8: | ||
define('TEMPLATE_GET_KEY', 1); | define('TEMPLATE_GET_KEY', 1); | ||
define('TEMPLATE_GET_VALUE', 2); | define('TEMPLATE_GET_VALUE', 2); | ||
function get_templates($template, $wiki_text) { | function get_templates($template, $wiki_text) { | ||
Zeile 34: | Zeile 19: | ||
function parse_template($text) { | function parse_template($text) { | ||
$template = array(); | $template = array(); | ||
/* nicht kompatibel mit verschachtelten Vorlagen | /* nicht kompatibel mit verschachtelten Vorlagen | ||
// Key-Value Paare spliten | // Key-Value Paare spliten | ||
Zeile 50: | Zeile 35: | ||
$depth = 0; | $depth = 0; | ||
for ($i = | for ($i = 1, $length = strlen($text); $i < $length; ++$i) { | ||
if ($text[$i] === '{' && $text[$i+1] === '{') { // weitere Vorlage | if ($text[$i] === '{' && $text[$i+1] === '{') { // weitere Vorlage | ||
++$depth; | ++$depth; | ||
Zeile 85: | Zeile 70: | ||
$template[$key] = ''; | $template[$key] = ''; | ||
} else if ($text[$i] === '|' && $depth === 0) { // Parameter Sparierung | } else if ($text[$i] === '|' && $depth === 0) { // Parameter Sparierung | ||
$mode = TEMPLATE_GET_KEY; | |||
$key = ''; | |||
} else if ($mode === TEMPLATE_GET_KEY) { | } else if ($mode === TEMPLATE_GET_KEY) { | ||
$key .= $text[$i]; | $key .= $text[$i]; | ||
Zeile 99: | Zeile 78: | ||
} | } | ||
} | } | ||
return array_map('trim', $template); | return array_map('trim', $template); | ||
} | } | ||
Zeile 130: | Zeile 109: | ||
$response = json_decode(file_get_contents($url), true); | $response = json_decode(file_get_contents($url), true); | ||
$continue_token = @$response['continue']['cmcontinue']; | $continue_token = @$response['query-continue']['categorymembers']['cmcontinue']; | ||
$cm = array_merge($cm, array_map('extract_data', array_filter($response['query']['categorymembers'], 'is_page'))); | $cm = array_merge($cm, array_map('extract_data', array_filter($response['query']['categorymembers'], 'is_page'))); | ||
} while ($continue_token); | } while ($continue_token); | ||
Zeile 148: | Zeile 127: | ||
# Entfernen von formatnum | # Entfernen von formatnum | ||
function formatnum_r($number) { | function formatnum_r($number) { | ||
return + | return +str_replace('.', '', $number); | ||
} | } | ||
Zeile 161: | Zeile 140: | ||
return $links; | return $links; | ||
} | } | ||
define('WIKI_HOST', 'fwwiki.de'); | define('WIKI_HOST', 'fwwiki.de'); | ||
define('CSV_DELIMITER', ';'); | define('CSV_DELIMITER', ';'); | ||
define('CSV_DELIMITER_INTER', ' | define('CSV_DELIMITER_INTER', ','); | ||
# Seiten pro API Abfrage | # Seiten pro API Abfrage | ||
define('CHUNK_LENGTH', | define('CHUNK_LENGTH', 20); | ||
$npcs = array(); | $npcs = array(); | ||
Zeile 223: | Zeile 173: | ||
$base = $base[0]; | $base = $base[0]; | ||
if (!isset($base['unangreifbar']) || $base['unangreifbar'] == 'none') { | |||
# Name setzen | |||
$name = isset($base['name']) ? $base['name'] : $info['title']; | |||
$images = preg_split("/\s+/", trim($base['Bild'])); | |||
# Basiseintrag | |||
$base_entry = array( | |||
'name' => $name, | |||
'A' => formatnum_r($base['Stärke']), | |||
'LP' => formatnum_r($base['Lebenspunkte']), | |||
'XP' => formatnum_r($base['XP']), | |||
'GM' => formatnum_r($base['Gold']), | |||
'bild' => $images[0], | |||
'autor' => implode(CSV_DELIMITER_INTER, filter_wiki_links(trim($base['BildAutor']))), | |||
'vklist' => implode(CSV_DELIMITER_INTER, filter_wiki_links($base['Vorkommen'])), | |||
'itemlist' => implode(CSV_DELIMITER_INTER, filter_wiki_links($base['Items'])) | |||
); | |||
echo implode(CSV_DELIMITER, $base_entry) . "\n"; | |||
if ($name == "Pironer") { | |||
implode(CSV_DELIMITER_INTER, filter_wiki_links($base['Items'])); | |||
} | |||
# Varianten | |||
$variants = array_map('parse_template', get_templates('NPC/Ausnahme', $raw)); | |||
# eintragen | |||
foreach ($variants as $variant) { | |||
echo implode(CSV_DELIMITER, array_merge($base_entry, $variant)) . "\n"; | |||
} | |||
} | } | ||
} | } | ||
} | } | ||