ajnart / homarr

Customizable browser's home page to interact with your homeserver's Docker containers (e.g. Sonarr/Radarr)
https://homarr.dev
MIT License
6.02k stars 275 forks source link

:sparkles: Add Tdarr integration and widget #1882

Closed jbruell closed 5 months ago

jbruell commented 8 months ago

Category

Feature

Overview

Add new integration and widget for Tdarr.

Update 2024-02-13

Here's a short demo video of the latest version of the widget:

https://github.com/ajnart/homarr/assets/31685172/ca5b9a00-a40f-4a5b-a928-bd15b9ce90e9

Original comment The widget uses the Tdarr API (Reference: https://tdarr.readme.io/reference) to fetch and display the following information: - Number of queued files - Total size of queued files - Number of errors and corresponding filenames - List of queued files, including file size and current status The widget only integrates with one app at a time, but allows the user to choose. ### Issue Number Related issue: #1865 ### Screenshots Queued files: ![2024-02-05 01_36_46-Default Board • Homarr](https://github.com/ajnart/homarr/assets/31685172/a2a56405-8a2d-4087-9de7-29d8239b7096) Errors: ![2024-02-05 01_41_40-Default Board • Homarr](https://github.com/ajnart/homarr/assets/31685172/637b09eb-cee2-48b9-ace1-f117f84823e1) Loading skeleton: ![2024-02-05 02_08_35-Default Board • Homarr](https://github.com/ajnart/homarr/assets/31685172/43369948-8eca-4ac0-9d25-67c3fe49ec3a) Empty queue (with updated header design): ![2024-02-05 11_19_23-Default Board • Homarr](https://github.com/ajnart/homarr/assets/31685172/dc911364-243b-4d94-b1b5-478d9da64512) Integration in app settings: ![2024-02-05 11_20_01-Default Board • Homarr](https://github.com/ajnart/homarr/assets/31685172/0e35dd51-fffc-4845-9253-604d770a0923) Updated header with app icon & name: ![2024-02-05 11_24_01-Default Board • Homarr](https://github.com/ajnart/homarr/assets/31685172/cae59f12-40cc-43a6-95e6-35f8610b6e34) Support for multiple apps: ![2024-02-05 11_25_41-Default Board • Homarr](https://github.com/ajnart/homarr/assets/31685172/2cb272e5-2b3f-4751-bc2a-d153b6f17dff)
ajnart commented 8 months ago

Thanks a lot for the PR ! I didn't read the code yet but based off the screenshots, have you tried to use the mantine component for scrollarea ? It would remove the ugly automatic chrome scroll bars with better ones when the data overflows

jbruell commented 8 months ago

Thanks a lot for the PR ! I didn't read the code yet but based off the screenshots, have you tried to use the mantine component for scrollarea ? It would remove the ugly automatic chrome scroll bars with better ones when the data overflows

Ah, good suggestion. I will update the widget.

SeDemal commented 8 months ago

Well, I was working on that too x) I was taking a different approach, more minimalist with more stats and less of a list. Was still a work in progress though kinda close.

ajnart commented 8 months ago

Well, I was working on that too x)

I was taking a different approach, more minimalist with more stats and less of a list.

Was still a work in progress though kinda close.

I guess yours could be a tdarr-stats like we have overseer stats

jbruell commented 8 months ago

Well, I was working on that too x) I was taking a different approach, more minimalist with more stats and less of a list. Was still a work in progress though kinda close.

That's really neat. Initially, I was planning to integrate a statistics panel of some sort but couldn't figure out how to get the information from the API. Similarly, I am really curious how you got the progress indicator working, I didn't find that either.

SeDemal commented 8 months ago

Well, I was working on that too x) I was taking a different approach, more minimalist with more stats and less of a list. Was still a work in progress though kinda close.

That's really neat. Initially, I was planning to integrate a statistics panel of some sort but couldn't figure out how to get the information from the API. Similarly, I am really curious how you got the progress indicator working, I didn't find that either.

Since mine is a work in progress, how about I publish my branch, share it here, and you take as much of it as you want? I think a list containing all the files is a bit overbearing so showing stats is better. For exemple all the staged files shouldn't be listed, only how many are.

SeDemal commented 8 months ago

https://github.com/Tagaishi/homarr/tree/media-transcode-integration

What was missing in my opinion in mine:

jbruell commented 8 months ago

Since mine is a work in progress, how about I publish my branch, share it here, and you take as much of it as you want? I think a list containing all the files is a bit overbearing so showing stats is better. For exemple all the staged files shouldn't be listed, only how many are.

That would be amazing, thanks for the kind offer.

I guess it depends on the use case. I use Tdarr for transcoding audio streams to eliminate the need for on the fly transcoding on devices that don't support Dolby Atmos. So I'm mainly interested in when Tdarr has finished processing a certain file so I can start streaming it.

But I also get the appeal of a more minimalist stats widget. I like @ajnart's suggestion to have two separate widgets, or we could create a single one taht does both.

Perhaps a Discord poll could be useful for gauging what would be useful for most people?

SeDemal commented 8 months ago

Since mine is a work in progress, how about I publish my branch, share it here, and you take as much of it as you want? I think a list containing all the files is a bit overbearing so showing stats is better. For exemple all the staged files shouldn't be listed, only how many are.

That would be amazing, thanks for the kind offer.

I guess it depends on the use case. I use Tdarr for transcoding audio streams to eliminate the need for on the fly transcoding on devices that don't support Dolby Atmos. So I'm mainly interested in when Tdarr has finished processing a certain file so I can start streaming it.

But I also get the appeal of a more minimalist stats widget. I like @ajnart's suggestion to have two separate widgets, or we could create a single one taht does both.

Perhaps a Discord poll could be useful for gauging what would be useful for most people?

Well, it's all yours now, do as you think is best, I trust you ^^

jbruell commented 8 months ago

Thanks for the review @manuel-rw. I will try to integrate @Tagaishi's widget in the coming days which will require a good amount of refactoring of my changes anyway, I'll fix your remarks then.

SeDemal commented 7 months ago

Did you run formatting on every file in the project? Don't modify files that have nothing to do with the widget and it's integrations please.

jbruell commented 7 months ago

Yep, I reverted every change not related to the integration. How do you normally enforce formatting?

SeDemal commented 7 months ago

f1 -> format document. (Same for organize imports) Only doing so on files that we're currently working on.

ajnart commented 7 months ago

Wow @Tagaishi you made such a detailed feedback I'm impressed. Sometimes I don't think we should force people to use shorthand properties instead of using style, because both work. But it's good to know that they exist. Nice to see you got really good at remembering them because I always forget

SeDemal commented 7 months ago

Wow @Tagaishi you made such a detailed feedback I'm impressed. Sometimes I don't think we should force people to use shorthand properties instead of using style, because both work. But it's good to know that they exist. Nice to see you got really good at remembering them because I always forget

You have Meier and Mani to thank for that x) I always got the same comments on my own PR's because I didn't know the existence of the property. The way mantine decided to shorten them make them really unintuitive.

jbruell commented 7 months ago

f1 -> format document. (Same for organize imports) Only doing so on files that we're currently working on.

That might work for your particular editor and keymap. Could something like a pre-commit hook, lint-staged or a PR check that enforces proper formatting be helpful?

SeDemal commented 7 months ago

f1 -> format document. (Same for organize imports) Only doing so on files that we're currently working on.

That might work for your particular editor and keymap. Could something like a pre-commit hook, lint-staged or a PR check that enforces proper formatting be helpful?

No idea, never used those. We just manually run "Prettier"'s formatting on files we work on.

manuel-rw commented 6 months ago

@jbruell are you still working on this?

jbruell commented 6 months ago

@jbruell are you still working on this?

@manuel-rw Sorry, life got in the way a bit. I forgot to backup my Tdarr config before reinstalling my server from scratch and haven't found the motivation to set it up again afterwards. I might spend some time in the coming weeks.

I have to sift through Tagaishi's comments again after that and see what I can do with a reasonable time invest.

SeDemal commented 6 months ago

@jbruell are you still working on this?

@manuel-rw Sorry, life got in the way a bit. I forgot to backup my Tdarr config before reinstalling my server from scratch and haven't found the motivation to set it up again afterwards. I might spend some time in the coming weeks.

I have to sift through Tagaishi's comments again after that and see what I can do with a reasonable time invest.

I think you covered my comments pretty thoroughly as I saw you thumbed up most if not all of them. double checking never hurts but I think now what is most important is to resolve merge issues and details.

(So sorry, I clicked the wrong button...)

ajnart commented 5 months ago

Oh wow new commits ! I need to review them

Ping @Tagaishi ;)

jbruell commented 5 months ago

These are my current TODOs which I've extracted from all the comments:

Feel free to add any additional points that I might've missed.

ajnart commented 5 months ago

These are my current TODOs which I've extracted from all the comments:

  • Rename widget to: media-transcoding
  • Use MantineReactTable
  • Add pagination for workers
  • Rethink Health Indicator ring / Statistics in general

    • I'm not happy with it as it stands, but the Tdarr stats aren't that important to me anyway, since my reason for wanting a Tdarr widget was to see when a movie is ready for watching, so I'm having a hard time coming up with something useful. If you have any input or ideas what you'd like to see, I'd be more than happy to hear them.
  • Remove AppSelector (?)

    • If you'd prefer, I can remove it again, I can understand if it doesn't fit the long term plans for Homarr

Feel free to add any additional points that I might've missed.

Sounds good, I think @Tagaishi will be able to give you more insights

SeDemal commented 5 months ago

Well, what's stated is all good I think, if you want some input or help on any of it you're welcome to come discuss it all on our discord.