Initial commit, I guess
Signed-off-by: prescientmoon <git@moonythm.dev>
This commit is contained in:
commit
a0e3decd7a
14 changed files with 4813 additions and 0 deletions
scripts
73
scripts/main.py
Executable file
73
scripts/main.py
Executable file
|
@ -0,0 +1,73 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -p "pkgs.python3.withPackages (p: with p; [tabulate])"
|
||||
#!nix-shell -i python3
|
||||
import csv
|
||||
import os
|
||||
import sqlite3
|
||||
import sys
|
||||
|
||||
data_dir = os.environ.get("SHIMMERING_DATA_DIR")
|
||||
db_path = data_dir + "/db.sqlite"
|
||||
# if not os.path.exists(db_path):
|
||||
# run(f"cat ./schema.sql | sqlite3 {db_path}")
|
||||
conn = sqlite3.connect(db_path)
|
||||
|
||||
|
||||
# {{{ Import songs
|
||||
def import_charts_from_csv(input_file):
|
||||
with open(input_file, mode="r") as file:
|
||||
chart_count = 0
|
||||
songs = dict()
|
||||
|
||||
for row in csv.reader(file):
|
||||
if len(row) > 0:
|
||||
chart_count += 1
|
||||
[title, difficulty, level, cc, _, note_count, _, _, _] = row
|
||||
if songs.get(title) is None:
|
||||
songs[title] = []
|
||||
songs[title].append((difficulty, level, cc, note_count))
|
||||
|
||||
for title, charts in songs.items():
|
||||
artist = None
|
||||
|
||||
if title.startswith("Quon"):
|
||||
artist = title[6:-1]
|
||||
title = "Quon"
|
||||
|
||||
row = conn.execute(
|
||||
"""
|
||||
INSERT INTO songs(title,artist)
|
||||
VALUES (?,?)
|
||||
RETURNING id
|
||||
""",
|
||||
(title, artist),
|
||||
).fetchone()
|
||||
song_id = row[0]
|
||||
|
||||
for difficulty, level, cc, note_count in charts:
|
||||
conn.execute(
|
||||
"""
|
||||
INSERT INTO charts(song_id, difficulty, level, note_count, chart_constant)
|
||||
VALUES(?,?,?,?,?)
|
||||
""",
|
||||
(
|
||||
song_id,
|
||||
difficulty,
|
||||
level,
|
||||
int(note_count.replace(",", "").replace(".", "")),
|
||||
int(float(cc) * 100),
|
||||
),
|
||||
)
|
||||
|
||||
conn.commit()
|
||||
|
||||
print(f"Imported {chart_count} charts and {len(songs)} songs")
|
||||
|
||||
|
||||
# }}}
|
||||
|
||||
command = sys.argv[1]
|
||||
subcommand = sys.argv[2]
|
||||
|
||||
if command == "import" and subcommand == "charts":
|
||||
import_charts_from_csv(sys.argv[3])
|
Loading…
Add table
Add a link
Reference in a new issue