thijstakken / MusicService

A tool that synchronizes your YouTube playlists and other music providers with your Cloud Storage like Nextcloud as MP3s.
https://thijstakken.github.io/MusicService/
GNU Affero General Public License v3.0
14 stars 3 forks source link

Join me in Shaping the Future of the Music Service Project! #47

Open thijstakken opened 8 months ago

thijstakken commented 8 months ago

Hello @TimotheFCN @0n1cOn3 @meiersmarkus @SkyBlack1225 @XRomix @gosoxharp @KaivandenBroek @whoisdsmith @sterno900 @SweetPeaIN @SalmanAlwann @lukasvdberk

Thank you for starring/liking my Music Service project!

Please join me in Shaping the Future of the Music Service Project!

Your expertise and unique perspective can help bring this project to the next level!

As we embark on this journey, I want to invite you to contribute your thoughts and ideas to help shape the project's future.

This project is about making the best tool to synchronize your music from any streaming provider to your own cloud storage/computer. So you can add your music to your favorite playlists (e.g. on YouTube) and the Music Service will automatically keep your playlists synced as MP3 files to your cloud storage/computer. Automate your music download flow!

I would like to hear from you about:

  1. Project Ideas: Do you have any innovative concepts or features that you believe could enhance the Music Service?
  2. Desired Features: What functionalities do you believe would make the Music Service more valuable to you? Whether it's user experience improvements, new integrations, or other enhancements.
  3. Use Cases: How do you envision using the Music Service in your own work or projects? Your insights can help me tailor the project to better meet your needs.
  4. Feedback and Suggestions: Even if you don't have specific ideas or features in mind, your feedback on the current state of the project is invaluable. What works well, and where do you see room for improvement?

We are only with 13 people so far, so your ideas and feedback will be read by me and could have a big impact on how I will develop the Music Service tool. I’m developing more and more because I want to improve my Python and Git skills :)

We can communicate through this issue/thread, and work together to get to a version 2, a reboot of the project. I will try to post regularly to show the progress so we can discuss it. We can post our thoughts, comment on existing ideas, and engage in discussions with fellow contributors.

Together, we can transform the Music Service into a amazing tool that serves our needs.

Thank you for reading until the end, your participation means a lot to me!

Warm regards, Thijs Takken

0n1cOn3 commented 8 months ago

Hey

Thanks for bringing this thread up. I'll can help, for sure. Im just not such a great coder at all πŸ˜…. But Ideas is already a beginning I would say 😁.

And I have already two ideas which could be implemented for V2:

Thanks for your invite. Happy to be here and shaping the future 😊

Sincerly

0n1cOn3 / h@x

thijstakken commented 8 months ago

Hi @0n1cOn3 I appreciate you sharing the first ideas, those are some great points!

No coding = no problem :)

It should be all about ideas indeed!

Good to know you are also using WebDav which is the only supported protocol so far. How do you like setting it up the music service with Webdav? Would SFTP be better for your use case?

Never heard of Tubesync before but this looks very neat, it's very similar but for videos instead of music. I like their UI design a lot, this is good for inspiration, thank you!

gr Thijs

0n1cOn3 commented 8 months ago

Hey @thijstakken, that's good to hear. :)

I haven't gotten around to setting up the service yet, but my music consumption continues to make the project extremely exciting for me and I'm looking forward to when I finally find the time.

SFTP(SSH) would simplify access to local clouds (NAS) as well. At least from my experience. As example to specify:[IP] [Port] [Folder/Location/]

Tubesync is really neat. Not so fast because of the rate limits & SQLite but it does its job excellently πŸ’ͺ🏻

Maybe something else will come to my mind. Let's see how the alpha/beta will turn out 😁

thijstakken commented 8 months ago

@0n1cOn3 Yes no problem I understand! Will look at how SFTP could fit in.

Thanks for your input!

@TimotheFCN @meiersmarkus @SkyBlack1225 @XRomix @gosoxharp @KaivandenBroek @whoisdsmith @sterno900 @SweetPeaIN @SalmanAlwann @lukasvdberk

I would like to know if any of you got to install and use the tool so far. How did you experience the setup?

And if you have not set it up yet, I would like to know why.

You can be brutally honest and direct, I'm dutch, we are not offended easily :)

gr Thijs

thijstakken commented 8 months ago

Additional inspiration and feedback:

@lukasvdberk

  1. Webapp
  2. Webapp Authentication
  3. OAuth for Webdav

@StefvanEgmond

  1. Chaotic documentation, too overwhelming
thijstakken commented 8 months ago

Hi all, thanks for your feedback! In order to get to a valuable and easy to use tool, I've collected your feedback so far.

This gave a great insight on what features are important. In order to create clarity on what features are being built and the progress, I have created a new project board. You can find the project board here, I will fill it with all ideas and features and keep them updated: https://github.com/users/thijstakken/projects/3

Music Reboot Project vision as of 23 okt 2023:

The biggest challenge seems to lie with the ease of use, the documentation is too long and complex, making it hard to set-up and use. While it should be easy... a turnkey solution.

@0n1cOn3 mentioned Tubesync, and just like other similar Youtube-DL projects, they are all built like a WebApp. This makes them easy to get running, and then configure through a GUI. Drastically reducing the set-up effort, while making configuring the tool easier and reducing set-up documentation.

A WebApp! No longer an CLI tool...

  1. Transforming into a WebApp because it could increase usability and decrease the amount of documentation needed.
  2. New features will be built on top of the WebApp, making them easier to configure and expand later on, like support for SFTP from the GUI, and OAuth.

I want to attempt monthly releases, so we can evaluate and iterate quickly! From now on, version numbering will be: year.month.minorversion. This makes the different versions easier to understand and from which date they are.

gr Thijs

thijstakken commented 5 months ago

@0n1cOn3 @lukasvdberk @StefvanEgmond

Quick update.

  1. I feel like a n00b again, and I love it
  2. Progress has been made
  3. Pre-release for you guys to check out soon

While building the webapp I've been stuck very frequently, the whole Flask framework and ecosystem are new to me and it has taken lot's more time to learn then what I expected. This is no problem though and I'm learning a lot.

These have been the milestones so far:

  1. All functions from the orignal program have been embedded into a webapp, which means all functions can be controlled and configured through the webapp. (fixing minor bugs and optimizing has still to be done)
  2. New functions have been added like the ability to monitor some playlists and songs or to choose if you just want to download them once.
  3. Since the app contains sensitive information (your config and your settings with which it connects to a cloud storage solution where it will put the music for you) an authentication mechanism is also needed to provide login to keep strangers out of the app. (currently building)

After the authentication has been completed and the core app has been tested well, I will finaly write the documentation, which will be much simpeler since the webapp has been made to be easy and straightforward to use (I hope).

When the first MVP is done, I will make another post here in this thread and release a pre-release for you guys to test it out before the real release will be made. Looking forward to it!

What are your thoughts if you have any?

gr Thijs

TimotheFCN commented 5 months ago

I am a bit late to the party but very excited for the future of this project. I have been using it for a few months now and just the fact that such a niche project exists warms my heart :) Here is my use case: I use soundcloud a lot to discover new songs, but really dislikes all their interfaces (app, desktop, ... it's garbage). I also need to download mp3s to DJ. I have this tool setup on my NAS to download playlists from my soundcloud account. I then periodically copy the whole folder with all my songs to my apple music library (one folder = one playlist). I use apple music because it is then synced to all my devices but most importantly directly inside Rekordbox which I use to DJ.

This tool has greatly improved my workflow but I see so much things that could make it perfect (aside from some optimization to reduce resources consumption)

I will try to contribute as much as I can to this project when I think I can help with something ! I am looking at your webui branch right now.

Thanks a lot for your work, good luck and have fun ☺️

thijstakken commented 5 months ago

Hi @TimotheFCN !

This is great to hear, first feedback from someone who is using the tool already!

Great to know how you're using it for your workflow, seems totally logical to me that your using a mount to your media folder since you're on a NAS. There is no standard way to deal with that right now, so I assume you are using a workaround of some sort (to stop webdav from interfering)?

The points you mention are totally fair, indeed these things could be great features. The first things are the webgui, and the database system (I've started using sqlite), the other points you mentioned can be future features for sure, i've noted them also.

I will add a file based option to the music service also, so instead of choosing Webdav (which is the only option in the GUI right now) I will make an option for simple file based system. So you have a native option for your workflow with "simple folder sync", which will put the songs in a folder whithout any other logic. Do I understand your ideal flow correctly?

Thank you so much for your message, and for giving the music tool a chance already, this means a lot to me!

gr Thijs

TimotheFCN commented 5 months ago

Hi @TimotheFCN !

This is great to hear, first feedback from someone who is using the tool already!

Great to know how you're using it for your workflow, seems totally logical to me that your using a mount to your media folder since you're on a NAS. There is no standard way to deal with that right now, so I assume you are using a workaround of some sort (to stop webdav from interfering)?

The points you mention are totally fair, indeed these things could be great features. The first things are the webgui, and the database system (I've started using sqlite), the other points you mentioned can be future features for sure, i've noted them also.

I will add a file based option to the music service also, so instead of choosing Webdav (which is the only option in the GUI right now) I will make an option for simple file based system. So you have a native option for your workflow with "simple folder sync", which will put the songs in a folder whithout any other logic. Do I understand your ideal flow correctly?

Thank you so much for your message, and for giving the music tool a chance already, this means a lot to me!

gr Thijs

You understood perfectly ! Right now I don't have the path directly mounted, I still use webdav with nextcloud, but this would be a great feature and probably very simple to implement since it involves... removing things πŸ˜‚

Thanks a lot for the time you are putting into this !

thijstakken commented 1 month ago

@TimotheFCN @0n1cOn3 @lukasvdberk @StefvanEgmond

It has been silent for some time... But there is news!

Almost every week I've added functionality and kept on learning. A huge helper that I found is the amazing Flask mega-tutorial by Miguel Grinberg.

I feel like I'm now at 80% completion of the new webgui music application, but it's taking more time then expected.

So to give you an idea of how it's looking, here are some screenshots of the app in the current stage.

Sign In page

SignInPage

Main app page

MainAppPage

Settings page

SettingsPage

Configure your storage target!

SynchronisationPopUp

Song archive

ArchivePopUp

Let me know your thoughts!

gr Thijs

StefvanEgmond commented 1 month ago

Yoo this looks awesome. Will there be a way to disable registration and just add users via an admin?

0n1cOn3 commented 1 month ago

Thank you very much for your feedback on the development! It looks really smart!

I've just had another idea for it which could be implemented as well. Push notification (Gopher, Telegram, Discord, Firebase (Android)

Perhaps also remote management via Discord, Telegram etc.

I've looked up the links to the APIs for you.

https://core.telegram.org/

https://discord.com/developers/docs/reference

thijstakken commented 1 month ago

Yoo this looks awesome. Will there be a way to disable registration and just add users via an admin?

Oh yes @StefvanEgmond , this is precisly what I had in mind! I want to have an onboarding page, where you can create your first (admin) user. After the first user signs up, the sign-up will be disabled automatically. And there will be a admin page later, from where you can create additional users with your admin account.

gr Thijs

thijstakken commented 1 month ago

Thank you very much for your feedback on the development! It looks really smart!

I've just had another idea for it which could be implemented as well. Push notification (Gopher, Telegram, Discord, Firebase (Android)

Perhaps also remote management via Discord, Telegram etc.

I've looked up the links to the APIs for you.

https://core.telegram.org/

https://discord.com/developers/docs/reference

Thank you @0n1cOn3 !!!

These are nice points, I also like these things in various other open source apps that I use myself, so I totally understand where you're coming from.

But importantly, I need to limit the features for now, first I want to get the existing features out in the webgui app. After that, let's look at adding features like these!

gr Thijs

calonmerc commented 1 month ago

Joining the party, both late to find and late to join!

I personally have gone through webapp after webapp trying to find something simple that just works... and been disappointed and frustrated every time... I want something that I can change via a config file and just add a playlist.... everything nowadays has a webapp....until I came across this and it didn't have a webapp. Generally not for, nor against, a webapp for a tool like this, as long as it actually works for the user!

Regardless, if you can maintain simple "add playlists in bulk" without an overly complicated UI, that either defaults to downloading music to Playlist folders, or a default structure that's adaptable to the user (looking at you, Lidarr), then I'll be on board and happy to commit some time writing or testing features! I love the idea of a login, etc, as long as it can be disabled for local use only. (Again, webapp overload and everyone writes their own "security"... so almost all my "tools" are "double secure" behind my network and then an arbitrary login process)

A note for notifications as mentioned earlier in the thread: eschew with individual notification services and integrate Apprise (not written by me, similar name).

thijstakken commented 1 month ago

@calonmerc I can look at a way to have an "just download" option, where you only have to supply an url, or in bulk url's, and then it will just go.

0n1cOn3 commented 3 weeks ago

Uhm... @thijstakken, there might a huge thing coming from Google which might can make the project more complicated. Then Google is now testing forcing users to log in, which breaks all downloaders including yt-dlp, and discord music bots as well. One user on GitHub mentioned we should get Louis Rossman on this.

More infos are here available:

https://github.com/imputnet/cobalt/issues/551

thijstakken commented 3 weeks ago

@0n1cOn3 Let's say YouTube bans access without an account. Since I use youtube-dlp, it would need a token of some sort, to handle authentication. This is a great topic for the youtube-dlp community and alike to pick up on. But I believe this is already possible.

With that said, I hope YouTube remains open, it would possibly not be good for privacy if an account is required. Users could be tracked more closely, and this should not be an requirement for accessing websites in my opinion. It could also pose a risk to downloading, with the risk of YouTube potentially terminating your account if you happen to misbehave according to their rules.

So far, seeing the controversy and actions Google did take on the battle over adblockers, Google has not yet succeeded in it's efforts and the developer community keeps on creating new solutions so far. These sorts of actions are logical for Google, from a business perspective and that's allright, but the privacy risks are in my opinion far more important for as why these sorts of actions should be stopped.

I do not expect to see any breaking changes soon (speculation), we might end up in a temporary battle, but that is not up to me. I will keep on using youtube-dlp for as long as possible and expect that they will take countermeasures whenever neccesarry, just as we've seen with the adblocker battle. Only time will tell and nothing is forever, so it cannot be predicted precisly what will ultimatly happen.

0n1cOn3 commented 3 weeks ago

@0n1cOn3

Let's say YouTube bans access without an account. Since I use youtube-dlp, it would need a token of some sort, to handle authentication. This is a great topic for the youtube-dlp community and alike to pick up on. But I believe this is already possible.

With that said, I hope YouTube remains open, it would possibly not be good for privacy if an account is required. Users could be tracked more closely, and this should not be an requirement for accessing websites in my opinion. It could also pose a risk to downloading, with the risk of YouTube potentially terminating your account if you happen to misbehave according to their rules.

So far, seeing the controversy and actions Google did take on the battle over adblockers, Google has not yet succeeded in it's efforts and the developer community keeps on creating new solutions so far. These sorts of actions are logical for Google, from a business perspective and that's allright, but the privacy risks are in my opinion far more important for as why these sorts of actions should be stopped.

I do not expect to see any breaking changes soon (speculation), we might end up in a temporary battle, but that is not up to me. I will keep on using youtube-dlp for as long as possible and expect that they will take countermeasures whenever neccesarry, just as we've seen with the adblocker battle. Only time will tell and nothing is forever, so it cannot be predicted precisly what will ultimatly happen.

I absolutely agree with you.

I just thought that this might be relevant, hence this post of mine. A lot of things are based on yt-dlp, as is this project. In this sense,

I think it is not completely out of place to always be up to date in order to adapt the development in this time :D

thijstakken commented 3 weeks ago

Yoo this looks awesome. Will there be a way to disable registration and just add users via an admin? @StefvanEgmond

Tonight I've built the onboarding page. Please see commit: 7549e69

When you first start this app, and no users exists, it will now kindly ask you to register your first admin user. After that happens, the registration page get's blocked. Nobody can sign-up after this themselves.

In the future I will create an admin page, where this admin user can create more users (if you want to). I will create a new Github issue for this, so we will not forget :)