Julio Biason
11 years ago
1 changed files with 99 additions and 0 deletions
@ -0,0 +1,99 @@
|
||||
#!/usr/bin/env python |
||||
# -*- encoding: utf-8 -*- |
||||
|
||||
import yaml |
||||
import sys |
||||
import sqlite3 |
||||
import os |
||||
import os.path |
||||
import datetime |
||||
|
||||
result = None |
||||
with open('../lyrics.yaml') as content: |
||||
result = yaml.load(content) |
||||
|
||||
if not result: |
||||
print 'Error opening file.' |
||||
sys.exit(1) |
||||
|
||||
if os.path.exists('lyrics.sq3'): |
||||
print 'Removing old database...' |
||||
os.remove('lyrics.sq3') |
||||
|
||||
print 'Connecting...' |
||||
connection = sqlite3.connect('lyrics.sq3') |
||||
|
||||
print 'Creating tables...' |
||||
cursor = connection.cursor() |
||||
|
||||
print '\tArtists...' |
||||
cursor.execute('''CREATE TABLE artists ( |
||||
id INTEGER PRIMARY KEY, |
||||
name TEXT CONSTRAINT artist_name UNIQUE |
||||
)''') |
||||
|
||||
print '\tSongs...' |
||||
cursor.execute('''CREATE TABLE songs ( |
||||
id INTEGER PRIMARY KEY, |
||||
title TEXT, |
||||
artist INTEGER CONSTRAINT aritst_song REFERENCES artists (id), |
||||
done_in TEXT |
||||
)''') |
||||
|
||||
print '\tLyrics...' |
||||
cursor.execute('''CREATE TABLE lyrics ( |
||||
id INTEGER PRIMARY KEY, |
||||
song INTEGER CONSTRAINT song_lyrics REFERENCES songs (id), |
||||
lyrics TEXT NOT NULL |
||||
)''') |
||||
|
||||
print '\tTips...' |
||||
cursor.execute('''CREATE TABLE tips ( |
||||
id INTEGER PRIMARY KEY, |
||||
title TEXT NOT NULL, |
||||
value TEXT NOT NULL |
||||
)''') |
||||
|
||||
print 'Converting songs...' |
||||
today = datetime.date.today() |
||||
|
||||
for song in result: |
||||
done = song['done'] |
||||
lyrics = song['lyrics'] |
||||
|
||||
# fucking "Yes" |
||||
artist = song['artist'] |
||||
if isinstance(artist, basestring): |
||||
artist = song['artist'].lower() |
||||
else: |
||||
artist = 'yes' |
||||
|
||||
song = song['song'].lower() |
||||
|
||||
print '\t', artist, '-', song |
||||
|
||||
cursor.execute('SELECT id FROM artists WHERE name=?', |
||||
(artist, )) |
||||
artist_row = cursor.fetchone() |
||||
if not artist_row: |
||||
print '\t\tNot in db, adding...' |
||||
cursor.execute('INSERT INTO artists (id, name) VALUES (NULL, ?)', |
||||
(artist, )) |
||||
artist_id = cursor.lastrowid |
||||
else: |
||||
print '\t\tAlready in db with id', artist_row[0] |
||||
artist_id = artist_row[0] |
||||
|
||||
cursor.execute('INSERT INTO songs (id, title, artist, done_in) VALUES ' |
||||
'(NULL, ?, ?, ?)', |
||||
(song, artist_id, today if done else None)) |
||||
song = cursor.lastrowid |
||||
|
||||
if lyrics: |
||||
# some songs do not have lyrics, as they were in the db just to mark |
||||
# them as "done" |
||||
cursor.execute('INSERT INTO lyrics (id, song, lyrics) VALUES (NULL, ?, ?)', |
||||
(song, lyrics)) |
||||
connection.commit() |
||||
|
||||
connection.close() |
Loading…
Reference in new issue