Compare commits

...

8 Commits

Author SHA1 Message Date
99ffff47e4 Update all dependencies
Some checks failed
renovate/artifacts Artifact file update failure
2025-07-26 03:58:23 +00:00
acb12c1e33 Merge pull request 'Update all dependencies' (#7) from renovate/all into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: https://git.front.kjuulh.io/kjuulh/twatch/pulls/7
2022-10-28 21:24:13 +00:00
d515ad9545 restrict
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2022-10-28 23:20:35 +02:00
14ceadddd4 with depends on
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
2022-10-28 23:16:51 +02:00
36c9d0f0e5 fix bugs
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
2022-10-28 23:16:00 +02:00
cd861c82fd Update all dependencies
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2022-10-28 08:59:07 +00:00
ae139e425a Merge pull request 'Configure Renovate' (#1) from renovate/configure into main
Some checks reported errors
continuous-integration/drone Build was killed
Reviewed-on: https://git.front.kjuulh.io/kjuulh/twatch/pulls/1
2022-10-25 21:02:06 +00:00
1d3dccbf6d Add renovate.json 2022-10-25 21:01:19 +00:00
8 changed files with 1151 additions and 362 deletions

View File

@@ -8,10 +8,15 @@ steps:
settings:
username: kasperhermansen
password:
from_secret:
docker_secret
from_secret: docker_secret
repo: kasperhermansen/twatch
tags: latest
when:
event:
include:
- push
- tag
- promote
- name: send telegram notification
image: appleboy/drone-telegram
@@ -19,4 +24,9 @@ steps:
token:
from_secret: telegram_token
to: 2129601481
format: markdown
format: markdown
depends_on:
- "docker"
when:
status:
- "failure"

1428
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
FROM rust:slim-bullseye AS builder
FROM harbor.front.kjuulh.io/docker-proxy/library/rust:slim-bullseye AS builder
COPY . /app/builder/
@@ -6,11 +6,11 @@ WORKDIR /app/builder/
RUN cargo build --release
FROM debian:bullseye-slim
FROM harbor.front.kjuulh.io/docker-proxy/library/debian:bullseye-slim
COPY --from=builder /app/builder/target/release/ /app/
WORKDIR /app/
ENV RUST_LOG info
CMD ["./twatch"]
CMD ["./twatch"]

3
renovate.json Normal file
View File

@@ -0,0 +1,3 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
}

View File

@@ -7,7 +7,7 @@ edition = "2021"
[dependencies]
twatch_core = {path="../twatch_core"}
tokio = {version="1.17.0", features=["full"]}
env_logger="0.9.0"
log = "0.4.16"
tokio = {version="1.21.2", features=["full"]}
env_logger="0.11.0"
log = "0.4.17"
dotenv = "0.15.0"

View File

@@ -1,19 +1,22 @@
use log::info;
use std::env;
use std::env::VarError;
use std::time::Duration;
use log::info;
use twatch_core::App;
use tokio::time::sleep;
use twatch_core::App;
#[tokio::main]
async fn main() -> Result<(), VarError> {
env_logger::init();
dotenv::dotenv();
dotenv::dotenv().expect("to load .env");
let url = env::var("T_URL")?;
let user = env::var("T_USER")?;
let password = env::var("T_PASSWORD")?;
let cycle_seconds = env::var("T_CYCLE").unwrap_or("30".to_string()).parse::<u64>().unwrap_or(30);
let cycle_seconds = env::var("T_CYCLE")
.unwrap_or("30".to_string())
.parse::<u64>()
.unwrap_or(30);
loop {
info!("running clean up cycle");

View File

@@ -6,6 +6,6 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
transmission-rpc = "0.3.6"
env_logger="0.9.0"
log = "0.4.16"
transmission-rpc = "0.5.0"
env_logger="0.11.0"
log = "0.4.17"

View File

@@ -1,6 +1,6 @@
use log::info;
use transmission_rpc::types::{BasicAuth, Id, Result, Torrent, Torrents};
use transmission_rpc::TransClient;
use transmission_rpc::types::{Result, BasicAuth, Torrent, Torrents, Id};
use log::{info};
pub struct App {
client: TransClient,
@@ -8,29 +8,36 @@ pub struct App {
impl App {
pub fn new(url: &String, username: &String, password: &String) -> Self {
let auth = BasicAuth { user: username.clone(), password: password.clone() };
let auth = BasicAuth {
user: username.clone(),
password: password.clone(),
};
let client = TransClient::with_auth(url.as_str(), auth);
Self {
client
}
Self { client }
}
pub async fn run(&self) -> Result<()> {
pub async fn run(mut self) -> Result<()> {
let response = self.client.torrent_get(None, None).await;
match response {
Ok(res) => self.scan_files(res.arguments).await.unwrap(),
Err(e) => println!("{}", e.to_string())
Err(e) => println!("{}", e.to_string()),
}
return Ok(());
}
async fn scan_files(&self, torrents: Torrents<Torrent>) -> Result<()> {
async fn scan_files(self, torrents: Torrents<Torrent>) -> Result<()> {
let mut torrents_to_remove = Vec::new();
for torrent in torrents.torrents {
match (torrent.id, torrent.is_stalled) {
(Some(id), Some(true)) => {
info!("processing: (id: {}, name: {})", id, torrent.name.unwrap_or("name could not be found from torrent".to_string()));
info!(
"processing: (id: {}, name: {})",
id,
torrent
.name
.unwrap_or("name could not be found from torrent".to_string())
);
torrents_to_remove.push(id);
}
_ => {
@@ -49,7 +56,11 @@ impl App {
return Ok(());
}
async fn clean_up_torrents(&self, torrent_ids: Vec<i64>) {
self.client.torrent_remove(torrent_ids.iter().map(|ti| { Id::Id(*ti) }).collect(), true).await;
async fn clean_up_torrents(mut self, torrent_ids: Vec<i64>) {
self.client
.torrent_remove(torrent_ids.iter().map(|ti| Id::Id(*ti)).collect(), true)
.await
.expect("to remove torrent");
}
}
}