mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
|
from __future__ import print_function
|
||
|
|
||
|
import csv
|
||
|
import sys
|
||
|
|
||
|
fields = ['type_id', 'power', 'pp', 'accuracy', 'priority', 'target_id', 'effect_id', 'effect_chance']
|
||
|
|
||
|
def main():
|
||
|
old = csv.DictReader(open(sys.argv[1], 'rb'))
|
||
|
new = csv.DictReader(open(sys.argv[2], 'rb'))
|
||
|
version_group_id = int(sys.argv[3])
|
||
|
|
||
|
moves = {}
|
||
|
|
||
|
for row in new:
|
||
|
moves[row['id']] = row
|
||
|
|
||
|
for row in old:
|
||
|
if row['id'] not in moves:
|
||
|
print("move %d disappeared!", file=sys.stderr)
|
||
|
continue
|
||
|
|
||
|
oldmove = row
|
||
|
newmove = moves[row['id']]
|
||
|
|
||
|
if int(oldmove['id']) > 10000:
|
||
|
print("skipping shadow moves", file=sys.stderr)
|
||
|
continue
|
||
|
|
||
|
changed_fields = []
|
||
|
for field in fields:
|
||
|
if oldmove[field] == newmove[field]:
|
||
|
continue
|
||
|
if field == 'power' and oldmove['power'] in "01":
|
||
|
if newmove['power'] == "":
|
||
|
# expected
|
||
|
# we used to store variable-power moves as 0 or 1,
|
||
|
# now we store NULL
|
||
|
continue
|
||
|
else:
|
||
|
print("%s: %s changed from %s to %s" % (oldmove['identifier'], field, oldmove[field], newmove[field]), file=sys.stderr)
|
||
|
if oldmove[field] == '':
|
||
|
print("%s: %s changed from NULL to %s" % (oldmove['identifier'], field, newmove[field]), file=sys.stderr)
|
||
|
continue
|
||
|
#print("%s: %s changed from %s to %s" % (oldmove['identifier'], field, oldmove[field], sql_list([newmove[field]])))
|
||
|
changed_fields.append(field)
|
||
|
|
||
|
if changed_fields:
|
||
|
print("INSERT INTO move_changelog (move_id, changed_in_version_group_id, %s) VALUES (%s, %s, %s); -- %s (%s)" %
|
||
|
(sql_list(changed_fields), row['id'], version_group_id,
|
||
|
sql_list(map(oldmove.__getitem__, changed_fields)),
|
||
|
oldmove['identifier'],
|
||
|
sql_list(map(newmove.__getitem__, changed_fields))))
|
||
|
|
||
|
def sql_list(values):
|
||
|
return ", ".join(x if x != "" else "NULL" for x in values)
|
||
|
|
||
|
main()
|