# TYTD 2025
My web based YouTube downloader that I created in 2025 writen in [CrossLang](https://crosslang.tesseslanguage.com/), my own language


![The Image](https://crosslang.tesseslanguage.com/images/tytdscreenshot.jpg)

[Website](https://crosslang.tesseslanguage.com/software/webapps/tytd2025/)

# Features
- PWA with the ability to add videos when server is down
- Can download videos, playlists and channels (you need a channel url like this [https://www.youtube.com/channel/UCBa659QWEk1AI4Tg--mrJ2A](https://www.youtube.com/channel/UCBa659QWEk1AI4Tg--mrJ2A))
- Can subscribe to channels
- Can create playlists (that are stored on the server)
- Search and browse your downloaded videos, playlists, or channels (the search is very basic though)
- User accounts
- Videos can be tagged based on your downloader's TYTD tag (to determine which instance downloaded it)
- Plugins from [CPKG](https://cpkg.tesseslangauge.com/) or any CPKG compliant server
- Can download YouTube videos either Low quality (but doesn't) require [ffmpeg](https://ffmpeg.org/), you can also download individual streams (also doesn't need [ffmpeg](https://ffmpeg.org/)), or to MP4 (doesn't work on wii due to libx264 having illegal instruction), MKV (so no transcode), MP3 or FLAC (these do need [ffmpeg](https://ffmpeg.org/) in your PATH however)
- Runs on the Wii using the [Wii Linux Continuation Project](https://wiibrew.org/wiki/Wii-Linux#Wii_Linux_Continuation_Project) (albeit extremely slowly, despite this that's where I run it)

# What this project uses (attribution)
I don't feel like storing their licenses in my project, so I link to their projects instead

- [SQLite3](https://www.sqlite.org/) for it's database (embedded into TessesFramework)
- [BeerCSS](https://www.beercss.com/) for its webui, licensed under MIT
- [HTMX](https://htmx.org/) for the SPA experience
- [FFmpeg](https://ffmpeg.org/) if you convert the videos, uses the cli
- [YouTubeExplode](https://github.com/Tyrrrz/YoutubeExplode) for some of its json payloads
- [NewPipe](https://newpipe.net/) for some of its json payloads
- [Material Symbols Font](https://fonts.google.com/icons) (wget from beercss css files)
- [VideoJS](https://videojs.org/) for video player
- [CrossLang](https://crosslang.tesseslanguage.com/) My programming language


## To Install
Install [crosslang](https://crosslang.tesseslanguage.com/downloads/index.html)

from source:
```bash
git clone https://onedev.site.tesses.net/tytd2025
cd tytd2025/Tesses.YouTubeDownloader.Server
crosslang install-webapp
```

from package manager:
```bash
crosslang install-webapp Tesses.YouTubeDownloader.Server
```


## To Run

Save to videos:
```bash
crosslang webapp tytd2025 --port=3255
```

Save to a folder (unix):
```bash
# Replace /path/to/tytd with the folder you want
export TYTDDIR=/path/to/tytd
crosslang webapp tytd2025 --port=3255
```

Save to a folder (windows):
```batch
REM Replace C:\path\to\tytd with the folder you want
SET TYTDDIR=C:\path\to\tytd
crosslang webapp tytd2025 --port=3255
```

License is GPLv3-or-later