rename TrackInfo to Track

This commit is contained in:
Oleg Sobolev 2024-04-01 09:08:21 +07:00
parent b278a6aa52
commit 0448b3eced
4 changed files with 16 additions and 16 deletions

View file

@ -1,11 +1,11 @@
use std::{path::Path, process::Command}; use std::{path::Path, process::Command};
use crate::track::TrackInfo; use crate::track::Track;
#[derive(Debug, Clone, Copy)] #[derive(Debug, Clone, Copy)]
pub struct DownloadError; pub struct DownloadError;
pub fn download_from_youtube(url: &str) -> Result<TrackInfo, DownloadError> { pub fn download_from_youtube(url: &str) -> Result<Track, DownloadError> {
let output = Command::new("yt-dlp") let output = Command::new("yt-dlp")
.args([ .args([
"-o", "-o",
@ -32,5 +32,5 @@ pub fn download_from_youtube(url: &str) -> Result<TrackInfo, DownloadError> {
.replace('\n', "") .replace('\n', "")
+ ".mp3"; + ".mp3";
Ok(TrackInfo::new(Path::new(filename.as_str()))) Ok(Track::new(Path::new(filename.as_str())))
} }

View file

@ -5,4 +5,4 @@ pub mod player;
pub mod telegram; pub mod telegram;
mod track; mod track;
pub use track::TrackInfo; pub use track::Track;

View file

@ -2,11 +2,11 @@ use rodio::{Decoder, OutputStream, OutputStreamHandle, Sink};
use std::{collections::VecDeque, fs::File, io::BufReader, thread, thread::JoinHandle}; use std::{collections::VecDeque, fs::File, io::BufReader, thread, thread::JoinHandle};
use crate::channel::{self, Requester, Responder, TryRecvError}; use crate::channel::{self, Requester, Responder, TryRecvError};
use crate::track::TrackInfo; use crate::track::Track;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
enum WorkerRequest { enum WorkerRequest {
AddTrack(TrackInfo), AddTrack(Track),
Pause, Pause,
Play, Play,
Stop, Stop,
@ -16,7 +16,7 @@ enum WorkerRequest {
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
enum WorkerResponse { enum WorkerResponse {
TrackList(VecDeque<TrackInfo>), TrackList(VecDeque<Track>),
None, None,
} }
@ -32,11 +32,11 @@ struct Worker {
_stream: OutputStream, _stream: OutputStream,
_handle: OutputStreamHandle, _handle: OutputStreamHandle,
sink: Sink, sink: Sink,
queue: VecDeque<TrackInfo>, queue: VecDeque<Track>,
responder: Responder<WorkerRequest, WorkerResponse>, responder: Responder<WorkerRequest, WorkerResponse>,
} }
fn get_source(track: TrackInfo) -> Decoder<BufReader<File>> { fn get_source(track: Track) -> Decoder<BufReader<File>> {
let file = BufReader::new(File::open(track.path).unwrap()); let file = BufReader::new(File::open(track.path).unwrap());
Decoder::new(file).unwrap() Decoder::new(file).unwrap()
} }
@ -88,7 +88,7 @@ impl Worker {
pub fn build(responder: Responder<WorkerRequest, WorkerResponse>) -> Worker { pub fn build(responder: Responder<WorkerRequest, WorkerResponse>) -> Worker {
let (_stream, _handle) = OutputStream::try_default().unwrap(); let (_stream, _handle) = OutputStream::try_default().unwrap();
let sink = Sink::try_new(&_handle).unwrap(); let sink = Sink::try_new(&_handle).unwrap();
let queue: VecDeque<TrackInfo> = VecDeque::new(); let queue: VecDeque<Track> = VecDeque::new();
Worker { Worker {
_stream, _stream,
_handle, _handle,
@ -106,7 +106,7 @@ impl MusicPlayer {
MusicPlayer { requester, _worker } MusicPlayer { requester, _worker }
} }
pub fn enqueue(&mut self, track: TrackInfo) { pub fn enqueue(&mut self, track: Track) {
self.requester.send(AddTrack(track)).unwrap(); self.requester.send(AddTrack(track)).unwrap();
} }
@ -126,7 +126,7 @@ impl MusicPlayer {
self.requester.send(Stop).unwrap(); self.requester.send(Stop).unwrap();
} }
pub fn list_tracks(&self) -> VecDeque<TrackInfo> { pub fn list_tracks(&self) -> VecDeque<Track> {
let response = self.requester.send(ListTracks).unwrap(); let response = self.requester.send(ListTracks).unwrap();
match response.recv().unwrap() { match response.recv().unwrap() {
TrackList(tracks) => tracks, TrackList(tracks) => tracks,

View file

@ -1,12 +1,12 @@
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct TrackInfo { pub struct Track {
pub path: PathBuf, pub path: PathBuf,
} }
impl TrackInfo { impl Track {
pub fn new(path: &Path) -> TrackInfo { pub fn new(path: &Path) -> Track {
TrackInfo { Track {
path: PathBuf::from(path), path: PathBuf::from(path),
} }
} }