main: implement mixxx sqlite reading

This commit is contained in:
2026-05-31 18:21:05 +02:00
parent cb02971480
commit 7c15eec10d
4 changed files with 103 additions and 54 deletions
+14 -3
View File
@@ -1,8 +1,10 @@
use async_openai::types::chat::*;
use chrono::Duration;
use crossterm::event::MediaKeyCode::Play;
use schemars::schema_for;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use sqlite::OpenFlags;
use crate::GeneratedResponses;
@@ -22,7 +24,16 @@ pub struct StageDirection {
pub episode_number: u32,
pub time_remaining: Duration,
pub narrative: String,
pub artifacts: Vec<String>
pub artifacts: Vec<String>,
pub current_playlist: Vec<PlaylistEntry>
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct PlaylistEntry {
pub artist: String,
pub album: String,
pub title: String,
pub bpm: f64
}
@@ -40,7 +51,7 @@ impl Scene {
impl Into<CreateChatCompletionRequest> for Scene {
fn into(self) -> CreateChatCompletionRequest {
let mut messages = vec![
let mut messages = vec![
ChatCompletionRequestMessage::System(ChatCompletionRequestSystemMessage { content: SYSTEM_PROMPT.into(), ..Default::default()}),
ChatCompletionRequestMessage::System(ChatCompletionRequestSystemMessage { content: serde_json::to_string(&self.direction).unwrap().into(), ..Default::default()}),
];
@@ -55,7 +66,7 @@ impl Into<CreateChatCompletionRequest> for Scene {
}));
let response_schema: Value = schema_for!(GeneratedResponses).into();
CreateChatCompletionRequest {
model: "gpt-5.4-mini".into(),
model: "gpt-5.4".into(),
messages: messages,
max_completion_tokens: Some(350),
response_format: Some(ResponseFormat::JsonSchema { json_schema: ResponseFormatJsonSchema { description: None, name: "responses".into(), schema: response_schema, strict: None } }),