Vioscope is a YT frontend written for minimalists.

reback00 7d254605fd Added fallback when config.inc.php is not there hace 4 años
inc 7d254605fd Added fallback when config.inc.php is not there hace 4 años
tests 3457fd97c5 Initial commit hace 4 años
themes 3457fd97c5 Initial commit hace 4 años
vendor 3457fd97c5 Initial commit hace 4 años
.gitignore 3457fd97c5 Initial commit hace 4 años
.htaccess 3457fd97c5 Initial commit hace 4 años
LICENSE af05a9c20b Initial commit hace 4 años
README.md 3457fd97c5 Initial commit hace 4 años
channel.php 3457fd97c5 Initial commit hace 4 años
composer.json 3457fd97c5 Initial commit hace 4 años
composer.lock 3457fd97c5 Initial commit hace 4 años
index.php 3457fd97c5 Initial commit hace 4 años
search.php 3457fd97c5 Initial commit hace 4 años
trending.php 3457fd97c5 Initial commit hace 4 años
video.php 3457fd97c5 Initial commit hace 4 años

README.md

Vioscope

Vioscope is a YT frontend written for minimalists.

Uses PHP on the backend and renders bare bones HTML5 pages with a touch of CSS that can run without JS enabled. Supports proxy over TOR (currently backend functions only). No YT API.

Features

NOTE: The project is currently in alpha stage. Features might not work as expected.

  • Server side proxy supported (HTTP, SOCKS4, SOCKS5/TOR, SOCKS4a)
  • Customizable theme
  • Versatile config options
  • Basic featureset (only needs PHP and no DB, just place somewhere and enjoy!)
  • No JS required on client side, just plain HTML5+CSS

Planned to be added:

  • Playlist feature
  • Configurable default/changeable video quality
  • Comments (possibly with alternative comment system as well)
  • Pagination support on channel page
  • Localization/I18n support
  • Closed Captions

Requirements

  • PHP 7.2 or later
  • (optional) Tor - for anonymous proxy support. (Currently only backend requests supported)

Installation

Place the entire directory somewhere in your server. Make sure you include the hidden files so that .htaccess and other important hidden files are copied as well.

For NGINX, make sure to retrict access to hidden files (filenames starting with dot). For servers other than Apache, disable directory index for security. For Apache, there is already .htaccess files there for you, so no further actions needed.

Then install the dependencies:

composer install
composer dumpautoload -o

Now copy inc/sample-config.inc.php to inc/config.inc.php and edit as you wish.

Start a webbrowser and point to the directory you just installed to. e.g. http://localhost/vioscope/

Config

inc/sample-config.inc.php file has comments to guide you through the configuration. The default ones are just as fine.

  • theme: Set the theme to use on frontend. Themes are located in themes directory. Default is default.
  • base_url: You should not edit this in a normal setup. This is here to override base_url if you absolutely need to.
  • abs_path: You should leave this one alone too.
  • app_name: This is basically the website title. Set it to anything else if you want to. e.g. 'GalaxyTube', 'VideoGallore', "John's Videos".
  • footer_text_1: Shows the text on footer (on the left on default theme).
  • footer_text_2: Shows the text on footer (on the right on default theme).
  • default_quality*: The default video quality to be shown. Can be set to either of these values: auto|480p|720p|1080p|4k.
  • allow_changing_quality*: Allow the user to change the video quality.
  • pagination_amount*: Items showing on one page at max in a paginated scenario.
  • proxy_enabled: Enable or disable proxy settings. Think of this as a flip switch for proxy. If you have it set to false, no proxy settings (described below) will be used.
  • proxy_for_frontend_assets_enabled*: Enables proxy for frontend linked content on user end (such as thumbnails etc.)
  • proxy_type: Type of proxy to use. Supported proxy types: 'http' (default), 'socks4', 'socks5', 'socks4a'
  • proxy_ip: The IP of the proxy to use.
  • proxy_port: The port of the proxy to use.
  • proxy_username: The username to be used with the proxy. Not all proxies may need this.
  • proxy_password: The password to be used with the proxy. Not all proxies may need this.

* Feature is not implemented yet.

Using TOR as proxy

To set tor as a proxy, install tor then enable and start its service. Set the config to something like this:

	'proxy_enabled' => true,
	//'proxy_for_frontend_assets_enabled' => true, // Doesn't work yet
	'proxy_type' => 'socks5',
	'proxy_ip' => '127.0.0.1',
	'proxy_port' => '9050',

Tor's default port is 9050. Adjust to your setup accordingly.

Privacy

For privacy:

  • Try to run it with Javascript disabled on your browser.
  • Keep a TOR service running on the computer that has the server setup and config to use that proxy (just set proxy_enabled to true and keep other settings from sample config file). Do the same on the computer you are browsing it from. Alternatively, you can use a trustworthy proxy or a VPN.
  • Configure your browser to not leak your real IP through WebRTC.
  • Try to use a Private Window or Incognito Window on your browser whenever possible.

Tests

To run tests:

path/to/this/repo/tests/.run-tests.sh

Known Issues

  • Pagination on channel page does not work

Development

If you introduce a new class, don't forget to run composer dump-autoload -o

Special Thanks

This project is highly inspired by the Invidious project.

License

GNU Affero General Public License v3.0