mirror of
https://github.com/ayabusa/Rusty-slicer.git
synced 2024-11-22 03:03:24 +00:00
fixed multiple bugs, and made a few tweaks
This commit is contained in:
parent
33d552f3ce
commit
551f8bc097
@ -3,7 +3,10 @@
|
|||||||
|
|
||||||
use native_dialog::FileDialog;
|
use native_dialog::FileDialog;
|
||||||
use tauri::{Manager, PhysicalSize, Size};
|
use tauri::{Manager, PhysicalSize, Size};
|
||||||
use std::{env, io::{Error, ErrorKind}, path::PathBuf, sync::Mutex};
|
use std::{env, fmt::Display, io::{Error, ErrorKind}, path::PathBuf, sync::Mutex};
|
||||||
|
|
||||||
|
#[cfg(target_os = "windows")]
|
||||||
|
use std::os::windows::process::CommandExt;
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate lazy_static;
|
extern crate lazy_static;
|
||||||
@ -53,9 +56,9 @@ async fn slice_button(app: tauri::AppHandle, chapter: String, fileformat: String
|
|||||||
// Try to format the chapters and panic if it was not able to
|
// Try to format the chapters and panic if it was not able to
|
||||||
let formated_chapters = match format_chapter(&chapter) {
|
let formated_chapters = match format_chapter(&chapter) {
|
||||||
Ok(res) => res,
|
Ok(res) => res,
|
||||||
Err(_error) => {
|
Err(error) => {
|
||||||
println!("error formating chapters, slicing aborted");
|
println!("error formating chapters, slicing aborted");
|
||||||
app.emit_all("backend_error", Payload { message: "formating_issue".to_owned() }).unwrap();
|
app.emit_all("formatting_error", Payload { message: error.to_string() }).unwrap();
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@ -149,6 +152,7 @@ fn format_chapter(chapter: &str) -> Result<(Vec<String>, Vec<String>), Error>{
|
|||||||
|
|
||||||
for l in lines.iter(){
|
for l in lines.iter(){
|
||||||
if l.is_empty() { break; }
|
if l.is_empty() { break; }
|
||||||
|
if l.len() > 200 { return Err(Error::new(ErrorKind::Other, "Line is too big")); }
|
||||||
let splited_line = l.split(" - ").collect::<Vec<&str>>();
|
let splited_line = l.split(" - ").collect::<Vec<&str>>();
|
||||||
if splited_line.len()<2 || splited_line[1] == "" { // To avoid blank title
|
if splited_line.len()<2 || splited_line[1] == "" { // To avoid blank title
|
||||||
return Err(Error::new(ErrorKind::Other, "No title associated with the time code"));
|
return Err(Error::new(ErrorKind::Other, "No title associated with the time code"));
|
||||||
@ -208,6 +212,13 @@ fn launch_ffmpeg(app: tauri::AppHandle, args: Vec<String>) {
|
|||||||
|
|
||||||
println!("using ffmpeg binary : {}\nwith the following argument : {:?}", resource_path.display(), args);
|
println!("using ffmpeg binary : {}\nwith the following argument : {:?}", resource_path.display(), args);
|
||||||
// launch the command
|
// launch the command
|
||||||
|
#[cfg(target_os = "windows")]
|
||||||
|
let output = std::process::Command::new(resource_path.as_os_str())
|
||||||
|
.args(args)
|
||||||
|
.creation_flags(0x08000000) // avoid the terminal from showing up
|
||||||
|
.output()
|
||||||
|
.expect("failed to execute process");
|
||||||
|
#[cfg(not (target_os = "windows"))]
|
||||||
let output = std::process::Command::new(resource_path.as_os_str())
|
let output = std::process::Command::new(resource_path.as_os_str())
|
||||||
.args(args)
|
.args(args)
|
||||||
.output()
|
.output()
|
||||||
|
@ -24,8 +24,8 @@
|
|||||||
"fullscreen": false,
|
"fullscreen": false,
|
||||||
"resizable": true,
|
"resizable": true,
|
||||||
"title": "Rusty slicer",
|
"title": "Rusty slicer",
|
||||||
"width": 400,
|
"width": 450,
|
||||||
"height": 880
|
"height": 950
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"security": {
|
"security": {
|
||||||
|
@ -27,9 +27,11 @@ const unlistenerror = await listen('backend_error', (event) => {
|
|||||||
document.getElementById("folderLocation").innerHTML = "please select an output folder"
|
document.getElementById("folderLocation").innerHTML = "please select an output folder"
|
||||||
console.log("please select an output folder");
|
console.log("please select an output folder");
|
||||||
break;
|
break;
|
||||||
case "formating_issue":
|
|
||||||
document.getElementById("errorLabel").innerHTML = "error: wrong chapter format. use 0:13 - my title"
|
|
||||||
console.log("error: wrong chapter format. use \n0:00 - first song title \n2:13 - second song title \n3:45 - third song title \n...");
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// listen for f0rmating issue from rust backend
|
||||||
|
const unlistenformattinginssie = await listen('formatting_error', (event) => {
|
||||||
|
document.getElementById("errorLabel").innerHTML = "error: wrong chapter format. "+ event.payload.message;
|
||||||
|
console.log("error: wrong chapter format. \n"+event.payload.message+"\nuse \n0:00 - first song title \n2:13 - second song title \n3:45 - third song title \n...");z
|
||||||
|
})
|
||||||
|
@ -18,17 +18,17 @@
|
|||||||
<h3>Welcome to the Rusty slicer! <img src="assets/cat-vibe-vibe-cat.gif"></h1>
|
<h3>Welcome to the Rusty slicer! <img src="assets/cat-vibe-vibe-cat.gif"></h1>
|
||||||
<div class="select-file">
|
<div class="select-file">
|
||||||
<div>
|
<div>
|
||||||
<p><b> Input file </b></p>
|
<h4><b> Input file </b></h4>
|
||||||
<p id="fileLocation"> no location choosen </p>
|
<p id="fileLocation"> no location choosen </p>
|
||||||
</div>
|
</div>
|
||||||
<button id="fileButton">choose file 📂</button>
|
<button id="fileButton">choose file 📂</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<textarea id="chapterList" rows="30">
|
<h4><b> Chapter list (timecode - song name) </b></h4>
|
||||||
0:00 - my first song
|
<textarea id="chapterList" rows="30" cols="10000" placeholder="0:00 - my first song
|
||||||
3:30 - another one
|
3:30 - another one
|
||||||
13:37 - one more time - Daft punk</textarea>
|
13:37 - one more time - Daft punk"></textarea>
|
||||||
<p id="errorLabel" style="color: red;"></p>
|
<p id="errorLabel" style="color: red;"></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user