Skip to main content

HomePage

HomePage is a trivial flask web app that allows downloading the audio track from almost any internet video. It is intended to be deployed inside a private network for personal use, so that hosts within the network can access and download the tracks they want.

HomePage is very basic, but it has a Material Design front-end which is simple and easy to use. HomePage uses youtube_dl to download the videos, so quite a few sites are supported. Playlists are also supported.

HomePage

Prerequsites

  • python 3.6 or above with pip
  • sudo access (for port 80)
  • pyenv and poetry installed (optional)
  • apt package manager & package lists

Install

The basic installation is very simple.

$ python3 -m pip install --user homepage

# Normal desktop
$ homepage -i

# Server without x11
$ homepage -ic

Then, you can deploy with:

$ homepage -dfp

Alternatively, if your system is running an older version of python or you wish to run this project inside a virtual environment, you can do that too.

First, go ahead and install pyenv. Then install poetry. Once you've installed those, we just to install a few more things.

$ git clone https://github.com/Sh3llcod3/HomePage.git
$ cd HomePage/
$ pyenv install 3.8.4
$ pyenv local 3.8.4
$ poetry self:update --preview || poetry self update --preview
$ poetry update
$ poetry install # Add --no-dev if you don't want dev deps
$ poetry shell
$ homepage -ip
$ homepage -df

After installing pyenv, the lines you add to your ~/.bashrc may need to be different, please see the FAQ.

Uninstall

If you installed using pip:

python3 -m pip uninstall -y homepage easyparse Flask youtube_dl gevent

and it will remove this completely from your system. You can vary this command based on what you want to keep.

Otherwise, if you've installed using poetry and assuming you're inside the current directory:

$ exit # Exit virtualenv or press Ctrl-d
$ poetry env remove 3.8
$ poetry cache clear --all pypi
$ cd .. && rm -rf HomePage/

Usage

Once deployed, if you're using this on the device which is hosting it, fire up your favourite web browser and head to http://0.0.0.0:5000/. If you're on another device, simply head to the IP address that it prints out when you run it.

If you have sudo access, please use the -f switch. If you don't, other hosts can still use this, but they will need to explicitly specify the port, e.g. http://192.168.0.10:5000.

From there, you just need to select your options and paste in a link to the video or playlist that you want to download the tracks from. Obviously, you can download from YouTube, but thanks to the power of the youtube_dl library, many other sites will also work, e.g. Vimeo, or Reddit. You can find the full list here.

FAQ & Troubleshooting

I'm having trouble with the env

You may have inserted the wrong lines in your ~/.bashrc. The initialization lines shown on the pyenv repo don't work well with poetry. Instead, add these lines to the end of the file and remove any previous lines you may have added before (taking care to ensure you don't remove anything else).

# Pyenv installation

if [[ -z "$VIRTUAL_ENV" ]]; then
    export PATH="$HOME/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
fi

Can I change the background?

You absolutely can. To change the background, change out homepage/static/Background.jpg with any image you like, but it has to be called Background.jpg and in the JPEG format. I will make this process easier in the future.

Pyenv fails to install 3.8.4

You may have forgotten to install some crucial pyenv dependencies. If you're using other package managers, check here for their wiki page. If you're using apt, you can simply run:

$ sudo apt update
$ sudo apt-get install -y --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

Then retry the pyenv installation.

Why does HomePage exist?

That is a really good question. I wanted a simple web app where I could download music from various videos on any device, without having access to a command line version of youtube_dl or resorting to using questionable sites and apps.

The code is bad at best, but it works and you have the freedom of choice. Whether you want to use it, is up to you.

Why is it not working?

Your version of youtube_dl may be out of date. Having a version of youtube_dl that is even one version old can mean your tracks may fail to download. Fortunately, the library is updated frequently and you can pull in the updates very easily.

If you're using it from PyPi, then:

$ python3 -m pip install --upgrade youtube_dl gevent Flask --user
$ youtube-dl --rm-cache-dir

If you're using it from the env, then simply cd to the directory you installed it and run:

$ poetry update
$ poetry shell

You may want to write some sort of cron job to do this every few days or so.

Does HomePage scale to multiple users asynchronously?

No. It was never intended to scale in the first place. Neither is it secure in any way. Therefore, I should stress that you should NOT deploy this to anywhere except your RFC1918 private/internal network.

Does it have Windows support?

Yes. If you can get the latest executables for lame, atomicparsley, faac, ffmpeg and place them inside the project's directory, it should work.

Why does it take so long?

This depends on:

  • Number of CPU cores
  • If the single thread is blocked somehow
  • Speed of computer and version of ffmpeg
  • Size of download, network speed
  • Single track or playlist?

To-do

  • Add an authentication page.
  • Make site restore state after a download.
  • Save user preferences using cookies.
  • Display past tracks only for that host.
  • Add a separate page for management.
  • Create a system to auto-update youtube_dl
  • Make it work on windows and generate executables

Metadata

Release files for homepage 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for homepage 0.4.2
File Size Uploaded
homepage-0.4.2.tar.gz 435.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for homepage 0.4.2
File Interpreter ABI Platform
homepage-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 869.4 kB

Release files / homepage-0.4.2.tar.gz

Download URL homepage-0.4.2.tar.gz
Size 435.0 kB
Tags Source
SHA-256 checksum
How to use checksums
1524af75d39fc463b65a15088eb82f244ad717c77fff2d24086b838b5508e0c6
BLAKE2b-256 checksum
How to use checksums
43935a60340963049407df88205d27350b0e64473aa177da831b21698308bb76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.0a3 CPython/3.8.4 Linux/5.4.0-40-generic

Release files / homepage-0.4.2-py3-none-any.whl

Download URL homepage-0.4.2-py3-none-any.whl
Size 434.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a01b801337af17821267afc3b3b9dcf4038733c96adb7ad827cdaacc2a8ed562
BLAKE2b-256 checksum
How to use checksums
5d83abd991fef2c24e0bb32dacd994d73def73c1e5d797a7be3adda871df797f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.0a3 CPython/3.8.4 Linux/5.4.0-40-generic

Release history Release notifications | RSS feed

0.5.7

2 release files

0.5.5

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.5

2 release files

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.5

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page