Use local storage for csv

This commit is contained in:
2024-10-20 14:51:15 +02:00
parent 8fe64da6e5
commit b3d8ef6f36
6 changed files with 67 additions and 91 deletions

Binary file not shown.

25
config.py Normal file
View File

@@ -0,0 +1,25 @@
import os
class Config:
# Configuration générale
SECRET_KEY = os.environ.get('SECRET_KEY', 'dev_key')
DEBUG = False
TESTING = False
REDIS_URL = os.environ.get("REDIS_URL", "redis://localhost:6379")
class DevelopmentConfig(Config):
DEBUG = True
# Configuration pour le développement local
REDIS_URL = "redis://localhost:6379"
class ProductionConfig(Config):
# Configuration pour la production (Render, etc.)
REDIS_URL = os.environ.get("REDIS_URL")
# Peut désactiver le debug mode pour la prod
DEBUG = False
config = {
'development': DevelopmentConfig,
'production': ProductionConfig,
'default': DevelopmentConfig
}

View File

@@ -1,66 +0,0 @@
Watched Date,Name,Year,Letterboxd URI,Rating,Rewatch,Tags,Watched Date
2023-12-15,Ghost in the Shell,1995,https://boxd.it/5k8vT3,3.5,,,2023-12-13
2024-01-03,Baby Driver,2017,https://boxd.it/5tDbaP,4.0,,,2024-01-02
2024-01-04,The Shawshank Redemption,1994,https://boxd.it/5ugTgP,4.5,,,2024-01-03
2024-01-05,Léon: The Professional,1994,https://boxd.it/5uRr6B,4.0,,,2024-01-04
2024-01-06,Brothers,2009,https://boxd.it/5vuRQN,3.5,,,2024-01-05
2024-01-07,"Crazy, Stupid, Love.",2011,https://boxd.it/5wgeFn,4.0,,,2024-01-06
2024-01-08,There Will Be Blood,2007,https://boxd.it/5x4B37,4.5,,,2024-01-07
2024-01-09,(500) Days of Summer,2009,https://boxd.it/5xDHe1,4.0,,,2024-01-08
2024-01-20,Dallas Buyers Club,2013,https://boxd.it/5DrLPb,4.0,,,2024-01-19
2024-01-22,Boogie Nights,1997,https://boxd.it/5EEjCN,4.0,,,2024-01-21
2024-01-24,Saltburn,2023,https://boxd.it/5FxIYT,4.0,,,2024-01-23
2024-01-25,Under the Skin,2013,https://boxd.it/5G0SG9,2.5,,,2024-01-24
2024-01-26,Anatomy of a Fall,2023,https://boxd.it/5GuroR,4.0,,,2024-01-25
2024-01-31,Poor Things,2023,https://boxd.it/5J4AI7,4.5,,,2024-01-30
2024-02-01,In the Mood for Love,2000,https://boxd.it/5JweK7,4.5,,,2024-01-31
2024-02-07,Black Swan,2010,https://boxd.it/5MhygD,4.0,,,2024-02-06
2024-02-13,Rain Man,1988,https://boxd.it/5OXE5j,4.0,,,2024-02-12
2024-02-20,The 40 Year Old Virgin,2005,https://boxd.it/5Sgvxj,3.5,,,2024-02-19
2024-02-21,Captain Fantastic,2016,https://boxd.it/5SHgol,4.0,,,2024-02-20
2024-02-23,The Prestige,2006,https://boxd.it/5TwaTp,4.5,,,2024-02-22
2024-02-29,The Shining,1980,https://boxd.it/5WgsV9,4.0,,,2024-02-28
2024-03-02,Dune: Part Two,2024,https://boxd.it/5X4Ep5,5.0,,,2024-03-01
2024-03-12,Fantastic Mr. Fox,2009,https://boxd.it/622Xk5,4.5,,,2024-03-11
2024-03-13,Past Lives,2023,https://boxd.it/62uP1F,4.5,,,2024-03-12
2024-03-19,Little Women,2019,https://boxd.it/65jkNX,3.0,,,2024-03-18
2024-03-21,The Perks of Being a Wallflower,2012,https://boxd.it/668ca1,4.0,,,2024-03-20
2024-03-28,Amélie,2001,https://boxd.it/69lEoN,4.5,,,2024-03-27
2024-03-29,Lost in Translation,2003,https://boxd.it/69Kn1n,4.0,,,2024-03-28
2024-04-03,No Country for Old Men,2007,https://boxd.it/6clZZd,4.0,,,2024-04-02
2024-04-05,Fargo,1996,https://boxd.it/6dadIv,3.5,,,2024-04-04
2024-04-09,No Hard Feelings,2023,https://boxd.it/6f0cwL,2.5,,,2024-04-08
2024-04-17,"OSS 117: Cairo, Nest of Spies",2006,https://boxd.it/6i7AOl,4.0,,,2024-04-16
2024-04-20,The Neon Demon,2016,https://boxd.it/6j9IF5,3.0,,,2024-04-19
2024-04-23,Taxi Driver,1976,https://boxd.it/6ktjeR,3.5,,,2024-04-22
2024-04-30,The Theory of Everything,2014,https://boxd.it/6nlzHL,4.5,,,2024-04-29
2024-05-09,Civil War,2024,https://boxd.it/6rbidl,4.5,,,2024-05-08
2024-05-10,Scott Pilgrim vs. the World,2010,https://boxd.it/6rxEAl,4.0,,,2024-05-09
2024-05-15,Asteroid City,2023,https://boxd.it/6txkqD,3.5,,,2024-05-14
2024-05-22,Battle of the Sexes,2017,https://boxd.it/6wiCsp,3.5,,,2024-05-22
2024-05-26,War Dogs,2016,https://boxd.it/6xS8YB,3.5,,,2024-05-25
2024-05-28,The Creator,2023,https://boxd.it/6yPVwT,4.5,,,2024-05-27
2024-05-30,Full Metal Jacket,1987,https://boxd.it/6zEwVV,4.0,,,2024-05-29
2024-06-04,Dead Poets Society,1989,https://boxd.it/6BNjNv,3.5,,,2024-06-03
2024-06-05,Perfect Days,2023,https://boxd.it/6C9zSb,4.0,,,2024-06-04
2024-06-07,Burn After Reading,2008,https://boxd.it/6CQVG3,3.0,,,2024-06-06
2024-06-12,Before Sunrise,1995,https://boxd.it/6EWJMD,4.0,,,2024-06-11
2024-06-20,OSS 117: Lost in Rio,2009,https://boxd.it/6I1d3j,3.5,,,2024-06-19
2024-06-23,Inside Out 2,2024,https://boxd.it/6J9mU7,4.0,,,2024-06-22
2024-06-26,May December,2023,https://boxd.it/6KqGP5,2.5,,,2024-06-25
2024-06-29,Ferrari,2023,https://boxd.it/6Lv8pV,3.0,,,2024-06-28
2024-06-30,Sicario,2015,https://boxd.it/6LUq2b,4.0,,,2024-06-29
2024-07-21,Gladiator,2000,https://boxd.it/6Vcoij,4.5,,,2024-07-20
2024-07-22,Perfect Blue,1997,https://boxd.it/6VIhi1,4.0,,,2024-07-21
2024-07-23,Paprika,2006,https://boxd.it/6WcVWb,4.5,,,2024-07-22
2024-07-24,Dream Scenario,2023,https://boxd.it/6WCG0t,4.0,,,2024-07-23
2024-07-29,Yes Man,2008,https://boxd.it/6ZbFWJ,3.0,,,2024-07-29
2024-07-30,Deadpool & Wolverine,2024,https://boxd.it/6Zo8Sb,3.5,,,2024-07-29
2024-07-31,Source Code,2011,https://boxd.it/6ZPH0H,3.5,,,2024-07-30
2024-08-04,Almost Famous,2000,https://boxd.it/71w9tb,4.0,,,2024-08-03
2024-08-05,The Master,2012,https://boxd.it/72e6pN,3.0,,,2024-08-05
2024-08-10,Millennium Actress,2001,https://boxd.it/747e7V,4.0,,,2024-08-10
2024-08-14,The King of Comedy,1982,https://boxd.it/75VeGl,4.5,,,2024-08-13
2024-08-15,American Fiction,2023,https://boxd.it/76lZ2J,4.0,,,2024-08-14
2024-08-18,The Diary of a Teenage Girl,2015,https://boxd.it/77HSDB,3.5,,,2024-08-17
2024-08-20,Punch-Drunk Love,2002,https://boxd.it/78Mk2P,4.0,,,2024-08-19
1 Watched Date Name Year Letterboxd URI Rating Rewatch Tags Watched Date
2 2023-12-15 Ghost in the Shell 1995 https://boxd.it/5k8vT3 3.5 2023-12-13
3 2024-01-03 Baby Driver 2017 https://boxd.it/5tDbaP 4.0 2024-01-02
4 2024-01-04 The Shawshank Redemption 1994 https://boxd.it/5ugTgP 4.5 2024-01-03
5 2024-01-05 Léon: The Professional 1994 https://boxd.it/5uRr6B 4.0 2024-01-04
6 2024-01-06 Brothers 2009 https://boxd.it/5vuRQN 3.5 2024-01-05
7 2024-01-07 Crazy, Stupid, Love. 2011 https://boxd.it/5wgeFn 4.0 2024-01-06
8 2024-01-08 There Will Be Blood 2007 https://boxd.it/5x4B37 4.5 2024-01-07
9 2024-01-09 (500) Days of Summer 2009 https://boxd.it/5xDHe1 4.0 2024-01-08
10 2024-01-20 Dallas Buyers Club 2013 https://boxd.it/5DrLPb 4.0 2024-01-19
11 2024-01-22 Boogie Nights 1997 https://boxd.it/5EEjCN 4.0 2024-01-21
12 2024-01-24 Saltburn 2023 https://boxd.it/5FxIYT 4.0 2024-01-23
13 2024-01-25 Under the Skin 2013 https://boxd.it/5G0SG9 2.5 2024-01-24
14 2024-01-26 Anatomy of a Fall 2023 https://boxd.it/5GuroR 4.0 2024-01-25
15 2024-01-31 Poor Things 2023 https://boxd.it/5J4AI7 4.5 2024-01-30
16 2024-02-01 In the Mood for Love 2000 https://boxd.it/5JweK7 4.5 2024-01-31
17 2024-02-07 Black Swan 2010 https://boxd.it/5MhygD 4.0 2024-02-06
18 2024-02-13 Rain Man 1988 https://boxd.it/5OXE5j 4.0 2024-02-12
19 2024-02-20 The 40 Year Old Virgin 2005 https://boxd.it/5Sgvxj 3.5 2024-02-19
20 2024-02-21 Captain Fantastic 2016 https://boxd.it/5SHgol 4.0 2024-02-20
21 2024-02-23 The Prestige 2006 https://boxd.it/5TwaTp 4.5 2024-02-22
22 2024-02-29 The Shining 1980 https://boxd.it/5WgsV9 4.0 2024-02-28
23 2024-03-02 Dune: Part Two 2024 https://boxd.it/5X4Ep5 5.0 2024-03-01
24 2024-03-12 Fantastic Mr. Fox 2009 https://boxd.it/622Xk5 4.5 2024-03-11
25 2024-03-13 Past Lives 2023 https://boxd.it/62uP1F 4.5 2024-03-12
26 2024-03-19 Little Women 2019 https://boxd.it/65jkNX 3.0 2024-03-18
27 2024-03-21 The Perks of Being a Wallflower 2012 https://boxd.it/668ca1 4.0 2024-03-20
28 2024-03-28 Amélie 2001 https://boxd.it/69lEoN 4.5 2024-03-27
29 2024-03-29 Lost in Translation 2003 https://boxd.it/69Kn1n 4.0 2024-03-28
30 2024-04-03 No Country for Old Men 2007 https://boxd.it/6clZZd 4.0 2024-04-02
31 2024-04-05 Fargo 1996 https://boxd.it/6dadIv 3.5 2024-04-04
32 2024-04-09 No Hard Feelings 2023 https://boxd.it/6f0cwL 2.5 2024-04-08
33 2024-04-17 OSS 117: Cairo, Nest of Spies 2006 https://boxd.it/6i7AOl 4.0 2024-04-16
34 2024-04-20 The Neon Demon 2016 https://boxd.it/6j9IF5 3.0 2024-04-19
35 2024-04-23 Taxi Driver 1976 https://boxd.it/6ktjeR 3.5 2024-04-22
36 2024-04-30 The Theory of Everything 2014 https://boxd.it/6nlzHL 4.5 2024-04-29
37 2024-05-09 Civil War 2024 https://boxd.it/6rbidl 4.5 2024-05-08
38 2024-05-10 Scott Pilgrim vs. the World 2010 https://boxd.it/6rxEAl 4.0 2024-05-09
39 2024-05-15 Asteroid City 2023 https://boxd.it/6txkqD 3.5 2024-05-14
40 2024-05-22 Battle of the Sexes 2017 https://boxd.it/6wiCsp 3.5 2024-05-22
41 2024-05-26 War Dogs 2016 https://boxd.it/6xS8YB 3.5 2024-05-25
42 2024-05-28 The Creator 2023 https://boxd.it/6yPVwT 4.5 2024-05-27
43 2024-05-30 Full Metal Jacket 1987 https://boxd.it/6zEwVV 4.0 2024-05-29
44 2024-06-04 Dead Poets Society 1989 https://boxd.it/6BNjNv 3.5 2024-06-03
45 2024-06-05 Perfect Days 2023 https://boxd.it/6C9zSb 4.0 2024-06-04
46 2024-06-07 Burn After Reading 2008 https://boxd.it/6CQVG3 3.0 2024-06-06
47 2024-06-12 Before Sunrise 1995 https://boxd.it/6EWJMD 4.0 2024-06-11
48 2024-06-20 OSS 117: Lost in Rio 2009 https://boxd.it/6I1d3j 3.5 2024-06-19
49 2024-06-23 Inside Out 2 2024 https://boxd.it/6J9mU7 4.0 2024-06-22
50 2024-06-26 May December 2023 https://boxd.it/6KqGP5 2.5 2024-06-25
51 2024-06-29 Ferrari 2023 https://boxd.it/6Lv8pV 3.0 2024-06-28
52 2024-06-30 Sicario 2015 https://boxd.it/6LUq2b 4.0 2024-06-29
53 2024-07-21 Gladiator 2000 https://boxd.it/6Vcoij 4.5 2024-07-20
54 2024-07-22 Perfect Blue 1997 https://boxd.it/6VIhi1 4.0 2024-07-21
55 2024-07-23 Paprika 2006 https://boxd.it/6WcVWb 4.5 2024-07-22
56 2024-07-24 Dream Scenario 2023 https://boxd.it/6WCG0t 4.0 2024-07-23
57 2024-07-29 Yes Man 2008 https://boxd.it/6ZbFWJ 3.0 2024-07-29
58 2024-07-30 Deadpool & Wolverine 2024 https://boxd.it/6Zo8Sb 3.5 2024-07-29
59 2024-07-31 Source Code 2011 https://boxd.it/6ZPH0H 3.5 2024-07-30
60 2024-08-04 Almost Famous 2000 https://boxd.it/71w9tb 4.0 2024-08-03
61 2024-08-05 The Master 2012 https://boxd.it/72e6pN 3.0 2024-08-05
62 2024-08-10 Millennium Actress 2001 https://boxd.it/747e7V 4.0 2024-08-10
63 2024-08-14 The King of Comedy 1982 https://boxd.it/75VeGl 4.5 2024-08-13
64 2024-08-15 American Fiction 2023 https://boxd.it/76lZ2J 4.0 2024-08-14
65 2024-08-18 The Diary of a Teenage Girl 2015 https://boxd.it/77HSDB 3.5 2024-08-17
66 2024-08-20 Punch-Drunk Love 2002 https://boxd.it/78Mk2P 4.0 2024-08-19

View File

@@ -3,12 +3,15 @@ from flask import Flask
from flask_cors import CORS from flask_cors import CORS
from src.api.routes import api_bp from src.api.routes import api_bp
from flask_sse import sse from flask_sse import sse
from config import config
def create_app(): def create_app():
app = Flask(__name__) app = Flask(__name__)
CORS(app) CORS(app)
app.config["REDIS_URL"] = "redis://localhost:6379" env = os.environ.get('FLASK_ENV', 'default')
app.config.from_object(config[env])
app.register_blueprint(sse, url_prefix='/stream') app.register_blueprint(sse, url_prefix='/stream')
app.register_blueprint(api_bp, url_prefix='/api') app.register_blueprint(api_bp, url_prefix='/api')

View File

@@ -1,6 +1,7 @@
import io
import math import math
import os import os
from flask import Blueprint, jsonify, request from flask import Blueprint, jsonify, request, session
from werkzeug.utils import secure_filename from werkzeug.utils import secure_filename
from src.services.tmdb_service import TMDBService from src.services.tmdb_service import TMDBService
from src.services.image_service import ImageService from src.services.image_service import ImageService
@@ -12,10 +13,9 @@ api_bp = Blueprint('api', __name__)
tmdb_service = TMDBService() tmdb_service = TMDBService()
image_service = ImageService() image_service = ImageService()
UPLOAD_FOLDER = './data'
ALLOWED_EXTENSIONS = {'csv'} ALLOWED_EXTENSIONS = {'csv'}
csv_file = os.path.join(UPLOAD_FOLDER, 'diary.csv') user_csvs = {}
@lru_cache(maxsize=1000) @lru_cache(maxsize=1000)
def get_poster_url(movie_name, movie_year): def get_poster_url(movie_name, movie_year):
@@ -28,17 +28,26 @@ def get_poster_url(movie_name, movie_year):
@api_bp.route('/movies', methods=['GET']) @api_bp.route('/movies', methods=['GET'])
def get_movies(): def get_movies():
try: user_id = session.get('user_id') # Récupérer l'ID de l'utilisateur de la session
if not os.path.exists(csv_file):
if user_id not in user_csvs:
return jsonify({'movies': [], 'message': 'No movies found. Please upload a CSV file.'}), 200 return jsonify({'movies': [], 'message': 'No movies found. Please upload a CSV file.'}), 200
# Lire le DataFrame à partir du cache
csv_content = user_csvs[user_id]
try:
# Si csv_content est une chaîne, il n'est pas nécessaire de décoder
if isinstance(csv_content, bytes):
df = pd.read_csv(io.StringIO(csv_content.decode('utf-8')))
else:
df = pd.read_csv(io.StringIO(csv_content))
# Reste de votre code pour la pagination et le traitement...
page = int(request.args.get('page', 1)) page = int(request.args.get('page', 1))
limit = int(request.args.get('limit', 10)) limit = int(request.args.get('limit', 10))
df = pd.read_csv(csv_file)
df = df.iloc[::-1].reset_index(drop=True) df = df.iloc[::-1].reset_index(drop=True)
total_movies = len(df) total_movies = len(df)
total_pages = math.ceil(total_movies / limit) total_pages = math.ceil(total_movies / limit)
@@ -88,25 +97,26 @@ def allowed_file(filename):
@api_bp.route('/upload-csv', methods=['POST']) @api_bp.route('/upload-csv', methods=['POST'])
def upload_csv(): def upload_csv():
user_id = session.get('user_id')
if 'file' not in request.files: if 'file' not in request.files:
return jsonify({'error': 'No file part'}), 400 return jsonify({'error': 'No file part'}), 400
file = request.files['file'] file = request.files['file']
if file.filename == '': if file.filename == '':
return jsonify({'error': 'No selected file'}), 400 return jsonify({'error': 'No selected file'}), 400
if file and allowed_file(file.filename): if file and allowed_file(file.filename):
filename = secure_filename(file.filename) content = file.read()
file_path = os.path.join(UPLOAD_FOLDER, filename) user_csvs[user_id] = content
file.save(file_path)
try: try:
df = pd.read_csv(file_path) df = pd.read_csv(io.StringIO(content.decode('utf-8')))
df = df.rename(columns={ df = df.rename(columns={
'Date': 'Watched Date', 'Date': 'Watched Date',
'Name': 'Name', 'Name': 'Name',
'Year': 'Year' 'Year': 'Year'
}) })
df.to_csv(csv_file, index=False) user_csvs[user_id] = df.to_csv(index=False)
return jsonify({'success': True, 'message': 'File uploaded and processed successfully'}), 200 return jsonify({'success': True, 'message': 'File uploaded and processed successfully'}), 200
except Exception as e: except Exception as e:
@@ -115,8 +125,10 @@ def upload_csv():
@api_bp.route('/check-csv', methods=['GET']) @api_bp.route('/check-csv', methods=['GET'])
def check_csv(): def check_csv():
user_id = session.get('user_id')
try: try:
if os.path.exists(csv_file): if user_id in user_csvs:
return jsonify({'fileExists': True}), 200 return jsonify({'fileExists': True}), 200
else: else:
return jsonify({'fileExists': False}), 200 return jsonify({'fileExists': False}), 200
@@ -126,9 +138,11 @@ def check_csv():
@api_bp.route('/delete-csv', methods=['DELETE']) @api_bp.route('/delete-csv', methods=['DELETE'])
def delete_csv(): def delete_csv():
user_id = session.get('user_id')
try: try:
if os.path.exists(csv_file): if user_id in user_csvs:
os.remove(csv_file) del user_csvs[user_id]
return jsonify({'success': True, 'message': 'CSV file deleted successfully'}), 200 return jsonify({'success': True, 'message': 'CSV file deleted successfully'}), 200
else: else:
return jsonify({'error': 'CSV file not found'}), 404 return jsonify({'error': 'CSV file not found'}), 404