about summary refs log tree commit diff stats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Cargo.lock350
-rw-r--r--Cargo.toml61
-rw-r--r--crates/bytes/Cargo.toml24
-rw-r--r--crates/bytes/src/lib.rs1
-rw-r--r--crates/libmpv2/Cargo.toml7
-rw-r--r--crates/yt_dlp/Cargo.toml33
-rw-r--r--yt/Cargo.toml61
-rw-r--r--yt/src/app.rs (renamed from src/app.rs)0
-rw-r--r--yt/src/cache/mod.rs (renamed from src/cache/mod.rs)0
-rw-r--r--yt/src/cli.rs (renamed from src/cli.rs)0
-rw-r--r--yt/src/comments/comment.rs (renamed from src/comments/comment.rs)0
-rw-r--r--yt/src/comments/display.rs (renamed from src/comments/display.rs)0
-rw-r--r--yt/src/comments/mod.rs (renamed from src/comments/mod.rs)0
-rw-r--r--yt/src/config/default.rs (renamed from src/config/default.rs)0
-rw-r--r--yt/src/config/definitions.rs (renamed from src/config/definitions.rs)0
-rw-r--r--yt/src/config/file_system.rs (renamed from src/config/file_system.rs)0
-rw-r--r--yt/src/config/mod.rs (renamed from src/config/mod.rs)0
-rw-r--r--yt/src/constants.rs (renamed from src/constants.rs)0
-rw-r--r--yt/src/download/download_options.rs (renamed from src/download/download_options.rs)0
-rw-r--r--yt/src/download/mod.rs (renamed from src/download/mod.rs)0
-rw-r--r--yt/src/main.rs (renamed from src/main.rs)0
-rw-r--r--yt/src/select/cmds.rs (renamed from src/select/cmds.rs)0
-rw-r--r--yt/src/select/mod.rs (renamed from src/select/mod.rs)0
-rw-r--r--yt/src/select/selection_file/duration.rs (renamed from src/select/selection_file/duration.rs)0
-rw-r--r--yt/src/select/selection_file/help.str (renamed from src/select/selection_file/help.str)0
-rw-r--r--yt/src/select/selection_file/help.str.license (renamed from src/select/selection_file/help.str.license)0
-rw-r--r--yt/src/select/selection_file/mod.rs (renamed from src/select/selection_file/mod.rs)0
-rw-r--r--yt/src/status/mod.rs (renamed from src/status/mod.rs)0
-rw-r--r--yt/src/storage/mod.rs (renamed from src/storage/mod.rs)0
-rw-r--r--yt/src/storage/subscriptions.rs (renamed from src/storage/subscriptions.rs)0
-rw-r--r--yt/src/storage/video_database/downloader.rs (renamed from src/storage/video_database/downloader.rs)0
-rw-r--r--yt/src/storage/video_database/extractor_hash.rs (renamed from src/storage/video_database/extractor_hash.rs)0
-rw-r--r--yt/src/storage/video_database/getters.rs (renamed from src/storage/video_database/getters.rs)0
-rw-r--r--yt/src/storage/video_database/mod.rs (renamed from src/storage/video_database/mod.rs)0
-rw-r--r--yt/src/storage/video_database/schema.sql (renamed from src/storage/video_database/schema.sql)0
-rw-r--r--yt/src/storage/video_database/setters.rs (renamed from src/storage/video_database/setters.rs)0
-rw-r--r--yt/src/subscribe/mod.rs (renamed from src/subscribe/mod.rs)0
-rw-r--r--yt/src/update/mod.rs (renamed from src/update/mod.rs)0
-rw-r--r--yt/src/videos/display/format_video.rs (renamed from src/videos/display/format_video.rs)0
-rw-r--r--yt/src/videos/display/mod.rs (renamed from src/videos/display/mod.rs)0
-rw-r--r--yt/src/videos/mod.rs (renamed from src/videos/mod.rs)0
-rw-r--r--yt/src/watch/events/mod.rs (renamed from src/watch/events/mod.rs)0
-rw-r--r--yt/src/watch/events/playlist_handler.rs (renamed from src/watch/events/playlist_handler.rs)0
-rw-r--r--yt/src/watch/mod.rs (renamed from src/watch/mod.rs)0
44 files changed, 344 insertions, 193 deletions
diff --git a/Cargo.lock b/Cargo.lock
index aa719bd..180bf13 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
 
 [[package]]
 name = "addr2line"
-version = "0.24.1"
+version = "0.24.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375"
+checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
 dependencies = [
  "gimli",
 ]
@@ -110,15 +110,15 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.87"
+version = "1.0.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8"
+checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6"
 
 [[package]]
 name = "arrayref"
-version = "0.3.8"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a"
+checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
 
 [[package]]
 name = "arrayvec"
@@ -137,9 +137,9 @@ dependencies = [
 
 [[package]]
 name = "autocfg"
-version = "1.3.0"
+version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
 
 [[package]]
 name = "backtrace"
@@ -174,7 +174,7 @@ version = "0.70.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f"
 dependencies = [
- "bitflags",
+ "bitflags 2.6.0",
  "cexpr",
  "clang-sys",
  "itertools",
@@ -190,6 +190,12 @@ dependencies = [
 
 [[package]]
 name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
 version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
@@ -233,22 +239,22 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.0.0"
+version = "1.2.1"
 dependencies = [
  "serde",
 ]
 
 [[package]]
 name = "bytes"
-version = "1.7.1"
+version = "1.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
+checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3"
 
 [[package]]
 name = "cc"
-version = "1.1.18"
+version = "1.1.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476"
+checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945"
 dependencies = [
  "shlex",
 ]
@@ -304,9 +310,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.17"
+version = "4.5.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac"
+checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -314,9 +320,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.17"
+version = "4.5.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73"
+checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54"
 dependencies = [
  "anstream",
  "anstyle",
@@ -326,9 +332,9 @@ dependencies = [
 
 [[package]]
 name = "clap_derive"
-version = "4.5.13"
+version = "4.5.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0"
+checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab"
 dependencies = [
  "heck",
  "proc-macro2",
@@ -400,6 +406,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
 
 [[package]]
+name = "crossbeam"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-epoch",
+ "crossbeam-queue",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
 name = "crossbeam-queue"
 version = "0.3.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -528,9 +575,9 @@ dependencies = [
 
 [[package]]
 name = "futures"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -543,9 +590,9 @@ dependencies = [
 
 [[package]]
 name = "futures-channel"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
 dependencies = [
  "futures-core",
  "futures-sink",
@@ -553,15 +600,15 @@ dependencies = [
 
 [[package]]
 name = "futures-core"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
 
 [[package]]
 name = "futures-executor"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
 dependencies = [
  "futures-core",
  "futures-task",
@@ -581,15 +628,15 @@ dependencies = [
 
 [[package]]
 name = "futures-io"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
 
 [[package]]
 name = "futures-macro"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -598,21 +645,21 @@ dependencies = [
 
 [[package]]
 name = "futures-sink"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
 
 [[package]]
 name = "futures-task"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
 
 [[package]]
 name = "futures-util"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -649,9 +696,9 @@ dependencies = [
 
 [[package]]
 name = "gimli"
-version = "0.31.0"
+version = "0.31.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64"
+checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
 
 [[package]]
 name = "glob"
@@ -670,12 +717,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "hashbrown"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb"
+
+[[package]]
 name = "hashlink"
 version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af"
 dependencies = [
- "hashbrown",
+ "hashbrown 0.14.5",
 ]
 
 [[package]]
@@ -731,9 +784,9 @@ dependencies = [
 
 [[package]]
 name = "iana-time-zone"
-version = "0.1.60"
+version = "0.1.61"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
 dependencies = [
  "android_system_properties",
  "core-foundation-sys",
@@ -764,12 +817,12 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.5.0"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
+checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
 dependencies = [
  "equivalent",
- "hashbrown",
+ "hashbrown 0.15.0",
 ]
 
 [[package]]
@@ -812,9 +865,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "js-sys"
-version = "0.3.70"
+version = "0.3.72"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
+checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9"
 dependencies = [
  "wasm-bindgen",
 ]
@@ -830,9 +883,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.158"
+version = "0.2.159"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
+checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5"
 
 [[package]]
 name = "libloading"
@@ -854,8 +907,10 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
 name = "libmpv2"
 version = "4.0.0"
 dependencies = [
+ "crossbeam",
  "libmpv2-sys",
  "log",
+ "sdl2",
  "thiserror",
 ]
 
@@ -1020,18 +1075,18 @@ dependencies = [
 
 [[package]]
 name = "object"
-version = "0.36.4"
+version = "0.36.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a"
+checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e"
 dependencies = [
  "memchr",
 ]
 
 [[package]]
 name = "once_cell"
-version = "1.19.0"
+version = "1.20.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
 
 [[package]]
 name = "owo-colors"
@@ -1091,9 +1146,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
 [[package]]
 name = "pest"
-version = "2.7.12"
+version = "2.7.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea"
+checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442"
 dependencies = [
  "memchr",
  "thiserror",
@@ -1102,9 +1157,9 @@ dependencies = [
 
 [[package]]
 name = "pest_derive"
-version = "2.7.12"
+version = "2.7.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "664d22978e2815783adbdd2c588b455b1bd625299ce36b2a99881ac9627e6d8d"
+checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd"
 dependencies = [
  "pest",
  "pest_generator",
@@ -1112,9 +1167,9 @@ dependencies = [
 
 [[package]]
 name = "pest_generator"
-version = "2.7.12"
+version = "2.7.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2d5487022d5d33f4c30d91c22afa240ce2a644e87fe08caad974d4eab6badbe"
+checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e"
 dependencies = [
  "pest",
  "pest_meta",
@@ -1125,9 +1180,9 @@ dependencies = [
 
 [[package]]
 name = "pest_meta"
-version = "2.7.12"
+version = "2.7.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0091754bbd0ea592c4deb3a122ce8ecbb0753b738aa82bc055fcc2eccc8d8174"
+checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d"
 dependencies = [
  "once_cell",
  "pest",
@@ -1169,15 +1224,15 @@ dependencies = [
 
 [[package]]
 name = "pkg-config"
-version = "0.3.30"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
 
 [[package]]
 name = "portable-atomic"
-version = "1.7.0"
+version = "1.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
+checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2"
 
 [[package]]
 name = "ppv-lite86"
@@ -1200,18 +1255,18 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.86"
+version = "1.0.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "pyo3"
-version = "0.22.2"
+version = "0.22.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "831e8e819a138c36e212f3af3fd9eeffed6bf1510a805af35b0edee5ffa59433"
+checksum = "00e89ce2565d6044ca31a3eb79a334c3a79a841120a98f64eea9f579564cb691"
 dependencies = [
  "cfg-if",
  "indoc",
@@ -1227,9 +1282,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-build-config"
-version = "0.22.2"
+version = "0.22.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e8730e591b14492a8945cdff32f089250b05f5accecf74aeddf9e8272ce1fa8"
+checksum = "d8afbaf3abd7325e08f35ffb8deb5892046fcb2608b703db6a583a5ba4cea01e"
 dependencies = [
  "once_cell",
  "target-lexicon",
@@ -1237,9 +1292,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-ffi"
-version = "0.22.2"
+version = "0.22.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e97e919d2df92eb88ca80a037969f44e5e70356559654962cbb3316d00300c6"
+checksum = "ec15a5ba277339d04763f4c23d85987a5b08cbb494860be141e6a10a8eb88022"
 dependencies = [
  "libc",
  "pyo3-build-config",
@@ -1247,9 +1302,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros"
-version = "0.22.2"
+version = "0.22.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb57983022ad41f9e683a599f2fd13c3664d7063a3ac5714cae4b7bee7d3f206"
+checksum = "15e0f01b5364bcfbb686a52fc4181d412b708a68ed20c330db9fc8d2c2bf5a43"
 dependencies = [
  "proc-macro2",
  "pyo3-macros-backend",
@@ -1259,9 +1314,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros-backend"
-version = "0.22.2"
+version = "0.22.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec480c0c51ddec81019531705acac51bcdbeae563557c982aa8263bb96880372"
+checksum = "a09b550200e1e5ed9176976d0060cbc2ea82dc8515da07885e7b8153a85caacb"
 dependencies = [
  "heck",
  "proc-macro2",
@@ -1311,18 +1366,18 @@ dependencies = [
 
 [[package]]
 name = "redox_syscall"
-version = "0.5.3"
+version = "0.5.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
+checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f"
 dependencies = [
- "bitflags",
+ "bitflags 2.6.0",
 ]
 
 [[package]]
 name = "regex"
-version = "1.10.6"
+version = "1.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
+checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -1332,9 +1387,9 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.4.7"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -1343,9 +1398,9 @@ dependencies = [
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.4"
+version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
 
 [[package]]
 name = "rsa"
@@ -1381,11 +1436,11 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
 
 [[package]]
 name = "rustix"
-version = "0.38.36"
+version = "0.38.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36"
+checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
 dependencies = [
- "bitflags",
+ "bitflags 2.6.0",
  "errno",
  "libc",
  "linux-raw-sys",
@@ -1405,6 +1460,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
+name = "sdl2"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b498da7d14d1ad6c839729bd4ad6fc11d90a57583605f3b4df2cd709a9cd380"
+dependencies = [
+ "bitflags 1.3.2",
+ "lazy_static",
+ "libc",
+ "sdl2-sys",
+]
+
+[[package]]
+name = "sdl2-sys"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "951deab27af08ed9c6068b7b0d05a93c91f0a8eb16b6b816a5e73452a43521d3"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "version-compare",
+]
+
+[[package]]
 name = "serde"
 version = "1.0.210"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1438,9 +1516,9 @@ dependencies = [
 
 [[package]]
 name = "serde_spanned"
-version = "0.6.7"
+version = "0.6.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
+checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
 dependencies = [
  "serde",
 ]
@@ -1582,7 +1660,7 @@ checksum = "d4d8060b456358185f7d50c55d9b5066ad956956fddec42ee2e8567134a8936e"
 dependencies = [
  "atoi",
  "byteorder",
- "bytes 1.7.1",
+ "bytes 1.7.2",
  "crc",
  "crossbeam-queue",
  "either",
@@ -1592,7 +1670,7 @@ dependencies = [
  "futures-intrusive",
  "futures-io",
  "futures-util",
- "hashbrown",
+ "hashbrown 0.14.5",
  "hashlink",
  "hex",
  "indexmap",
@@ -1660,9 +1738,9 @@ checksum = "64bb4714269afa44aef2755150a0fc19d756fb580a67db8885608cf02f47d06a"
 dependencies = [
  "atoi",
  "base64",
- "bitflags",
+ "bitflags 2.6.0",
  "byteorder",
- "bytes 1.7.1",
+ "bytes 1.7.2",
  "crc",
  "digest",
  "dotenvy",
@@ -1702,7 +1780,7 @@ checksum = "6fa91a732d854c5d7726349bb4bb879bb9478993ceb764247660aee25f67c2f8"
 dependencies = [
  "atoi",
  "base64",
- "bitflags",
+ "bitflags 2.6.0",
  "byteorder",
  "crc",
  "dotenvy",
@@ -1793,9 +1871,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
 
 [[package]]
 name = "syn"
-version = "2.0.77"
+version = "2.0.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
+checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1810,9 +1888,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
 
 [[package]]
 name = "tempfile"
-version = "3.12.0"
+version = "3.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
+checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b"
 dependencies = [
  "cfg-if",
  "fastrand",
@@ -1832,18 +1910,18 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.63"
+version = "1.0.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.63"
+version = "1.0.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1882,7 +1960,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998"
 dependencies = [
  "backtrace",
- "bytes 1.7.1",
+ "bytes 1.7.2",
  "libc",
  "mio",
  "pin-project-lite",
@@ -1937,9 +2015,9 @@ dependencies = [
 
 [[package]]
 name = "toml_edit"
-version = "0.22.20"
+version = "0.22.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d"
+checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
 dependencies = [
  "indexmap",
  "serde",
@@ -1998,15 +2076,15 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
 
 [[package]]
 name = "ucd-trie"
-version = "0.1.6"
+version = "0.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
+checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
 
 [[package]]
 name = "unicode-bidi"
-version = "0.3.15"
+version = "0.3.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893"
 
 [[package]]
 name = "unicode-ident"
@@ -2016,24 +2094,24 @@ checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
 
 [[package]]
 name = "unicode-normalization"
-version = "0.1.23"
+version = "0.1.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956"
 dependencies = [
  "tinyvec",
 ]
 
 [[package]]
 name = "unicode-properties"
-version = "0.1.2"
+version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52ea75f83c0137a9b98608359a5f1af8144876eb67bcb1ce837368e906a9f524"
+checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0"
 
 [[package]]
 name = "unicode-segmentation"
-version = "1.11.0"
+version = "1.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
 
 [[package]]
 name = "unicode_categories"
@@ -2072,6 +2150,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
 
 [[package]]
+name = "version-compare"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
+
+[[package]]
 name = "version_check"
 version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2091,9 +2175,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.93"
+version = "0.2.95"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
+checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e"
 dependencies = [
  "cfg-if",
  "once_cell",
@@ -2102,9 +2186,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.93"
+version = "0.2.95"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
+checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358"
 dependencies = [
  "bumpalo",
  "log",
@@ -2117,9 +2201,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.93"
+version = "0.2.95"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
+checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -2127,9 +2211,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.93"
+version = "0.2.95"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
+checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2140,9 +2224,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.93"
+version = "0.2.95"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
+checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d"
 
 [[package]]
 name = "whoami"
@@ -2322,9 +2406,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
 name = "winnow"
-version = "0.6.18"
+version = "0.6.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
+checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b"
 dependencies = [
  "memchr",
 ]
@@ -2341,7 +2425,7 @@ version = "1.2.1"
 dependencies = [
  "anyhow",
  "blake3",
- "bytes 1.0.0",
+ "bytes 1.2.1",
  "chrono",
  "chrono-humanize",
  "clap",
@@ -2366,9 +2450,9 @@ dependencies = [
 
 [[package]]
 name = "yt_dlp"
-version = "0.1.0"
+version = "1.2.1"
 dependencies = [
- "bytes 1.0.0",
+ "bytes 1.2.1",
  "log",
  "pyo3",
  "serde",
diff --git a/Cargo.toml b/Cargo.toml
index cd39eb2..1fa9668 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -8,46 +8,34 @@
 # You should have received a copy of the License along with this program.
 # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
 
-[package]
-name = "yt"
-version = "1.2.1"
+[workspace]
+resolver = "2"
+members = [
+    "crates/bytes",
+    "crates/yt_dlp",
+    "yt",
+]
+
+[workspace.package]
 edition = "2021"
+version = "1.2.1"
+rust-version = "1.80.0"
+authors = ["Benedikt Peetz <benedikt.peetz@b-peetz.de>"]
+repository = "https://git.vhack.eu/soispha/clients/yt"
+license = "GPL-3.0-or-later"
+description = "A fully featured command line YouTube client"
 
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+[workspace.dependencies]
+# Own Crates
+yt_dlp = { path = "./crates/yt_dlp" }
+bytes = { path = "./crates/bytes" }
+libmpv2 = { path = "./crates/libmpv2" }
 
-[dependencies]
-anyhow = "1.0.87"
-blake3 = "1.5.4"
-chrono = { version = "0.4.38", features = ["now"] }
-chrono-humanize = "0.2.3"
-clap = { version = "4.5.17", features = ["derive"] }
-futures = "0.3.30"
+# Shared
 log = "0.4.22"
-regex = "1.10.6"
 serde = { version = "1.0.210", features = ["derive"] }
 serde_json = "1.0.128"
-sqlx = { version = "0.8.2", features = ["runtime-tokio", "sqlite"] }
-stderrlog = "0.6.0"
-tempfile = "3.12.0"
-tokio = { version = "1.40.0", features = [
-  "rt-multi-thread",
-  "macros",
-  "process",
-  "time",
-  "io-std",
-] }
 url = { version = "2.5.2", features = ["serde"] }
-xdg = "2.5.2"
-yt_dlp = { path = "./crates/yt_dlp/" }
-libmpv2 = { path = "./crates/libmpv2" }
-bytes = { path = "./crates/bytes", features = ["serde"] }
-trinitry = { version = "0.2.2" }
-toml = "0.8.19"
-nucleo-matcher = "0.3.1"
-owo-colors = "4.1.0"
-
-[[bin]]
-name = "yt"
 
 [profile.profiling]
 inherits = "release"
@@ -59,7 +47,7 @@ codegen-units = 1
 panic = "abort"
 split-debuginfo = "off"
 
-[lints.rust]
+[workspace.lints.rust]
 # rustc lint groups https://doc.rust-lang.org/rustc/lints/groups.html
 warnings = "warn"
 future_incompatible = { level = "warn", priority = -1 }
@@ -90,7 +78,7 @@ unused_lifetimes = "warn"
 unused_qualifications = "warn"
 variant_size_differences = "warn"
 
-[lints.rustdoc]
+[workspace.lints.rustdoc]
 # rustdoc lints https://doc.rust-lang.org/rustdoc/lints.html
 broken_intra_doc_links = "warn"
 private_intra_doc_links = "warn"
@@ -100,7 +88,7 @@ invalid_codeblock_attributes = "warn"
 invalid_rust_codeblocks = "warn"
 bare_urls = "warn"
 
-[lints.clippy]
+[workspace.lints.clippy]
 # clippy allowed by default
 dbg_macro = "warn"
 
@@ -112,4 +100,3 @@ style = { level = "warn", priority = -1 }
 complexity = { level = "warn", priority = -1 }
 perf = { level = "warn", priority = -1 }
 pedantic = { level = "warn", priority = -1 }
-
diff --git a/crates/bytes/Cargo.toml b/crates/bytes/Cargo.toml
index 0dc9833..4439aa8 100644
--- a/crates/bytes/Cargo.toml
+++ b/crates/bytes/Cargo.toml
@@ -10,14 +10,24 @@
 
 [package]
 name = "bytes"
-version = "1.0.0"
-edition = "2021"
-license = "GPL-3.0-or-later"
 description = "Simple byte formatting utilities"
+keywords = []
+categories = []
+version.workspace = true
+edition.workspace = true
+authors.workspace = true
+license.workspace = true
+repository.workspace = true
+rust-version.workspace = true
+publish = false
 
 [dependencies]
-serde = { version = "1.0.210", optional = true }
+serde.workspace = true
 
-[features]
-default = ["serde"]
-serde = ["dep:serde"]
+[dev-dependencies]
+
+[lints]
+workspace = true
+
+[package.metadata.docs.rs]
+all-features = true
diff --git a/crates/bytes/src/lib.rs b/crates/bytes/src/lib.rs
index 113e8d5..78d3c4e 100644
--- a/crates/bytes/src/lib.rs
+++ b/crates/bytes/src/lib.rs
@@ -26,7 +26,6 @@ const GB: u64 = 1000 * MB;
 const TB: u64 = 1000 * GB;
 
 pub mod error;
-#[cfg(feature = "serde")]
 pub mod serde;
 
 #[derive(Clone, Copy)]
diff --git a/crates/libmpv2/Cargo.toml b/crates/libmpv2/Cargo.toml
index d92a012..8d45872 100644
--- a/crates/libmpv2/Cargo.toml
+++ b/crates/libmpv2/Cargo.toml
@@ -8,9 +8,6 @@
 # You should have received a copy of the License along with this program.
 # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
 
-[workspace]
-members = ["libmpv2-sys"]
-
 [package]
 name = "libmpv2"
 version = "4.0.0"
@@ -23,8 +20,8 @@ keywords = ["media", "playback", "mpv", "libmpv"]
 
 [dependencies]
 libmpv2-sys = { path = "libmpv2-sys", version = "4.0.0" }
-log = "0.4.22"
-thiserror = "1.0.63"
+thiserror = "1.0.64"
+log = { version = "0.4.22" }
 
 [dev-dependencies]
 crossbeam = "0.8"
diff --git a/crates/yt_dlp/Cargo.toml b/crates/yt_dlp/Cargo.toml
index 6cedf5b..0f1d248 100644
--- a/crates/yt_dlp/Cargo.toml
+++ b/crates/yt_dlp/Cargo.toml
@@ -11,15 +11,28 @@
 [package]
 name = "yt_dlp"
 description = "A wrapper around the python yt_dlp library"
-version = "0.1.0"
-edition = "2021"
-
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+keywords = []
+categories = []
+version.workspace = true
+edition.workspace = true
+authors.workspace = true
+license.workspace = true
+repository.workspace = true
+rust-version.workspace = true
+publish = false
 
 [dependencies]
-log = "0.4.22"
-pyo3 = { version = "0.22.2", features = ["auto-initialize", "gil-refs"] }
-serde = { version = "1.0.210", features = ["derive"] }
-serde_json = "1.0.128"
-url = { version = "2.5.2", features = ["serde"] }
-bytes = { path = "../bytes" }
+pyo3 = { version = "0.22.4", features = ["auto-initialize", "gil-refs"] }
+bytes.workspace = true
+log.workspace = true
+serde.workspace = true
+serde_json.workspace = true
+url.workspace = true
+
+[dev-dependencies]
+
+[lints]
+workspace = true
+
+[package.metadata.docs.rs]
+all-features = true
diff --git a/yt/Cargo.toml b/yt/Cargo.toml
new file mode 100644
index 0000000..4cc712c
--- /dev/null
+++ b/yt/Cargo.toml
@@ -0,0 +1,61 @@
+# yt - A fully featured command line YouTube client
+#
+# Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of Yt.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
+[package]
+name = "yt"
+description = "A fully featured command line YouTube client"
+keywords = []
+categories = []
+default-run = "yt"
+version.workspace = true
+edition.workspace = true
+authors.workspace = true
+license.workspace = true
+repository.workspace = true
+rust-version.workspace = true
+publish = false
+
+[dependencies]
+anyhow = "1.0.89"
+blake3 = "1.5.4"
+chrono = { version = "0.4.38", features = ["now"] }
+chrono-humanize = "0.2.3"
+clap = { version = "4.5.20", features = ["derive"] }
+futures = "0.3.31"
+nucleo-matcher = "0.3.1"
+owo-colors = "4.1.0"
+regex = "1.11.0"
+sqlx = { version = "0.8.2", features = ["runtime-tokio", "sqlite"] }
+stderrlog = "0.6.0"
+tempfile = "3.13.0"
+tokio = { version = "1.40.0", features = [ "rt-multi-thread", "macros", "process", "time", "io-std", ] }
+toml = "0.8.19"
+trinitry = { version = "0.2.2" }
+xdg = "2.5.2"
+bytes.workspace = true
+libmpv2.workspace = true
+log.workspace = true
+serde.workspace = true
+serde_json.workspace = true
+url.workspace = true
+yt_dlp.workspace = true
+
+[[bin]]
+name = "yt"
+doc = false
+path = "src/main.rs"
+
+[dev-dependencies]
+
+[lints]
+workspace = true
+
+[package.metadata.docs.rs]
+all-features = true
diff --git a/src/app.rs b/yt/src/app.rs
index b7d136e..b7d136e 100644
--- a/src/app.rs
+++ b/yt/src/app.rs
diff --git a/src/cache/mod.rs b/yt/src/cache/mod.rs
index a3e08c9..a3e08c9 100644
--- a/src/cache/mod.rs
+++ b/yt/src/cache/mod.rs
diff --git a/src/cli.rs b/yt/src/cli.rs
index d19586e..d19586e 100644
--- a/src/cli.rs
+++ b/yt/src/cli.rs
diff --git a/src/comments/comment.rs b/yt/src/comments/comment.rs
index 752c510..752c510 100644
--- a/src/comments/comment.rs
+++ b/yt/src/comments/comment.rs
diff --git a/src/comments/display.rs b/yt/src/comments/display.rs
index 7000063..7000063 100644
--- a/src/comments/display.rs
+++ b/yt/src/comments/display.rs
diff --git a/src/comments/mod.rs b/yt/src/comments/mod.rs
index 5fbc3fb..5fbc3fb 100644
--- a/src/comments/mod.rs
+++ b/yt/src/comments/mod.rs
diff --git a/src/config/default.rs b/yt/src/config/default.rs
index 59063f5..59063f5 100644
--- a/src/config/default.rs
+++ b/yt/src/config/default.rs
diff --git a/src/config/definitions.rs b/yt/src/config/definitions.rs
index d37e6da..d37e6da 100644
--- a/src/config/definitions.rs
+++ b/yt/src/config/definitions.rs
diff --git a/src/config/file_system.rs b/yt/src/config/file_system.rs
index 5751583..5751583 100644
--- a/src/config/file_system.rs
+++ b/yt/src/config/file_system.rs
diff --git a/src/config/mod.rs b/yt/src/config/mod.rs
index ea40055..ea40055 100644
--- a/src/config/mod.rs
+++ b/yt/src/config/mod.rs
diff --git a/src/constants.rs b/yt/src/constants.rs
index 54cae89..54cae89 100644
--- a/src/constants.rs
+++ b/yt/src/constants.rs
diff --git a/src/download/download_options.rs b/yt/src/download/download_options.rs
index e93170a..e93170a 100644
--- a/src/download/download_options.rs
+++ b/yt/src/download/download_options.rs
diff --git a/src/download/mod.rs b/yt/src/download/mod.rs
index 56910f9..56910f9 100644
--- a/src/download/mod.rs
+++ b/yt/src/download/mod.rs
diff --git a/src/main.rs b/yt/src/main.rs
index 37283a1..37283a1 100644
--- a/src/main.rs
+++ b/yt/src/main.rs
diff --git a/src/select/cmds.rs b/yt/src/select/cmds.rs
index 6e71607..6e71607 100644
--- a/src/select/cmds.rs
+++ b/yt/src/select/cmds.rs
diff --git a/src/select/mod.rs b/yt/src/select/mod.rs
index ca7a203..ca7a203 100644
--- a/src/select/mod.rs
+++ b/yt/src/select/mod.rs
diff --git a/src/select/selection_file/duration.rs b/yt/src/select/selection_file/duration.rs
index a38981c..a38981c 100644
--- a/src/select/selection_file/duration.rs
+++ b/yt/src/select/selection_file/duration.rs
diff --git a/src/select/selection_file/help.str b/yt/src/select/selection_file/help.str
index eb76ce5..eb76ce5 100644
--- a/src/select/selection_file/help.str
+++ b/yt/src/select/selection_file/help.str
diff --git a/src/select/selection_file/help.str.license b/yt/src/select/selection_file/help.str.license
index d4d410f..d4d410f 100644
--- a/src/select/selection_file/help.str.license
+++ b/yt/src/select/selection_file/help.str.license
diff --git a/src/select/selection_file/mod.rs b/yt/src/select/selection_file/mod.rs
index 45809fa..45809fa 100644
--- a/src/select/selection_file/mod.rs
+++ b/yt/src/select/selection_file/mod.rs
diff --git a/src/status/mod.rs b/yt/src/status/mod.rs
index 7ffe8d7..7ffe8d7 100644
--- a/src/status/mod.rs
+++ b/yt/src/status/mod.rs
diff --git a/src/storage/mod.rs b/yt/src/storage/mod.rs
index 6a12d8b..6a12d8b 100644
--- a/src/storage/mod.rs
+++ b/yt/src/storage/mod.rs
diff --git a/src/storage/subscriptions.rs b/yt/src/storage/subscriptions.rs
index 22edd08..22edd08 100644
--- a/src/storage/subscriptions.rs
+++ b/yt/src/storage/subscriptions.rs
diff --git a/src/storage/video_database/downloader.rs b/yt/src/storage/video_database/downloader.rs
index ccd4ca9..ccd4ca9 100644
--- a/src/storage/video_database/downloader.rs
+++ b/yt/src/storage/video_database/downloader.rs
diff --git a/src/storage/video_database/extractor_hash.rs b/yt/src/storage/video_database/extractor_hash.rs
index c956919..c956919 100644
--- a/src/storage/video_database/extractor_hash.rs
+++ b/yt/src/storage/video_database/extractor_hash.rs
diff --git a/src/storage/video_database/getters.rs b/yt/src/storage/video_database/getters.rs
index 29dd014..29dd014 100644
--- a/src/storage/video_database/getters.rs
+++ b/yt/src/storage/video_database/getters.rs
diff --git a/src/storage/video_database/mod.rs b/yt/src/storage/video_database/mod.rs
index 1765f79..1765f79 100644
--- a/src/storage/video_database/mod.rs
+++ b/yt/src/storage/video_database/mod.rs
diff --git a/src/storage/video_database/schema.sql b/yt/src/storage/video_database/schema.sql
index 3afd091..3afd091 100644
--- a/src/storage/video_database/schema.sql
+++ b/yt/src/storage/video_database/schema.sql
diff --git a/src/storage/video_database/setters.rs b/yt/src/storage/video_database/setters.rs
index c160138..c160138 100644
--- a/src/storage/video_database/setters.rs
+++ b/yt/src/storage/video_database/setters.rs
diff --git a/src/subscribe/mod.rs b/yt/src/subscribe/mod.rs
index 74d88b4..74d88b4 100644
--- a/src/subscribe/mod.rs
+++ b/yt/src/subscribe/mod.rs
diff --git a/src/update/mod.rs b/yt/src/update/mod.rs
index 6abb8c4..6abb8c4 100644
--- a/src/update/mod.rs
+++ b/yt/src/update/mod.rs
diff --git a/src/videos/display/format_video.rs b/yt/src/videos/display/format_video.rs
index 50646a1..50646a1 100644
--- a/src/videos/display/format_video.rs
+++ b/yt/src/videos/display/format_video.rs
diff --git a/src/videos/display/mod.rs b/yt/src/videos/display/mod.rs
index d919dd2..d919dd2 100644
--- a/src/videos/display/mod.rs
+++ b/yt/src/videos/display/mod.rs
diff --git a/src/videos/mod.rs b/yt/src/videos/mod.rs
index 59baa8c..59baa8c 100644
--- a/src/videos/mod.rs
+++ b/yt/src/videos/mod.rs
diff --git a/src/watch/events/mod.rs b/yt/src/watch/events/mod.rs
index 41a7772..41a7772 100644
--- a/src/watch/events/mod.rs
+++ b/yt/src/watch/events/mod.rs
diff --git a/src/watch/events/playlist_handler.rs b/yt/src/watch/events/playlist_handler.rs
index 0933856..0933856 100644
--- a/src/watch/events/playlist_handler.rs
+++ b/yt/src/watch/events/playlist_handler.rs
diff --git a/src/watch/mod.rs b/yt/src/watch/mod.rs
index 3bcf1fc..3bcf1fc 100644
--- a/src/watch/mod.rs
+++ b/yt/src/watch/mod.rs