Skip to content

Commit

Permalink
Updated readme
Browse files Browse the repository at this point in the history
  • Loading branch information
JVT038 committed Feb 19, 2023
1 parent ea20f2f commit 35c160d
Showing 1 changed file with 24 additions and 11 deletions.
35 changes: 24 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,28 +25,28 @@

<h2 align="center">Status</h2>

<h4 align="center">
:heavy_check_mark: MetaTube 🚀 Finished! :heavy_check_mark: <br/>
<h4 align="center">
:heavy_check_mark: MetaTube 🚀 Finished! :heavy_check_mark: <br/>
</h4>

<hr>

<p align="center">
<a href="#dart-about">About</a> &#xa0; | &#xa0;
<a href="#dart-about">About</a> &#xa0; | &#xa0;
<a href="#sparkles-features">Features</a> &#xa0; | &#xa0;
<a href="#rocket-technologies">Technologies</a> &#xa0; | &#xa0;
<a href="#white_check_mark-requirements">Requirements</a> &#xa0; | &#xa0;
<a href="#checkered_flag-starting">Starting</a> &#xa0; | &#xa0;
<a href="#memo-license">License</a> &#xa0; | &#xa0;
<a href="#disclaimer">Disclaimer</a> &#xa0; | &#xa0;
<a href="#disclaimer">Disclaimer</a> &#xa0; | &#xa0;
<a href="https://github.com/JVT038" target="_blank">Author</a>
</p>

<br>

## :dart: About ##

MetaTube downloads video from YouTube and can add metadata from a specified metadata provider on the downloaded file.
MetaTube downloads video from YouTube and can add metadata from a specified metadata provider on the downloaded file.
Normal view | Dark mode|
--- | ---
![startpage](https://user-images.githubusercontent.com/47184046/147980156-e3ee71e4-a4cd-4fee-808b-c4b3c9530e9f.png) | ![darkstartpage](https://user-images.githubusercontent.com/47184046/147980017-bd3bc8bf-2589-4ee5-8d9c-1785ba906982.png)
Expand Down Expand Up @@ -96,8 +96,11 @@ For a complete list, visit the [Dependencies overview](https://github.com/JVT038
Before starting :checkered_flag:, you need to have [Git](https://git-scm.com) and [Python 3.8 or higher](https://python.org/downloads) installed.

## :checkered_flag: Starting ##

### :whale: Using Docker ###

CLI docker:

```docker
docker run \
-d \
Expand All @@ -110,7 +113,9 @@ docker run \
-v /metatube:/database:rw \
jvt038/metatube:latest
```

Docker-compose:

```
version: '3.3'
services:
Expand All @@ -127,8 +132,11 @@ services:
- '/downloads:/downloads:rw'
- '/metatube:/database:rw'
```

You need to set the variable `DATABASE_URL` to a custom mount point (in these examples `/database`), because otherwise your database file will reset everytime the Docker container updates.

### :hammer_and_wrench: Manually build and start server ###

```bash
# Clone this project
$ git clone https://github.com/JVT038/metatube
Expand Down Expand Up @@ -166,6 +174,7 @@ $ python metatube.py

# The server will initialize in the <http://localhost:5000>
```

You can set the following environment variables:
Name | Description | Default value
---|---|---
Expand All @@ -179,32 +188,36 @@ LOG | Whether to keep logs or not | False
SOCKET_LOG | Whether to log in- and outcoming websocket connections; warning: your console can be spammed with connections | False
LOG_LEVEL | Numeric value from which MetaTube will keep logs. Info [here](https://docs.python.org/3/howto/logging.html#logging-levels) | 10
URL_SUBPATH | Set the URL subpath, if you want to run MetaTube on a subpath. Example: `/metatube` will run the server on `host:port/metatube` | /

```bash
# On Windows 10, you can set an environment variable like this:
$ set ENVIRONMENT_VARIABLE = Value

# On Linux and MacOS, you can set an environment variable like this:
$ export ENVIRONMENT_VARIABLE = Value
```

Additionally you can create a file called `.flaskenv` and set the environment variables in there.
An example is provided in [example.flaskenv](example.flaskenv). You can use that template and rename the file to `.flaskenv`.

## Fix the artist values

So I recently discovered I made a mistake in the process of adding artists to files. <br/>
Some songs have tags multiple artists, and I noticed these tags were misinterpreted by my audio player. <br/>
Basically, the `TPE1` tag contained was like this: `['artist 1; artist 2']`, while it should've been `['artist 1', 'artist 2']`. <br/>
Thanks to [#310](https://github.com/quodlibet/mutagen/issues/310) I discovered this, corrected it in `metadata.py` and wrote a small script in [fixartists.py](fixartists.py) to fix the existing audio files that had the tags in the wrong way. <br/>
Put all the wrong audio files in one directory, run the file and enter the path to the directory containing the incorrect tags, and it should be fixed. <br/>
My apologies for this (annoying) bug.

## :memo: License ##

This project is under license from GNUv3. For more details, see the [LICENSE](LICENSE) file.<br/>
I am not responsible for any legal consequences the user may or may not face by using this project.


Made with :heart: by <a href="https://github.com/JVT038" target="_blank">JVT038</a>

## To-Do

### Finished

- [X] Add support for the use of proxies to download YouTube videos
Expand Down Expand Up @@ -238,8 +251,8 @@ Made with :heart: by <a href="https://github.com/JVT038" target="_blank">JVT038<
- [X] Dark mode support
- [X] Fix error `Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help http://xhr.spec.whatwg.org/` in overview
- [X] Make sure the search for downloaded song field works
### Not finished (I'll probably never finish this)

### Not finished (I'll never finish this)

- [ ] Add it to the PyPi library
- [ ] Add support for sites other than YouTube
Expand All @@ -248,9 +261,8 @@ Made with :heart: by <a href="https://github.com/JVT038" target="_blank">JVT038<
- [ ] Add support for H.265 / HEVC
- [ ] Add authentication system with an optional reverse proxy
- [ ] Add support for TheAudioDB
- [ ] Add support for YouTube Music
- [ ] Add support for YouTube Music
- [ ] Add support for Last.fm!
- [ ] Add support for Genius as metadata provider
- [ ] Add support for embedded lyrics (if possible)
- [ ] Add translations
- [ ] Add in-built file explorer, making manual paths optional
Expand All @@ -266,13 +278,14 @@ Made with :heart: by <a href="https://github.com/JVT038" target="_blank">JVT038<
- [ ] Cache and store the segments and other video data, so next time of loading a video will be faster
- [ ] Send websocket requests to one specific device / client only, to prevent duplicate websocket requests
- [ ] Make sure the progress bar works properly in a Docker container, because it doesn't work properly rn.
- [ ] Use proper queues and threading during download instead of the weird ping-pong system between the client and the server.
&#xa0;

## Disclaimer

I made this project to educate myself about Python, and to learn how metadata works in combination with files.
Additionally, I want to emphasize I do NOT encourage any pirating, or any other illegal activities.
This project's purpose isn't to illegally download content from YouTube; its purpose is to educate and enlighten myself (and others viewing the source code) about Python, how Python interacts with metadata in files, and metadata works, and how yt-dlp works.
I am not responsible if the user downloads illegal content, or faces any (legal) consequences.


<a href="#top">Back to top</a>

0 comments on commit 35c160d

Please sign in to comment.