modify it so it running

This commit is contained in:
Rainy21
2026-02-24 01:13:02 -05:00
parent 2da588652e
commit eb736599dc
10 changed files with 308 additions and 76 deletions
+72
View File
@@ -0,0 +1,72 @@
import sqlite3, os
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
DB_NAME = './db/my_library.db'
UPLOAD_FOLDER = 'static/covers'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
def init_db():
conn = sqlite3.connect(DB_NAME)
cursor = conn.cursor()
cursor.executescript('''
CREATE TABLE IF NOT EXISTS media (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL, type TEXT, release_year INTEGER, image_path TEXT DEFAULT 'default.jpg'
);
CREATE TABLE IF NOT EXISTS books (book_id INTEGER PRIMARY KEY, author TEXT, FOREIGN KEY (book_id) REFERENCES media (id));
CREATE TABLE IF NOT EXISTS shows (show_id INTEGER PRIMARY KEY, network TEXT, FOREIGN KEY (show_id) REFERENCES media (id));
CREATE TABLE IF NOT EXISTS genres (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE);
CREATE TABLE IF NOT EXISTS media_genres (media_id INTEGER, genre_id INTEGER);
''')
genres = [('Sci-Fi',), ('Fantasy',), ('Horror',), ('Drama',), ('Comedy',)]
cursor.executemany("INSERT OR IGNORE INTO genres (name) VALUES (?)", genres)
conn.commit()
conn.close()
@app.route('/')
def index():
conn = sqlite3.connect(DB_NAME)
conn.row_factory = sqlite3.Row
query = """
SELECT m.*, b.author, s.network, GROUP_CONCAT(g.name, ', ') as genre_list
FROM media m
LEFT JOIN books b ON m.id = b.book_id
LEFT JOIN shows s ON m.id = s.show_id
LEFT JOIN media_genres mg ON m.id = mg.media_id
LEFT JOIN genres g ON mg.genre_id = g.id
GROUP BY m.id
"""
items = conn.execute(query).fetchall()
all_genres = conn.execute("SELECT * FROM genres").fetchall()
conn.close()
return render_template('main.html', items=items, genres=all_genres)
@app.route('/add', methods=['POST'])
def add_media():
title, m_type, year = request.form['title'], request.form['type'], request.form['year']
extra, genre_id = request.form['extra_info'], request.form['genre_id']
file = request.files.get('cover_image')
filename = file.filename if file and file.filename != '' else 'default.jpg'
if file and file.filename != '':
file.save(os.path.join(UPLOAD_FOLDER, filename))
conn = sqlite3.connect(DB_NAME)
cursor = conn.cursor()
cursor.execute("INSERT INTO media (title, type, release_year, image_path) VALUES (?, ?, ?, ?)", (title, m_type, year, filename))
m_id = cursor.lastrowid
cursor.execute("INSERT INTO media_genres (media_id, genre_id) VALUES (?, ?)", (m_id, genre_id))
if m_type == 'Book':
cursor.execute("INSERT INTO books (book_id, author) VALUES (?, ?)", (m_id, extra))
else:
cursor.execute("INSERT INTO shows (show_id, network) VALUES (?, ?)", (m_id, extra))
conn.commit()
conn.close()
return redirect(url_for('index'))
if __name__ == '__main__':
init_db()
app.run(debug=True)