81 lines
2.6 KiB
Python
Executable File
81 lines
2.6 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)
|
|
content_type = CharField(default='mixed')
|
|
genre_filters = CharField(null=True)
|
|
country_filters = CharField(null=True)
|
|
|
|
class FFmpegProfile(BaseModel):
|
|
name = CharField()
|
|
# Configuração de Codec
|
|
video_codec = CharField(default='h264_vaapi')
|
|
preset = CharField(default='medium')
|
|
crf = IntegerField(default=23)
|
|
|
|
# Configuração de Hardware (NOVO)
|
|
hardware_type = CharField(default='vaapi') # vaapi, nvenc, qsv, cpu
|
|
hybrid_decode = BooleanField(default=False) # Fix para Intel antigo (CPU Decode -> GPU Encode)
|
|
|
|
# Áudio/Legenda
|
|
audio_langs = CharField(default='por,eng,jpn')
|
|
subtitle_langs = CharField(default='por')
|
|
is_active = BooleanField(default=False)
|
|
|
|
def init_db():
|
|
if db.is_closed():
|
|
db.connect()
|
|
|
|
db.create_tables([AppConfig, Category, FFmpegProfile], safe=True)
|
|
|
|
# --- MIGRAÇÕES DE BANCO (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
|
|
|
|
# Migração FFmpeg (Hardware Type)
|
|
try:
|
|
db.execute_sql('ALTER TABLE ffmpegprofile ADD COLUMN hardware_type VARCHAR DEFAULT "vaapi"')
|
|
db.execute_sql('ALTER TABLE ffmpegprofile ADD COLUMN hybrid_decode BOOLEAN DEFAULT 0')
|
|
except: pass
|
|
|
|
# Perfil padrão se estiver vazio
|
|
if FFmpegProfile.select().count() == 0:
|
|
FFmpegProfile.create(
|
|
name="Padrão VAAPI (Intel/AMD)",
|
|
video_codec="h264_vaapi",
|
|
hardware_type="vaapi",
|
|
hybrid_decode=False, # Padrão para hardware novo
|
|
is_active=True
|
|
) |