Files
clei-flow/app/database.py
2026-02-10 00:56:46 +00:00

66 lines
2.0 KiB
Python
Executable File

from peewee import *
from pathlib import Path
# Garante pasta de dados
data_dir = Path('/app/data')
data_dir.mkdir(parents=True, exist_ok=True)
db = SqliteDatabase(str(data_dir / 'cleiflow.db'))
class BaseModel(Model):
class Meta:
database = db
class AppConfig(BaseModel):
key = CharField(unique=True)
value = TextField()
@classmethod
def get_val(cls, key, default=''):
try:
return cls.get(cls.key == key).value
except:
return default
@classmethod
def set_val(cls, key, value):
cls.replace(key=key, value=value).execute()
class Category(BaseModel):
name = CharField(unique=True)
target_path = CharField()
match_keywords = CharField(null=True) # Mantido para legado, mas vamos priorizar os filtros abaixo
content_type = CharField(default='mixed') # movie, series, mixed
# NOVOS CAMPOS DE FILTRAGEM
genre_filters = CharField(null=True) # Ex: "16,28,35" (IDs do TMDb)
country_filters = CharField(null=True) # Ex: "JP,US,BR" (Siglas ISO)
class FFmpegProfile(BaseModel):
name = CharField()
video_codec = CharField(default='h264_vaapi')
preset = CharField(default='medium')
crf = IntegerField(default=23)
audio_langs = CharField(default='por,eng,jpn')
subtitle_langs = CharField(default='por')
is_active = BooleanField(default=False)
def init_db():
db.connect()
db.create_tables([AppConfig, Category, FFmpegProfile], safe=True)
# Migrações Seguras (Adiciona colunas se não existirem)
try: db.execute_sql('ALTER TABLE category ADD COLUMN content_type VARCHAR DEFAULT "mixed"')
except: pass
try: db.execute_sql('ALTER TABLE category ADD COLUMN genre_filters VARCHAR DEFAULT ""')
except: pass
try: db.execute_sql('ALTER TABLE category ADD COLUMN country_filters VARCHAR DEFAULT ""')
except: pass
# Perfil padrão
if FFmpegProfile.select().count() == 0:
FFmpegProfile.create(name="Padrão VAAPI (Intel)", video_codec="h264_vaapi", is_active=True)
db.close()