From 22659046be028b41b653b71a700c3a3f18ba453f Mon Sep 17 00:00:00 2001 From: Oleg Sobolev Date: Mon, 25 Mar 2024 17:14:33 +0700 Subject: [PATCH] fix formatting --- src/download.rs | 6 ++++-- src/player.rs | 5 +++-- src/telegram.rs | 22 +++++++++++----------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/download.rs b/src/download.rs index 9671b1e..37125fb 100644 --- a/src/download.rs +++ b/src/download.rs @@ -1,6 +1,7 @@ -use crate::track::TrackInfo; use std::{path::Path, process::Command}; +use crate::track::TrackInfo; + #[derive(Debug, Clone, Copy)] pub struct DownloadError; @@ -14,12 +15,13 @@ pub fn download_from_youtube(url: &str) -> Result { "mp3", "--print", "%(id)s", + "--no-simulate", url, ]) .output() .unwrap(); - if !output.stderr.is_empty() { + if !output.stderr.is_empty() || output.stdout.is_empty() { return Err(DownloadError); } diff --git a/src/player.rs b/src/player.rs index 29754b5..2aa004b 100644 --- a/src/player.rs +++ b/src/player.rs @@ -1,7 +1,8 @@ +use std::{collections::VecDeque, fs::File, io::BufReader, thread, thread::JoinHandle}; +use rodio::{Decoder, OutputStream, OutputStreamHandle, Sink}; + use crate::channel::{self, Requester, Responder, TryRecvError}; use crate::track::TrackInfo; -use rodio::{Decoder, OutputStream, OutputStreamHandle, Sink}; -use std::{collections::VecDeque, fs::File, io::BufReader, thread, thread::JoinHandle}; #[derive(Debug, Clone)] enum WorkerRequest { diff --git a/src/telegram.rs b/src/telegram.rs index 928d128..f45f770 100644 --- a/src/telegram.rs +++ b/src/telegram.rs @@ -1,11 +1,7 @@ -use std::{ - path::Path, - sync::{Arc, Mutex}, -}; - +use std::sync::{Arc, Mutex}; use teloxide::{prelude::*, utils::command::BotCommands}; -use crate::{player::MusicPlayer, TrackInfo}; +use crate::{player::MusicPlayer, download}; #[derive(BotCommands, Clone)] #[command( @@ -47,11 +43,15 @@ impl TelegramBot { match cmd { Command::Play(url) => { println!("{}", url); - player - .lock() - .unwrap() - .enqueue(TrackInfo::new(Path::new("8bB0FNGlrEs.mp3"))); - bot.send_message(msg.chat.id, "Added to the queue.").await?; + match download::download_from_youtube(&url) { + Ok(track_info) => { + player.lock().unwrap().enqueue(track_info); + bot.send_message(msg.chat.id, "Added to the queue.").await?; + }, + Err(_) => { + bot.send_message(msg.chat.id, format!("Failed to download.")).await?; + } + } } Command::Stop => { player.lock().unwrap().stop();