Skip to content

Commit

Permalink
BREAKING CHANGE: Merge pull request #15 from Vernoxvernax/0.7.0
Browse files Browse the repository at this point in the history
[0.7.0] Merge version 0.7.0 into main
  • Loading branch information
Vernoxvernax authored Jun 2, 2024
2 parents 664e51d + 62eceda commit a5fd7a5
Show file tree
Hide file tree
Showing 23 changed files with 5,994 additions and 2,838 deletions.
1 change: 1 addition & 0 deletions .github/workflows/dev-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ on:
push:
branches:
- dev
- "0.7.0"
paths:
- ".github/workflows/**.yml"
- "src/**.rs"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
with:
draft: false
prerelease: false
name: ${{ github.ref }}
name: ${{ github.ref_name }}
tag_name: ${{ github.ref }}
body_path: RECENT_CHANGES.md
files: puddler, puddler.exe
65 changes: 65 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,68 @@
## **BREAKING CHANGE:**

... yeah well, cause everything has been rewritten.

Just documenting all changes of this new version would take me days and even then I'd forget about certain things.
Well here is a short summary of the most notable ones:

* ~~Cleaner Code~~
* Support for Plex Streaming
* Emby/Jellyfin: Support for simple Pause and Stop commands (comming from emby app/web)
* Actually usable interface
* Pretty much every input is handled through `crossterm` with some neat eyecandy such as colors, highlights and bold text
* And for some reason, almost all of the lines printed by puddler will be deleted afterwards.
* While using puddler myself, I often got a little annoying at how verbose everything was.
* Even though I knew exactly what item to play, just pressing enter, I ended up with a couple dozent of unnecessary lines during my viewing experience.
* Not anymore.
* Note that all menus are created and managed through `crossterm` and they are pretty untested as of right now.
* The config files are now also much more cleaner. (I hope)

Additional Information:
* Authentication for plex has only been tested with an admin account. I don't have plex pass and am not planning to get one.

___

### **Noteable changes the first commit of 0.7.0**

* fix(printing): cleaner item titles; correctly splitting chars
* "(Played)" was still in Mpv's titlebar.
* ContinueMenu: Dont split chars based on the byte index
* fix(jellyfin): avoid duplicates in menu
* Whenever an episode has been played long enough to show up in Continue Watching, it also shows up in NextUp which lead to duplicates in the menu.
* refactor(playlist): exit playlist mode when there is nothing left to do
* fix(text): fix incorrect description of option (hardware acceleration)
* fix(cli/config): don't override the debug_log option
* fix(playback): fix the "finish" item option
* fix(input): only update the interface when necessary
* fix(jellyfin/emby): fix external subtitles url
* feat(playback): support for user preferred audio/sub tracks
* This is currently very experimental.
* Every platform returns different kinds of language codes so I had to add another dependency. (very small though)
* It's behaviour is currently pretty basic. When the preferred audio lang-code is something like `eng`, it will search the tracks of the file for a track that has the same language attribute. If the audio/sub preference is unset, the selection will fall back to the player, so the default track will be selected.
* This is implemented for non-transcode streams, because you'd be forced to choose a track when transcoding.
* fix(input): ask again for the server address if the request failed (login)
* fix(input): only take keypresses; this should also fix user input on windows
* fix(config/settings): correctly generate paths to the config files/folders
* fix(transcoding): use the correct mediasource/file when selecting sub/audio tracks
* fix(transcoding): ask for start-time even if there is no progress
* fix(playback_reporting): correctly convert time and actually use the modified item
* feat(jellyfin): add option to select from multiple mediasources
* fix(interface): ask for subtitle tracks in a seperate window
* fix(transcoding): added missing negation for numeric check (the mbps question is now working as expected)
* fix(mpv): avoid getting strings like "(Played)" into the item title
* fix(jellyfin): fix playback finished menu

### **Please create an issue if you find anything that seems weird, bug or not.**

## **0.6.1**
* Removed getch crate and rewrote it's functionality using the awesome crossterm crate with additional timeout features.
* Fixed issue where episodes would be skipped if they would already be marked as played.
* Fixed issue where episodes would be skipped when using the `f` option in the quick-menu.
* Increase some request timeouts to 10 seconds.
* Avoid discord problems.
* Some code refactoring.
* Bump dependencies.

## **0.6.0**
* **BREAKING CHANGE:**
* Puddler now has it's dedicated configuration folder on Windows. Additionally, it's folder-name is finally lowercase.
Expand Down
38 changes: 19 additions & 19 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
[package]
name = "puddler"
version = "0.6.1"
version = "0.7.0"
edition = "2021"

[dependencies]
isahc = { version = "1.7.2", features=["json"] }
uuid = { version = "1.8.0", features = ["v4"] }
config = { version = "0.14.0", features = ["yaml"] }
tokio = { version = "1.36.0", features = ["full"] }
chrono = { version = "0.4.35", features = ["alloc", "clock"] }
libmpv-sirno = "2.0.2-fork.1"
crossterm = "0.27.0"
serde = "1.0.197"
serde_json = "1.0.115"
serde_derive = "1.0.197"
http = "1.1.0"
colored = "2.1.0"
urlencoding = "2.1.3"
discord-presence = "1.1.1"
toml = "0.8.12"
regex = "1.10.4"
rpassword = "7.3.1"
dialoguer = "0.11.0"
chrono = { version = "0.4.38", features = ["serde"] }
clap = "4.5.4"
colored = "2.1.0"
config = "0.14.0"
crossterm = "0.27.0"
dirs = "5.0.1"
discord-presence = "1.2.0"
futures = "0.3.30"
isahc = { version = "1.7.2", features = ["json"] }
isolanguage-1 = { version = "0.2.3", git = "https://github.com/Vernoxvernax/isolanguage-1.git" }
libmpv-sirno = "2.0.2-fork.1"
regex = "1.10.4"
serde = "1.0.203"
serde_derive = "1.0.203"
serde_json = "1.0.117"
tokio = { version = "1.38.0", features = ["full"] }
tokio-tungstenite = { version = "0.23.0", features = ["native-tls"] }
toml = "0.8.13"
urlencoding = "2.1.3"
uuid = { version = "1.8.0", features = ["v4"] }
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Puddler-RS

Emby & Jellyfin command line client, powered by MPV. Written in Rust.
Jellyfin & Emby & Plex command line client, powered by MPV. Written in Rust.

[![Rust](https://github.com/Vernoxvernax/Puddler-RS/actions/workflows/release-builds.yml/badge.svg)](https://github.com/Vernoxvernax/Puddler-RS/actions/workflows/release-builds.yml)
![GitHub issues](https://img.shields.io/github/issues/Vernoxvernax/Puddler-RS)
Expand All @@ -13,7 +13,7 @@ ___

## Requirements

* fully configured Emby or Jellyfin server (+account)
* fully configured Jellyfin or Emby or Plex server (+account)
* at least some knowledge of IP addresses and networking

___
Expand Down
62 changes: 55 additions & 7 deletions RECENT_CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,55 @@
* Removed getch crate and rewrote it's functionality using the awesome crossterm crate with additional timeout features.
* Fixed issue where episodes would be skipped if they would already be marked as played.
* Fixed issue where episodes would be skipped when using the `f` option in the quick-menu.
* Increase some request timeouts to 10 seconds.
* Avoid discord problems.
* Some code refactoring.
* Bump dependencies.
## **BREAKING CHANGE:**

... yeah well, cause everything has been rewritten.

Just documenting all changes of this new version would take me days and even then I'd forget about certain things.
Well here is a short summary of the most notable ones:

* ~~Cleaner Code~~
* Support for Plex Streaming
* Emby/Jellyfin: Support for simple Pause and Stop commands (comming from emby app/web)
* Actually usable interface
* Pretty much every input is handled through `crossterm` with some neat eyecandy such as colors, highlights and bold text
* And for some reason, almost all of the lines printed by puddler will be deleted afterwards.
* While using puddler myself, I often got a little annoying at how verbose everything was.
* Even though I knew exactly what item to play, just pressing enter, I ended up with a couple dozent of unnecessary lines during my viewing experience.
* Not anymore.
* Note that all menus are created and managed through `crossterm` and they are pretty untested as of right now.
* The config files are now also much more cleaner. (I hope)

Additional Information:
* Authentication for plex has only been tested with an admin account. I don't have plex pass and am not planning to get one.

___

### **Noteable changes the first commit of 0.7.0**

* fix(printing): cleaner item titles; correctly splitting chars
* "(Played)" was still in Mpv's titlebar.
* ContinueMenu: Dont split chars based on the byte index
* fix(jellyfin): avoid duplicates in menu
* Whenever an episode has been played long enough to show up in Continue Watching, it also shows up in NextUp which lead to duplicates in the menu.
* refactor(playlist): exit playlist mode when there is nothing left to do
* fix(text): fix incorrect description of option (hardware acceleration)
* fix(cli/config): don't override the debug_log option
* fix(playback): fix the "finish" item option
* fix(input): only update the interface when necessary
* fix(jellyfin/emby): fix external subtitles url
* feat(playback): support for user preferred audio/sub tracks
* This is currently very experimental.
* Every platform returns different kinds of language codes so I had to add another dependency. (very small though)
* It's behaviour is currently pretty basic. When the preferred audio lang-code is something like `eng`, it will search the tracks of the file for a track that has the same language attribute. If the audio/sub preference is unset, the selection will fall back to the player, so the default track will be selected.
* This is implemented for non-transcode streams, because you'd be forced to choose a track when transcoding.
* fix(input): ask again for the server address if the request failed (login)
* fix(input): only take keypresses; this should also fix user input on windows
* fix(config/settings): correctly generate paths to the config files/folders
* fix(transcoding): use the correct mediasource/file when selecting sub/audio tracks
* fix(transcoding): ask for start-time even if there is no progress
* fix(playback_reporting): correctly convert time and actually use the modified item
* feat(jellyfin): add option to select from multiple mediasources
* fix(interface): ask for subtitle tracks in a seperate window
* fix(transcoding): added missing negation for numeric check (the mbps question is now working as expected)
* fix(mpv): avoid getting strings like "(Played)" into the item title
* fix(jellyfin): fix playback finished menu

### **Please create an issue if you find anything that seems weird, bug or not.**
Loading

0 comments on commit a5fd7a5

Please sign in to comment.