Skip to content

A mobile-friendly website that loops YouTube videos. It can loop an entire video or a portion of it. Easy to use with no distractions.

License

Notifications You must be signed in to change notification settings

Phixyn/no-bs-looper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

No BS YouTube Looper

Loop YouTube videos easily and without distractions.

No BS software badge GitHub release (latest by date) GPLv3 badge

WebsiteIssue TrackerReleasesContributing

Preview Screenshot


Table of Contents


Overview

A mobile-friendly website that loops YouTube videos. It can loop an entire video or a portion of it. Try it out here!

I made this out of frustration with the current YouTube loopers out there. Most of them are full of ad banners and other intrusive elements, and don't work very well on mobile.

Features

  • Loop full YouTube videos or customize what to loop
  • Mobile friendly
  • Play videos while your phone is locked
  • Save and share your loops
  • Sleek dark theme with no ads, no banners and no distractions
  • Focus on the video with "Turn Off the Lights" mode, inspired by this Firefox extension

Getting Started

To get a local instance up and running, follow these steps. If it's too complicated, feel free to use a public instance of the website instead.

Prerequisites

  • Python 3.7+
  • A HTTP server (e.g. Nginx or Apache)
  • Docker (optional)

Installation

  1. Clone the repo.
git clone https://github.com/Phixyn/no-bs-looper.git
  1. Install Python dependencies*
pip install -r requirements.txt
  1. Open ws_server.py and scroll to the bottom.
  2. Replace HOST and PORT with your desired values. Note that HOST should be the local address of your machine (e.g. 192.168.1.69).
  3. Open static/js/app.js
  4. Replace the address in const websocket = new WebSocket( ... ); with the address and port you set in step 4.
  5. Copy all the files in the static/ folder to a HTTP server such as Nginx or Apache.
  6. Run the backend server: python ws_server.py (CTRL + C to quit it).

*Python virtual environment:

I recommend setting up a virtual environment for the project. It's really easy:

python -m venv .env

Run that from the repo's root directory. Then activate it with either source .env/bin/activate or .env\Scripts\activate.bat on Windows. Once that's done you can install the project's requirements locally in the environment, instead of globally on your machine (see step 2).

Docker:

This project has a work-in-progress Dockerfile that you can use to spin up an Nginx server, if you prefer. You'll have to mount/bind a volume for the static/ folder. Something like this could work for running the website on port 14666:

docker container run --name no-bs-looper -d -p 14666:80 -v E:\Phixyn\Projects\no-bs-looper\static:/usr/share/nginx/html phixyn/no-bs-looper

Obviously replace the path to the static folder with your own path. Note that it has to be an absolute path.

Usage

Depending on your HTTP server's setup, this may vary. If you followed all the steps in the Installation section, you'll be able to access the website using your local IP address, or localhost. If you can't get it set up, use one of the public instances listed below.

Once you're in the website, paste a YouTube video link or ID onto the video link text field and click "Update". Move the slider handles to loop a specific portion of the video, or leave them at the start and end to loop the full video.

You can save and share your loop by copying the URL in your address bar. The URL changes everytime you customize the loop or load a new video.

To reduce distractions and focus on the video, you can dim every element on the page by clicking "Turn off the lights". Click or tap anywhere on the page (outside of the video player) to disable this effect.

How to find the video ID?

Since v1.1.0 you can copy full YouTube links instead of a video ID. However, if you still want to use video IDs instead, here's how to find them:

It's usually after the v= portion of a YouTube link. For example:

https://www.youtube.com/watch?v=dQw4w9WgXcQ

For the above video, the video ID is dQw4w9WgXcQ.

Public Instances

If you can't host your own instance of the website, use any of the public instances below.

Owner Version Link
Phixyn v1.1.2 http://ytlooper.phixyn.com/

If you decide to host your own public instance, feel free to update the README with a link to it and make a PR.

Roadmap

See milestones for a list of planned releases and associated issues.

Contributing

This is still a work in progress. The Python backend server will soon be replaced and this will eventually be a full Node.js project. If you'd like to help out, please check out the issues page for anything you might be able to help with.

Please take a look at the contributing guidelines if you're interested in helping. All contributions are greatly appreciated!

License

GPL-3.0 License. For more information see LICENSE.

TL;DR: Use it anyway you want, modify the code anyway you want, but do share any changes you make (in the spirit of open source and no BS software).

Contact

Twitter @phixynphixyn.com

Acknowledgements

This software uses the following open source ❤︎ projects: