Skip to content

Program to download and reupload music from youtube videos, so you can lock your phone while listening to youtube music for free.

License

Notifications You must be signed in to change notification settings

ytm-manager/ytm-manager-backend

Repository files navigation

Code quality Top language Language count GNU GPL v3 License Lines of code Number of commits since v0.1 Commit activity Docker size image Repository size Documentation web site web site CD pipeline Code Coverage Forks


Logo
presents
Logo

The YouTube Music Manager (ytm-manager) application is a set of services to manage your YouTube Music Library. The application can be used via API REST, web platform or Telegram / WhatsApp bot. This application provides new ways to interact with the YouTube Music Service other than using the graphical interface.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

Product Name Screen Shot

The YouTube Music Manager (ytm-manager) is a suite of services that can be used to manage your YouTube Music personal library. These services provide another way to use the YouTube Music application and also expand its native functionality.

For example, *** YouTube Music Manager*** provides a functionality to download music from YouTube videos or playlists and upload them to YouTube Music, so you can lock your phone while listening to YouTube Music for free.

(back to top)

Built With

This section lists any major frameworks/libraries used to bootstrap the YouTube Music Manager platform:

  • Python
  • git
  • Flask
  • flask restx
  • Flasgger
  • yt-dlp
  • ytmusicapi
  • pipreqs
  • Docker

(back to top)

Getting Started

Try the platform

To get started, you will probably want to try the software from the official web page ytm-manager.com.

YouTube Music Manager executes in the browser, so you do not need to install anything.

Check the user guide from the official documentation to know more.

Deploy and run the software locally

With Docker

The fastest way to get a copy up and running in your local machine is using Docker with docker-compose.

Assuming that you have docker-compose and docker installed on your machine, issue the following commands tu pull the Docker image of the backend component and run it inside a container:

wget https://raw.githubusercontent.com/ytm-manager/ytm-manager-backend/master/docker-compose.yaml
sudo docker-compose up -d

Then, you can start sending requests to the API in the URL http://localhost:5000. You can check that the service is running by simply running a browser and opening the URL http://localhost:5000/api/global/hello, and the "Hello World" message should be displayed.

Check the Docker installation guide from the official documentation to know more.

Manually

If you want to run the software locally without using Docker, you may want to check how to install ytm-manager into your machine.

Learning how it works

If you want to understand how ytm-manager works we recommend that you read the developer guide from the official documentation.

Set up a development environment

If you want to make a contribution to the project or want to debug an error, you will need a functional development environment. This environment involves many tools and utilities in addition to the ones needed to run the software manually.

You can follow this guide from the official documentation to learn how to set up the development environment.

(back to top)

Usage

Open a browser and navigate to the URL of YouTube Music Manager http://localhost:5000/api/global/hello. Check that the web page displays Hello World!.

You can send requests to the different endpoints of the API using curl, Postman or any other applications or methods to send requests.

(back to top)

Roadmap

TODO:

  • Implement an end point that receives mp3 and upload to ytmusic.
  • Implement an end point that receives a zip of .mp3 files to upload them to yt music.
  • Change implementation of getting the current directory in APIController do it as in the upload service.
  • Add flexibility with the usage of the two different type of secrets.
  • Read authentication for youtube music in each request instead of retrieving it from secrets.
  • Fix the docker network reachment. Port 5000 working without Docker.
  • UploadPlaylist create a playlist in youtube music, download it an and add to the playlists in yt music playlists.

TODO ?

  • FRONTEND: Make API requests in Flutter
  • Show Text in App
  • TextBox Input (URL, FILE_PATH)
  • Open File Button
  • SendFile Button
  • Refresh Session text box input widget

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

This is an open-source project, so any contributions are greatly appreciated ❤. You can start by taking a look to the Developer guide to understand how YouTube Music Manager works.

If you have an issue or suggestion that would make YouTube Music Manager better, please open a new issue explaining your inquiry. We will try to satisfy your needs as soon as possible.

If you want to make a contribution to YouTube Music Manager by yourself, please open a new issue, so we can discuss the reach of your contribution. After that, fork the repo, implement your change and create a pull request from your fork to the develop branch. We will merge your changes as soon as possible, so they are available in the next releases of YouTube Music Manager.

So, for each change that you want to do to YouTube Music Manager by yourself, you will need to:

  1. Fork the repo.
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature).
  3. Add and commit your Changes (git add src; git commit -am 'Add some AmazingFeature').
  4. Push to the Branch (git push origin feature/AmazingFeature).
  5. Repeat steps 3 and 4 as many times as you need.
  6. Open a pull request from your fork to the develop branch.
  7. Repeat steps 3 and 4 if further changes are required.

Do not forget to give the project a star ⭐ on GitHub!

(back to top)

License

APGLv3 logo

Distributed under the GNU GENERAL PUBLIC LICENSE, Version 3. See LICENSE to obtain a copy of the therms of this license. See also LICENSE.md for more information about the licensing state of this project.

This software was developed by Aleix Mariné-Tena.

YouTube Music Manager (ytm-manager) ultimately belongs to Aleix Mariné-Tena and has total control over the licensing and distribution therms.

Copyright 2020-2023 Aleix Mariné-Tena

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License v3 for more details.

(back to top)

Contact

Main developer of YouTube Music Manager: Aleix Mariné-Tena - [email protected] 📫

You can get more information of my work and research on my GitHub profile.

(back to top)

Acknowledgments

Thank Google for the development of YouTube and YouTube Music. Also, thank Google for allowing so much usage of its services and APIs for free.

The development of the YouTube Music Manager backend was possible thanks to the Python packages ytmusicapi and yt-dlp, packages that provide an easy way to use YouTube Music and YouTube programmatically through its API.

(back to top)

Credits

People involved in the YouTube Music Manager development

  • Aleix Mariné-Tena: Owner and main developer of YouTube Music Manager and its backend.

About

Program to download and reupload music from youtube videos, so you can lock your phone while listening to youtube music for free.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •