Remove file-based audio streaming
This commit is contained in:
parent
e632f55b4e
commit
5364e41560
@ -2,7 +2,6 @@ use poise::{
|
|||||||
serenity_prelude::{Attachment, CreateAttachment, GuildId, RoleId},
|
serenity_prelude::{Attachment, CreateAttachment, GuildId, RoleId},
|
||||||
CreateReply,
|
CreateReply,
|
||||||
};
|
};
|
||||||
use tokio::fs::File;
|
|
||||||
|
|
||||||
#[cfg(feature = "metrics")]
|
#[cfg(feature = "metrics")]
|
||||||
use crate::metrics::{DELETE_COUNTER, UPLOAD_COUNTER};
|
use crate::metrics::{DELETE_COUNTER, UPLOAD_COUNTER};
|
||||||
@ -227,15 +226,12 @@ pub async fn download_file(
|
|||||||
|
|
||||||
match sound.first() {
|
match sound.first() {
|
||||||
Some(sound) => {
|
Some(sound) => {
|
||||||
let source = sound.store_sound_source(&ctx.data().database).await?;
|
|
||||||
|
|
||||||
let file = File::open(&source).await?;
|
|
||||||
let name = format!("{}-{}.opus", sound.id, sound.name);
|
let name = format!("{}-{}.opus", sound.id, sound.name);
|
||||||
|
|
||||||
ctx.send(
|
ctx.send(CreateReply::default().attachment(CreateAttachment::bytes(
|
||||||
CreateReply::default()
|
sound.src(&ctx.data().database).await,
|
||||||
.attachment(CreateAttachment::file(&file, name.as_str()).await?),
|
name.as_str(),
|
||||||
)
|
)))
|
||||||
.await?;
|
.await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
use std::{env, path::Path};
|
|
||||||
|
|
||||||
use poise::serenity_prelude::async_trait;
|
use poise::serenity_prelude::async_trait;
|
||||||
use songbird::input::Input;
|
use songbird::input::Input;
|
||||||
use sqlx::Executor;
|
use sqlx::Executor;
|
||||||
use tokio::{fs::File, io::AsyncWriteExt, process::Command};
|
use tokio::process::Command;
|
||||||
|
|
||||||
use crate::{consts::UPLOAD_MAX_SIZE, error::ErrorTypes, Data, Database};
|
use crate::{consts::UPLOAD_MAX_SIZE, error::ErrorTypes, Data, Database};
|
||||||
|
|
||||||
@ -399,7 +397,7 @@ impl SoundCtx for Data {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Sound {
|
impl Sound {
|
||||||
async fn src(&self, db_pool: impl Executor<'_, Database = Database>) -> Vec<u8> {
|
pub(crate) async fn src(&self, db_pool: impl Executor<'_, Database = Database>) -> Vec<u8> {
|
||||||
struct Src {
|
struct Src {
|
||||||
src: Vec<u8>,
|
src: Vec<u8>,
|
||||||
}
|
}
|
||||||
@ -420,31 +418,11 @@ impl Sound {
|
|||||||
record.src
|
record.src
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn store_sound_source(
|
|
||||||
&self,
|
|
||||||
db_pool: impl Executor<'_, Database = Database>,
|
|
||||||
) -> Result<String, Box<dyn std::error::Error + Send + Sync>> {
|
|
||||||
let caching_location = env::var("CACHING_LOCATION").unwrap_or(String::from("/tmp"));
|
|
||||||
|
|
||||||
let path_name = format!("{}/sound-{}.opus", caching_location, self.id);
|
|
||||||
let path = Path::new(&path_name);
|
|
||||||
|
|
||||||
if !path.exists() {
|
|
||||||
let mut file = File::create(&path).await?;
|
|
||||||
|
|
||||||
file.write_all(&self.src(db_pool).await).await?;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(path_name)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn playable(
|
pub async fn playable(
|
||||||
&self,
|
&self,
|
||||||
db_pool: impl Executor<'_, Database = Database>,
|
db_pool: impl Executor<'_, Database = Database>,
|
||||||
) -> Result<Input, Box<dyn std::error::Error + Send + Sync>> {
|
) -> Result<Input, Box<dyn std::error::Error + Send + Sync>> {
|
||||||
let path_name = self.store_sound_source(db_pool).await?;
|
Ok(Input::from(self.src(db_pool).await))
|
||||||
|
|
||||||
Ok(Input::from(path_name))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn count_user_sounds<U: Into<u64>>(
|
pub async fn count_user_sounds<U: Into<u64>>(
|
||||||
|
Loading…
Reference in New Issue
Block a user