[[package]]
name = "rusty-slicer"
-version = "0.0.1"
+version = "1.0.0"
dependencies = [
"lazy_static",
"native-dialog",
[package]
name = "rusty-slicer"
-version = "0.0.1"
+version = "1.0.0"
description = "An app to slice your playlist into multiple files"
authors = ["Ayabusa"]
edition = "2021"
};*/
// create the progress window
- let _about_window = tauri::WindowBuilder::new(
+ let _progress_window = tauri::WindowBuilder::new(
&app,
"progress", /* the unique window label */
tauri::WindowUrl::App("progress.html".into())
).build().expect("failed to create progress window");
- _about_window.set_title("Slicing progress").unwrap();
- _about_window.set_size(Size::Physical(PhysicalSize { width: 400, height: 100 })).unwrap();
+ _progress_window.set_title("Slicing progress").unwrap();
+ _progress_window.set_size(Size::Physical(PhysicalSize { width: 400, height: 100 })).unwrap();
for i in 0..time_codes.len(){
let args: Vec<String>;
output_file.set_extension(&fileformat);
if i+1<time_codes.len() {
- args = vec!["-i".to_owned(),
+ args = vec![
+ "-y".to_owned(), // overwrite existing files
+ "-i".to_owned(),
FILE_PATH.lock().unwrap().to_owned(),
"-ss".to_owned(),
time_codes[i].to_owned(),
//format!("{:?}", output_file),
output_file.display().to_string()];
}else { // case for the last song
- args = vec!["-i".to_owned(),
+ args = vec![
+ "-y".to_owned(), // overwrite existing files
+ "-i".to_owned(),
FILE_PATH.lock().unwrap().to_owned(),
"-ss".to_owned(),
time_codes[i].to_owned(),
// update progress bar on frontend
app.emit_all("progress_state_changed", Payload { message: format!("{}", (i+1)*100/time_codes.len()) }).unwrap();
}
+ _progress_window.close().unwrap(); // close the progress window, before creating the done one
+
+ let _done_window = tauri::WindowBuilder::new(
+ &app,
+ "done", /* the unique window label */
+ tauri::WindowUrl::App("done.html".into())
+ ).build().expect("failed to create done window");
+ _done_window.set_title("Rusty Slicer").unwrap();
+ _done_window.set_size(Size::Physical(PhysicalSize { width: 400, height: 100 })).unwrap();
}
#[tauri::command]
},
"package": {
"productName": "rusty-slicer",
- "version": "0.0.1"
+ "version": "1.0.0"
},
"tauri": {
"allowlist": {
"fullscreen": false,
"resizable": true,
"title": "Rusty slicer",
- "width": 450,
- "height": 950
+ "width": 830,
+ "height": 700
}
],
"security": {
<body>
<div class="about_main">
- <h1> Rusty Slicer V0.0.1 </h1>
+ <h1> Rusty Slicer V1.0.0 </h1>
<h2 class="credit"> Credit </h2>
<p class="credit">
<b>
--- /dev/null
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <link rel="stylesheet" href="styles.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Rusty Slicer</title>
+</head>
+
+<body>
+ <p class="credit" id="progress_label"> Finished slicing :D </p>
+</body>
\ No newline at end of file
<div class="main-container">
<div>
<h3>Welcome to the Rusty slicer! <img src="assets/cat-vibe-vibe-cat.gif"></h1>
- <div class="select-file">
- <div>
- <h4><b> Input file </b></h4>
- <p id="fileLocation"> no location choosen </p>
- </div>
- <button id="fileButton">choose file 📂</button>
- </div>
- <div>
- <h4><b> Chapter list (timecode - song name) </b></h4>
- <textarea id="chapterList" rows="30" cols="10000" placeholder="0:00 - my first song
+ <div class="action-container">
+ <div>
+ <h4><b> Chapter list (timecode - song name) </b></h4>
+ <textarea id="chapterList" rows="30" cols="10000" placeholder="0:00 - my first song
3:30 - another one
13:37 - one more time - Daft punk"></textarea>
- <p id="errorLabel" style="color: red;"></p>
- </div>
+ <p id="errorLabel" style="color: red;"></p>
+ </div>
- <div class="select-file">
<div>
- <p><b> Output folder </b> </p>
- <p id="folderLocation"> no location choosen </p>
- </div>
- <button id="folderButton">choose folder 📂</button>
- </div>
+ <div class="select-file">
+ <div>
+ <h4><b> Input file </b></h4>
+ <p id="fileLocation"> no location choosen </p>
+ </div>
+ <button id="fileButton">choose file 📂</button>
+ </div>
- <div class="select-file">
- <p><b> output type </b></p>
- <select id="fileFormatSelect">
- <option value="mp3">mp3 (recommended)</option>
- <option value="ogg">ogg</option>
- <option value="flac">flac (really long)</option>
- <option value="m4a">m4a</option>
- </select>
- </div>
+ <div class="select-file">
+ <div>
+ <p><b> Output folder </b> </p>
+ <p id="folderLocation"> no location choosen </p>
+ </div>
+ <button id="folderButton">choose folder 📂</button>
+ </div>
- <button class="slice-button" id="sliceButton"> Slice 🔪</button>
+ <div class="select-file">
+ <p><b> output type </b></p>
+ <select id="fileFormatSelect">
+ <option value="mp3">mp3 (recommended)</option>
+ <option value="ogg">ogg</option>
+ <option value="flac">flac (really long)</option>
+ <option value="m4a">m4a</option>
+ </select>
+ </div>
+ <br> <br>
+ <button class="slice-button" id="sliceButton"> Slice 🔪</button>
+ </div>
+ </div>
</div>
<footer>
<br>
<div class="select-file">
- <div>
+ <div class="credit_main">
made by <a target="_blank" href="https://www.ayabusa.dev">
ayabusa
</a> ;D
}
textarea {
- width: 100%;
+ width: 95%;
+ flex: 1;
}
img{
height: 97vh;
}
+.action-container{
+ display: grid;
+ grid-auto-flow: column;
+ grid-auto-columns: 1fr;
+
+}
+
::-moz-selection { /* Code for Firefox */
color: #ffffff;
background: #d88939;
color: #d88939;
}
+.credit_main {
+ margin-left: auto;
+ margin-right: auto;
+}
.credit {
text-align: center;
}
border-color: #292829;
color: #292829;
background-color: #d88939;
+ float: right;
}
.slice-button:hover{