AI prompts
base on A rusty Youtube client. [![Donations Received][liberapay-donations-received-url]][liberapay-link]
[![Contributors][contributors-shield]][contributors-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![Forks][forks-shield]][forks-url]
[![AGPL-3.0 License][license-shield]][license-url]
# RustyTube
A desktop Youtube client written in Rust. Built with Leptos and Tauri; designed with Tailwind and DaisyUI.
## Why should I use it?
- 🖥️ Why not? Try it out [here][website-url]. 🖥️
- ✨ WebM support for 4k 60fps. ✨
- 👎 Dislike counts. 👎
- 🦀 Built with Rust. 🦀
- 🦋 Beautiful and modern UI. 🦋
- 🎨 30+ themes, including a custom RustyTube theme based on [Sweet Ambar Blue Dark][sweet-theme-url]. 🎨
- 💩 Not an Electron app. 💩
## Screenshots
<div>
<img src="/screenshots/rt_video_dracula.png" width=300/>
<img src="/screenshots/rt_video_rustytube.png" width=300/>
<img src="/screenshots/rt_video_garden.png" width=300/>
<img src="/screenshots/rt_video_retro.png" width=300/>
</div>
<br></br>
<div>
<img src="/screenshots/rt_subs_dracula.png" width=300/>
<img src="/screenshots/rt_subs_rustytube.png" width=300/>
<img src="/screenshots/rt_subs_garden.png" width=300/>
<img src="/screenshots/rt_subs_retro.png" width=300/>
</div>
## How do I use RustyTube?
| Platform | Link |
| ------------- | ------------------------------------------------- |
| Web | [rustytube.rs][website-url] |
| Linux | [rustytube.rs][website-url] |
| Windows (exe) | [RustyTube_v0.2.0_x64-setup.exe][windows-exe-url] |
| Mac | [rustytube.rs][website-url] |
### Browser Support
| Browser | Comment |
| -------------- | ---------------------------------------------------------- |
| Firefox | Works perfectly. Testing is done mainly on Firefox. |
| Chromium-based | Works great. Might be some ui/ux issues. |
| Webkit-based | Unsupported and a massive PITA. Maybe it will work... idk. |
## Building RustyTube
Install Rust and Tauri. Go to the Tauri [prequisites](https://tauri.app/v1/guides/getting-started/prerequisites) page.
After installing Rust and Tauri, execute the following script in the base of your RustyTube directory:
```
rustup update stable-unknown-linux-gnu;
rustup component add rust-src --toolchain stable-unknown-linux-gnu;
rustup target add wasm32-unknown-unknown;
cargo install trunk;
cargo install tauri-cli;
cd frontend;
npm install;
```
## FAQ
### Windows says that RustyTube is a virus. Is it safe to install?
It's totally safe and not a virus; I'm 10 billion percent sure - trust me bro.
## Common Issues
### Video player has a green screen on Webkit-based browsers.
Change the video format. Use the cog located in the bottom right of the video player.
### No audio?
Change the video format. Use the cog located in the bottom right of the video player.
### Video won't load, changing formats doesn't fix it.
If you are trying to watch a music video, RustyTube currently does not work with VEVO videos.
## What's the recipe?
- [Leptos][leptos-url] - A modern Rust web framework.
- [Tailwind][tailwind-url] - A CSS framework.
- [DaisyUI][daisyui-url] - A Tailwind component library.
- [Tauri][tauri-url] - A Rust desktop application framework.
## Donations
RustyTube is a free and open-source project with well over _500 hours_ in development and testing time.
Support the project and its further development via donations.
### Liberapay:
[![Donate via Liberapay][liberapay-donate-button-url]][liberapay-link]
### Monero (XMR):
<img src="/assets/qr_codes/monero_address.svg" width=144 />
```
42bhoxB2DT125WAxLHHZAm2jUpEWUJBe1HAKtmiZsjW6X2r3z8FBqQFEhZdkywuQrrKfnehhhaJexQjVKpahBooq3zYKNjf
```
### Bitcoin (BTC):
<img src="/assets/qr_codes/bitcoin_address.svg" width=144 />
```
bc1q8r90zc8j8a2rvkq4ds8374pxh3rpccxgnjx5x2
```
## Roadmap
RustyTube is still in early development. There are things missing and stuff that I would like to add.
- Mobile UI and Mobile App (Significant donations/support required for this)
- Desktop Integration with Tauri
- Full SponsorBlock API Support
- Full Playlist Support
## Alternatives
### Desktop
[Freetube][freetube-github-url] - An open source desktop YouTube player built with privacy in mind.
### Mobile
[Newpipe][newpipe-github-url] - A libre lightweight streaming front-end for Android.
[Libretube][libretube-github-url] - An alternative frontend for YouTube, for Android.
[Clipious][clipious-github-url] - Android client application for invidious, the privacy focused youtube front end.
[website-url]: https://rustytube.rs
[sweet-theme-url]: https://github.com/EliverLara/Sweet/tree/Ambar-Blue
[leptos-url]: https://leptos.dev
[tailwind-url]: https://tailwindcss.com
[daisyui-url]: https://daisyui.com
[tauri-url]: https://tauri.app
<!-- [linux-x86_64-generic-url]: https://github.com/opensourcecheemsburgers/RustyTube/releases/download/v0.2.0/RustyTube_v0.2.0.tar.gz -->
<!-- [linux-x86_64-appimage-url]: https://github.com/opensourcecheemsburgers/RustyTube/releases/download/v0.2.0/RustyTube_v0.2.0_amd64.AppImage -->
<!-- [aur-package-url]: https://aur.archlinux.org/packages/rustytube -->
<!-- [debian-package-url]: https://github.com/opensourcecheemsburgers/RustyTube/releases/download/v0.2.0/RustyTube_v0.2.0_amd64.deb -->
[windows-exe-url]: https://github.com/opensourcecheemsburgers/RustyTube/releases/download/v0.2.0/RustyTube_v0.2.0_x64-setup.exe
<!-- [windows-msi-url]: https://github.com/opensourcecheemsburgers/RustyTube/releases/download/v0.2.0/RustyTube_v0.2.0_x64_en-US.msi -->
[liberapay-link]: https://liberapay.com/opensourcecheemsburgers/donate
[liberapay-donate-button-url]: https://liberapay.com/assets/widgets/donate.svg
[liberapay-donations-received-url]: https://img.shields.io/liberapay/receives/opensourcecheemsburgers.svg?logo=liberapay&style=for-the-badge
[monero-address-svg-url]: assets/qr_codes/monero_address.svg
[bitcoin-address-svg-url]: assets/qr_codes/bitcoin_address.svg
[contributors-shield]: https://img.shields.io/github/contributors/opensourcecheemsburgers/RustyTube.svg?style=for-the-badge
[contributors-url]: https://github.com/opensourcecheemsburgers/RustyTube/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/opensourcecheemsburgers/RustyTube.svg?style=for-the-badge
[forks-url]: https://github.com/opensourcecheemsburgers/RustyTube/network/members
[stars-shield]: https://img.shields.io/github/stars/opensourcecheemsburgers/RustyTube.svg?style=for-the-badge
[stars-url]: https://github.com/opensourcecheemsburgers/RustyTube/stargazers
[issues-shield]: https://img.shields.io/github/issues/opensourcecheemsburgers/RustyTube.svg?style=for-the-badge
[issues-url]: https://github.com/opensourcecheemsburgers/RustyTube/issues
[license-shield]: https://img.shields.io/github/license/opensourcecheemsburgers/RustyTube.svg?style=for-the-badge
[license-url]: https://github.com/opensourcecheemsburgers/RustyTube/blob/master/LICENSE.txt
[freetube-github-url]: https://github.com/FreeTubeApp/FreeTube
[newpipe-github-url]: https://github.com/TeamNewPipe/NewPipe
[libretube-github-url]: https://github.com/libre-tube/LibreTube
[clipious-github-url]: https://github.com/lamarios/clipious
", Assign "at most 3 tags" to the expected json: {"id":"7385","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"