Skip to content
Animesh edited this page Jun 10, 2024 · 13 revisions

Welcome to the ytify wiki!

The workings of the entire project will be documented here for future contributors & maintainers.

Building

API handling

Playback

Audio Events

Library

Queue

Instances

Recap ytify started by scraping of streaming download links from a now discontinued youtube downloader. I developed a yt-dlp backend for the same purpose for v5, which has now been discontinued in favor of the piped api in v5.1 release, had been using so without any changes until like september of 2024 when the piped api underwent some changes (due to yt) that affected playback which could only be solvable by implementing dash playback. To me this was a major change, I somehow luckily stumbled upon the invidious api so i started using it just for streams, leaving search and other api operations to piped as is. After sometime I learnt that some hosts have both piped and invidious instances, somehow had the idea to reimplement the streams with piped but switch the playback links with their invidious counterpart, this actually worked and we have kept that architechture intact so far, AKA the Unified Instance Architechture.

Icons

To modify icons in the project, one has to first sync with the full icon base by

  • Visiting https://remixicon.com/collection
  • Press Back to go to https://remixicon.com
  • Start Searching & Selecting all icons from the remixicon.css file.
  • When you are done, go back to the /collection by pressing Forward.
  • Now Press on Download Fonts Button which will download a zip.
  • Extract only the remixicon.css and remixicon.woff2 files.
  • Now you can replace them with the original files in the project.

Featured Playlists

Dataset / Raw

Outline

  • It uses a basic txt formatting not json for efficiency.
  • A new playlist data appears after every blank line.
  • Each data item is separated by a line.
  • The first item is playlist name.
  • The second item is playlist id.
  • The third item is playlist thumbnail id.

How to add your own playlist

  1. Visit your desired ytm site, Beatbump recommended.
  2. Search your desired playlist and open it.
  3. Get the playlist id from the link of the playlist.
  4. Get the thumbnail id from the image link of the thumbnail.
  5. Add to the database by following the outline above.

Develop

Here's an example implementation in js that converts the text to array to an array of objects.

fetch('https://raw.githubusercontent.com/wiki/n-ce/ytify/ytm_pls.md')
    .then(res => res.text())
    .then(text => text.split('\n'))
    .then(data => {
      const array = [];
      for (let i = 0; i < data.length; i += 4)
        array.push({
          "type": "playlist",
          "name": data[i + 1],
          "uploaderName": "YouTube Music",
          "url": '/playlists/' + data[i + 2],
          "thumbnail": '/' + data[i + 3]
        });
       // do whatever with array
    });

More...