Compare commits

...

11 Commits

Author SHA1 Message Date
trivernis 9bfb35dbce
Fix yt-dlp
ci/woodpecker/push/build Pipeline failed Details
ci/woodpecker/tag/container Pipeline was successful Details
5 months ago
trivernis 048d6a5cba
Merge branch 'main' of ssh://git.trivernis.net:22321/Trivernis/2b-rs 5 months ago
trivernis b2b09a3f4f
Update animethemes-rs
ci/woodpecker/push/build Pipeline failed Details
ci/woodpecker/tag/container Pipeline was successful Details
5 months ago
trivernis e3250e1bc6
Add forgejo id to container build task
ci/woodpecker/tag/container Pipeline was successful Details
5 months ago
trivernis 2d869f3ea8
Update dependency to fix build
ci/woodpecker/tag/container Pipeline failed Details
5 months ago
trivernis e6726e41c8
Update README
ci/woodpecker/push/build Pipeline failed Details
ci/woodpecker/tag/container Pipeline failed Details
5 months ago
trivernis bc57733dbf
Fix build workflow
ci/woodpecker/push/build Pipeline failed Details
5 months ago
trivernis 37b22a7d51
Install clippy in build workflow
ci/woodpecker/push/build Pipeline failed Details
5 months ago
trivernis 6c9889e3e1
Increment version
ci/woodpecker/push/build Pipeline failed Details
5 months ago
trivernis 8836f311c9
Add two woodpecker workflows 5 months ago
trivernis 06c8ac2446
Fix docker build 2 years ago

@ -0,0 +1,39 @@
version: 1
when:
- event: [pull_request]
- event: push
branch:
- ${CI_REPO_DEFAULT_BRANCH}
- release/*
- fix/*
steps:
test:
image: rust:alpine
commands:
- apk add --no-cache --force-overwrite \
build-base \
openssl-dev \
libopusenc-dev \
libpq-dev \
curl \
bash
- rustup default stable
- rustup component add clippy --toolchain stable-x86_64-unknown-linux-musl
- cargo clippy
- cargo test --verbose --package bot-coreutils
- cargo test --verbose --package bot-database
- cargo test --verbose
build:
image: rust:alpine
commands:
- apk add --no-cache --force-overwrite \
build-base \
openssl-dev \
libopusenc-dev \
libpq-dev \
curl \
bash
- cargo build
when:
- event: [pull_request]

@ -0,0 +1,20 @@
version: 1
when:
- event: [tag]
branch:
- ${CI_REPO_DEFAULT_BRANCH}
steps:
build:
image: woodpeckerci/plugin-docker-buildx
secrets: [forgejo_token]
settings:
dockerfile: Containerfile
tag: ${CI_COMMIT_TAG##v}
repo: git.trivernis.net/trivernis/2b-rs
registry: git.trivernis.net
platforms: linux/amd64
username:
from_secret: forgejo_id
password:
from_secret: forgejo_token

2269
Cargo.lock generated

File diff suppressed because it is too large Load Diff

@ -3,7 +3,7 @@ members=["bot-coreutils", "bot-database", "bot-database/migration", "."]
[package]
name = "tobi-rs"
version = "0.11.0"
version = "0.11.4"
authors = ["trivernis <trivernis@protonmail.com>"]
edition = "2018"
@ -21,7 +21,6 @@ serde_derive = "1.0.145"
serde = "1.0.145"
thiserror = "1.0.37"
minecraft-data-rs = "0.5.0"
songbird = "0.3.0"
serde_json = "1.0.86"
rand = "0.8.5"
regex = "1.6.0"
@ -32,18 +31,22 @@ chrono = "0.4.22"
sysinfo = "0.26.4"
reqwest = "0.11.12"
chrono-tz = "0.6.3"
sauce-api = "0.9.3"
sauce-api = "1.0.0"
rustc_version_runtime = "0.2.1"
trigram = "0.4.4"
typemap_rev = "0.2.0"
youtube-metadata = "0.2.0"
xkcd-search = "0.1.2"
animethemes-rs = "0.4.4"
animethemes-rs = "0.4.5"
build-time = "0.1.2"
tracing-subscriber = { version = "0.3.16", features = ["env-filter"] }
tracing = "0.1.37"
serenity-additions = "0.3.4"
[dependencies.songbird]
version = "0.3.0"
features = ["yt-dlp"]
[dependencies.tokio]
version = "1.21.2"
features = ["macros", "rt-multi-thread"]

@ -22,7 +22,7 @@ COPY Cargo.toml Cargo.lock ./
COPY src ./src
COPY bot-coreutils ./bot-coreutils
COPY bot-database ./bot-database
RUN cargo build --release --verbose
RUN cargo build --release
RUN mkdir /tmp/tobi
RUN cp target/release/tobi-rs /tmp/tobi/
@ -35,10 +35,11 @@ RUN apk add --no-cache --force-overwrite \
python3 \
py3-pip \
qalc \
ffmpeg \
bash
RUN pip3 install youtube-dl
RUN pip3 install yt-dlp --break-system-packages
RUN rm -rf /var/lib/{cache,log}/ /var/cache
FROM runtime-base
COPY --from=builder /tmp/tobi/tobi-rs .
ENTRYPOINT ["/tobi-rs"]
ENTRYPOINT ["/tobi-rs"]

@ -63,4 +63,4 @@ The required values are:
## License
It's GPL 3.0
See LICENSE.md

@ -30,7 +30,7 @@ pub async fn get_client() -> BotResult<Client> {
.event_handler(Handler)
.framework(get_framework().await)
.register_songbird()
.type_map_insert::<Store>(StoreData::new())
.type_map_insert::<Store>(StoreData::create().await)
.type_map_insert::<DatabaseContainer>(database)
.type_map_insert::<MusicPlayers>(HashMap::new())
.await?;

@ -1,4 +1,5 @@
use futures::future::BoxFuture;
use futures::FutureExt;
use serenity::client::Context;
use serenity::framework::standard::macros::command;
use serenity::framework::standard::{Args, CommandResult};

@ -1,4 +1,4 @@
use sauce_api::Sauce;
use sauce_api::source::Source;
use serenity::client::Context;
use serenity::framework::standard::macros::command;
use serenity::framework::standard::CommandResult;
@ -59,15 +59,20 @@ async fn sauce(ctx: &Context, msg: &Message) -> CommandResult {
);
let data = ctx.data.read().await;
let store_data = data.get::<Store>().unwrap();
let sources = store_data
.sauce_nao
.check_sauces(&attachment_urls[..])
.await?;
tracing::trace!("Sources are {:?}", sources);
let mut outputs = Vec::new();
tracing::debug!("Creating menu...");
for attachment in attachment_urls {
let output = store_data
.sauce_nao
.check(&attachment)
.await
.map_err(|_| "failed to retrieve source")?;
tracing::trace!("Output is {:?}", output);
outputs.push(output)
}
show_sauce_menu(ctx, msg, sources).await?;
tracing::debug!("Creating menu...");
show_sauce_menu(ctx, msg, outputs).await?;
tracing::debug!("Menu created");
Ok(())

@ -1,6 +1,5 @@
use std::cmp::Ordering;
use sauce_api::{SauceItem, SauceResult};
use serenity::builder::CreateMessage;
use serenity::{model::channel::Message, prelude::*};
@ -24,7 +23,7 @@ static SAUCE_MESSAGES: &[&str] = &[
pub async fn show_sauce_menu(
ctx: &Context,
msg: &Message,
sources: Vec<SauceResult>,
sources: Vec<sauce_api::source::Output>,
) -> BotResult<()> {
let pages: Vec<Page> = sources.into_iter().map(create_sauce_page).collect();
@ -47,7 +46,7 @@ pub async fn show_sauce_menu(
}
/// Creates a single sauce page
fn create_sauce_page<'a>(mut result: SauceResult) -> Page<'a> {
fn create_sauce_page<'a>(mut result: sauce_api::source::Output) -> Page<'a> {
let mut message = CreateMessage::default();
let mut description_lines = Vec::new();
let original = result.original_url;
@ -65,7 +64,7 @@ fn create_sauce_page<'a>(mut result: SauceResult) -> Page<'a> {
});
// display with descending similarity
result.items.reverse();
let items: Vec<(usize, SauceItem)> = result
let items: Vec<(usize, sauce_api::source::Item)> = result
.items
.into_iter()
.filter(|i| i.similarity >= MIN_SIMILARITY)

@ -70,7 +70,7 @@ async fn youtube_dl(args: &[&str]) -> BotResult<String> {
}
THREAD_LOCK.fetch_add(1, Ordering::Relaxed);
let output = run_command_async("youtube-dl", args).await.map_err(|e| {
let output = run_command_async("yt-dlp", args).await.map_err(|e| {
THREAD_LOCK.fetch_sub(1, Ordering::Relaxed);
e
})?;

@ -3,7 +3,8 @@ use std::env;
use std::sync::Arc;
use bot_database::Database;
use sauce_api::prelude::SauceNao;
use sauce_api::source::saucenao::SauceNao;
use sauce_api::source::Source;
use serenity::client::Context;
use serenity::prelude::TypeMapKey;
use tokio::sync::Mutex;
@ -16,15 +17,17 @@ pub struct Store;
pub struct StoreData {
pub minecraft_data_api: minecraft_data_rs::api::Api,
pub spotify_api: SpotifyApi,
pub sauce_nao: SauceNao<'static>,
pub sauce_nao: SauceNao,
}
impl StoreData {
pub fn new() -> StoreData {
let mut sauce_nao = SauceNao::new();
sauce_nao.set_api_key(
pub async fn create() -> StoreData {
let sauce_nao = SauceNao::create(
env::var("SAUCENAO_API_KEY").expect("No SAUCENAO_API_KEY key in environment."),
);
)
.await
.unwrap();
Self {
minecraft_data_api: minecraft_data_rs::api::Api::latest().unwrap(),
spotify_api: SpotifyApi::new(),

Loading…
Cancel
Save