Giter VIP home page Giter VIP logo

rehike's Introduction

Rehike

Rehike branding image
Discord

Rehike is a custom web frontend server for YouTube.

We use it to accurately restore the old YouTube layout and feel, which is known as Hitchhiker. This version of YouTube existed from 2013 to 2020 and is preferred by us due to its speed and simplicity.

Rehike is not a browser extension, nor does it intend to function as one. Rather, it works over the browser, offering more freedom to what it is allowed to do and greater portability. This makes Rehike browser-independent and, to an extent, system independent.

Want an easy-to-install extension instead?

Please check out our friend, Vorapis 2013 / V3. This is a browser extension that restores the old YouTube layout in a very similar manner. You can download V3 at https://vorapis.pages.dev.

How do I do this? FAQs? etc.

See the Rehike wiki.

I want to contribute!

See CONTRIBUTING.md.

Installation

Rehike is early in development. You should not expect a perfect user experience, should you choose to use it. If you encounter any problems while using Rehike, please make an issue so that we can track them easily.

We currently do not support an automated install. If you wish to use Rehike, you must set it up manually. Fortunately, that isn't too hard!

See this page for manual installation instructions.

Configuration

Once Rehike is installed, you can visit this link to configure it.

Acknowledgements

Rehike makes use of the following software or services:

Use of these third party services is governed by their respective licenses. Where possible, their application will be optional.

Thank you to Prototaxis for his work on shelves homepage on InnerTube WEB v2. We use this valuable work for the homepage.

Licence

It is the belief of the team that code should generally be open and unrestricted.

As such, we license all of our original code under the Unlicense; you are free to do whatever you want with any code in the project that is authored by The Rehike Maintainers, Taniko Yamamoto, Daylin Cooper, or Aubrey Pankow, unless otherwise stated.

This licence is not applicable to the third party software we incorporate in the project. Please see their respective LICENSE files for more information on each.

Thank you!

Whether or not you choose to contribute to or use Rehike, we appreciate you checking out our project!

rehike's People

Contributors

aubymori avatar bluedragon-cairo avatar bowdown097 avatar davidcgranger avatar dependabot[bot] avatar ephemeralviolette avatar erizur avatar jtakatsuki avatar kawapure avatar kwan-vini avatar malina1797 avatar objectful avatar syndiate avatar teaspwn avatar torutheredfox avatar vexorionreal avatar yukiscoffee avatar zehnter avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rehike's Issues

Move homepage to WEB v2

While ANDROID v15 is mostly well for a shelves-based homepage, it is lacking two things.

  • Verification badge on users (this is missing everywhere in the mobile app, except for comments)
  • Moving thumbnails (this has no use in mobile, since you can't hover over the renderers, only tap them)

These missing features can be remedied by using the WEB v2 shelves endpoint, which can be accessed by modifying the protobuf data of a normal WEB v2 homepage continuation.

This gives you a shelves homepage in a rich grid format, which can be seen below rendered in Polymer.

image

YouTube Picker Doesn't Work

I have noticed that the YouTube Picker at the bottom doesn't work properly. Clicking on any of the options, it says loading for half a second and then disappears. According to Fiddler, this is because of picker_ajax, which doesn't exist. I assume you will implement this when you add more languages?

Irrelevant videos on homepage after WEB v1 to ANDROID fix.

Back when, WEB v1 worked, I always got the videos I watched but after it stopped working and after the switch to ANDROID, I got irrelevant and old recommendations, such as cooking videos, meditation and things like that. There are some remotely relevant results but they never change and are scattered randomly.

Question

So in terms of layouts, performance wise, the hitchhiker layout had much better performance compared to polymer/material. Reverting the layout with extensions got back the performance, though those are no longer available.

Does this project when it restores the layout improve the performance like extensions reverting the layout did? Or is this done in a way where that isn't possible?

WEB v1 w2w (home) API going down

Rehike uses requests youtubei/v1/browse with browseId "FEwhat_to_watch" for the home page, as does regular YouTube. In order to get the old homepage, it uses the client name WEB and version 1.0. This is the very client configuration that the real old YouTube layout was believed to use. However, as of the past month (April 2022), many people across related Discord servers have reported irregularities in being able to access it.

It seems that many people, typically those who access the site logged in, have an issue with this API failing to return.

As it stands, implementation of an alternative seems important.

Escape CLI `mitmproxy` command

I found the mitmproxy command to cause issues in the MacOS terminal. Use this to escape the special characters (!) :
mitmproxy -s YOUR_PYTHON_FILE.py --no-http2 --tcp \!\(www.youtube.com\)

Can Rehike support extensions?

Can Rehike support extensions that are affecting the main layout? like YouTube Downloaders, or for example "Enhancer for YouTube"?
image
image

Live chat

  • Live chat doesn't get properly funneled through, and thus does not load.
  • Chat replay is hidden by default, and thus shows "Show chat replay" on the hide label, and "Hide chat replay" on the show label.
    image
    image

Shorts thumbnails are stretched

YouTube stores shorts thumbnails in an actual 9:16 ratio. Hitchhiker has not been made to handle this aspect ratio,

Appearance in Rehike:
image

Appearance in Kevlar/Polymer:
image

How it should look in Rehike:
image
(For this screenshot, I corrected the thumbnail width, and applied width: 196px; display: inline-block; to the parent span.yt-thumb-simple.

[exp-signin-rework] getRecomAutoplay breaking entire page

Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in C:\Users\Aubrey\src\exp-signin-rework\models\Watch\Watch8\Watch8Subcontroller.php:230
Stack trace:
#0 C:\Users\Aubrey\src\exp-signin-rework\models\Watch\Watch8\Watch8Subcontroller.php(230): count(NULL)
#1 C:\Users\Aubrey\src\exp-signin-rework\models\Watch\Watch8\Watch8Subcontroller.php(104): Rehike\Model\Watch\Watch8\Watch8Subcontroller::getRecomAutoplay(NULL)
#2 C:\Users\Aubrey\src\exp-signin-rework\models\Watch\WatchModel.php(189): Rehike\Model\Watch\Watch8\Watch8Subcontroller::bakeSecondaryResults(Object(stdClass))
#3 C:\Users\Aubrey\src\exp-signin-rework\models\Watch\WatchModel.php(86): Rehike\Model\Watch\WatchModel::bakeSecondaryResults(Object(stdClass))
#4 C:\Users\Aubrey\src\exp-signin-rework\controllers\watch.php(138): Rehike\Model\Watch\WatchModel::bake(Object(stdClass), Object(stdClass), Object(stdClass))
#5 C:\Users\Aubrey\src\exp-signin-rework\controllers\core\HitchhikerController.php(27): Rehike\Controller\core\NirvanaController@anonymous->onGet(Object(stdClass), Object(Rehike\ControllerV2\RequestMetadata))
#6 C:\Users\Aubrey\src\exp-signin-rework\modules\Rehike\ControllerV2\GetControllerInstance.php(51): Rehike\Controller\core\HitchhikerController->get(Object(stdClass), '', Object(Rehike\ControllerV2\RequestMetadata))
#7 C:\Users\Aubrey\src\exp-signin-rework\modules\Rehike\ControllerV2\GetControllerInstance.php(73): Rehike\ControllerV2\GetControllerInstance->_cv2WrappedCallControllerMethod('get', Array)
#8 C:\Users\Aubrey\src\exp-signin-rework\modules\Rehike\ControllerV2\Router.php(204): Rehike\ControllerV2\GetControllerInstance->__call('get', Array)
#9 C:\Users\Aubrey\src\exp-signin-rework\modules\Rehike\ControllerV2\Router.php(148): Rehike\ControllerV2\Router::pointerHandler('watch', 'get')
#10 C:\Users\Aubrey\src\exp-signin-rework\modules\Rehike\ControllerV2\Router.php(25): Rehike\ControllerV2\Router::baseRequestMethod(Array, 'get')
#11 C:\Users\Aubrey\src\exp-signin-rework\router_v2.php(25): Rehike\ControllerV2\Router::get(Array)
#12 C:\Users\Aubrey\src\exp-signin-rework\index.php(45): require('C:\\Users\\Aubrey...')
#13 {main}
  thrown

No links for radio/playlist renderers

Notice: Undefined property: stdClass::$videoId in B:\xampp\htdocs\views\utils\AndroidW2w15Parser.php on line 101

I'm assuming it's because it treats playlist renderers as normal videos and tried to get videoId, which doesn't exist.

Continue migrating to Controller V2

Controller V1 is awful, and needs to be ridden of as soon as possible. Here's a list of pages still using Controller V1.

  • /
  • /results (Currently being updated)
  • /feed/trending
  • /feed/history
  • /feed/guide_builder
  • /watch_fragments2_ajax
  • /comment_service_ajax Updated in 47e7c91
  • /share_ajax
  • /browse_ajax
  • /related_ajax
  • /rehike/version
  • Resources under /rehike/static
  • /forcefatal Updated in c846804
  • Default case/404 page

Add a "Load more" button to the search results

image
Sometimes, you need to dig deep within the search results to see the video that you're looking for. You will probably need a couple of "Load more" button clicks to find it. It seems that in Rehike, the button is absent. Adding it in the search results would save people a lot of searches.

Standardise code formatting

Different code formatting from one user to another can result in the diff checker picking up autoformatted code as differences, which we don’t want if we’re checking for diffs. I suggest a formatted being specified in CONTRIBUTORS.md to standardise formatting and prevent large diffs.

Thanks

Channel "live" URL

Putting "live" in the place of the channel tab in the URL in Polymer, gives you a watch page of the user's current live stream.
For instance, if I was streaming, and I wanted easy access to my live stream, the URL would be https://www.youtube.com/c/aubreyREAL/live.

Comments section doesn't work anymore

A few days ago I went to check the comments of a video but suddenly it just doesn't show anymore, even the loading spinner doesn't. This could definitely be an innertube issue.

PHP Exception Output Breaks Head

If a standard PHP exception is output, it has a tendency to push all of the contents of head to body. This has some pretty bad effects as a result.

A custom exception handler should be implemented that overrides this behaviour of PHP, bypassing this bug.

Trying to view the channel page of a channel that doesn't exist will crash Rehike

Trying to view the channel page of a channel that doesn't exist will crash Rehike and give these details:

Uncaught TypeError: ChannelUtils::getUcid(): Return value must be of type string, null returned in C:\xampp\htdocs\controllers\utils\channelUtils.php:17
Stack trace:
#0 C:\xampp\htdocs\controllers\channel.php(43): ChannelUtils::getUcid(Object(Rehike\ControllerV2\RequestMetadata))
#1 C:\xampp\htdocs\controllers\core\HitchhikerController.php(109): Rehike\Controller\ChannelController->onGet(Object(stdClass), Object(Rehike\ControllerV2\RequestMetadata))
#2 C:\xampp\htdocs\modules\Rehike\ControllerV2\GetControllerInstance.php(51): Rehike\Controller\core\HitchhikerController->get(Object(stdClass), '', Object(Rehike\ControllerV2\RequestMetadata))
#3 C:\xampp\htdocs\modules\Rehike\ControllerV2\GetControllerInstance.php(73): Rehike\ControllerV2\GetControllerInstance->_cv2WrappedCallControllerMethod('get', Array)
#4 C:\xampp\htdocs\modules\Rehike\ControllerV2\Router.php(204): Rehike\ControllerV2\GetControllerInstance->__call('get', Array)
#5 C:\xampp\htdocs\modules\Rehike\ControllerV2\Router.php(148): Rehike\ControllerV2\Router::pointerHandler('channel', 'get')
#6 C:\xampp\htdocs\modules\Rehike\ControllerV2\Router.php(25): Rehike\ControllerV2\Router::baseRequestMethod(Array, 'get')
#7 C:\xampp\htdocs\router_v2.php(27): Rehike\ControllerV2\Router::get(Array)
#8 C:\xampp\htdocs\index.php(45): require('C:\\xampp\\htdocs...')
#9 {main}
  thrown

Please fix this.

Make Rehike show that I'm signed in

It seems that on the current master branch of Rehike, it thinks that I'm signed out. However the exp-signin-rework branch of this does show that I'm signed in because it shows my profile picture in the top right corner and the notifications bell. Video recommendations based on my account also work on that branch.

This could be an easy fix since I think it has something to do with cookies.

All Channels have no Playlists

I went to check the playlists of a channel, but it said there were none in Rehike. In normal YouTube, I am sure that there are playlists. Going to the direct playlist link gives an error message. I am sure there was a commit that showed experimental channel playlists, but it seems that doesn't work anymore.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.