Something went wrong. Try again.
experiments of a tiny cytube-like player with yt-dlp
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367pub(crate) fn generate_room_name(room_id: &str) -> String { use std::hash::{Hash, Hasher}; let mut hasher = std::collections::hash_map::DefaultHasher::new(); room_id.hash(&mut hasher); let h = hasher.finish();
let adj_idx = (h % ADJECTIVES.len() as u64) as usize; let noun_idx = ((h / ADJECTIVES.len() as u64) % NOUNS.len() as u64) as usize;
format!("{}-{}", ADJECTIVES[adj_idx], NOUNS[noun_idx])}
const ADJECTIVES: &[&str] = &[ "ancient", "autumn", "blessed", "blooming", "breezy", "bright", "calm", "clear", "copper", "cosmic", "crimson", "crystal", "curious", "dancing", "dawn", "deep", "delicate", "divine", "dreamy", "drift", "dusk", "eager", "early", "earthy", "electric", "empty", "endless", "warm", "faint", "falling", "fancy", "fast", "fiery", "floating", "floral", "flowing", "flying", "foggy", "frozen", "gentle", "glad", "glowing", "golden", "graceful", "grand", "gravel", "happy", "hidden", "hollow", "holy", "honest", "hopeful", "icy", "jolly", "kind", "laughing", "lazy", "lively", "lonely", "loud", "lovely", "lucky", "luminous", "magic", "mellow", "merry", "misty", "modern", "modest", "muddy", "mute", "nameless", "noble", "noisy", "open", "pale", "patient", "peaceful", "plain", "playful", "pleasant", "polite", "proud", "pure", "purple", "quiet", "rapid", "rare", "restless", "rough", "royal", "sacred", "safe", "shy", "silly", "silver", "simple", "sleepy", "slow", "smooth", "soft", "solar", "solid", "sparkling", "still", "strange", "subtle", "summer", "sunny", "swift", "tender", "thawed", "tiny", "tranquil", "true", "vivid", "wild", "winter", "wispy", "wooden", "young", "zealous",];
const NOUNS: &[&str] = &[ "antelope", "arch", "arrow", "aurora", "badger", "basin", "bay", "bear", "bee", "blossom", "branch", "breeze", "bridge", "brook", "butterfly", "cabin", "cactus", "canyon", "capybara", "cascade", "castle", "cat", "cave", "cedar", "cherry", "cliff", "cloud", "coast", "comet", "coral", "cottage", "cove", "crane", "creek", "crown", "current", "cypress", "dale", "dawn", "deer", "delta", "dew", "dove", "dragon", "dune", "eagle", "echo", "elm", "ember", "falcon", "fern", "field", "finch", "fir", "firefly", "flame", "flower", "fog", "forest", "fox", "frost", "geyser", "glacier", "glade", "glen", "goat", "gorge", "grove", "gull", "harbor", "haven", "hawk", "heather", "heron", "hill", "horizon", "ibis", "iris", "island", "ivy", "jade", "jasmine", "jay", "journey", "koala", "lagoon", "lake", "lark", "lattice", "lily", "lion", "lotus", "lynx", "maple", "marble", "marsh", "meadow", "mist", "moon", "moss", "moth", "mountain", "nebula", "oak", "oasis", "ocean", "opossum", "orchid", "osprey", "otter", "owl", "palm", "panda", "pass", "path", "peak", "pebble", "pelican", "phoenix", "pigeon", "pillar", "pilot", "pine", "plain", "planet", "plateau", "plaza", "pond", "prairie", "puma", "quail", "quartz", "rabbit", "rain", "raven", "reef", "ridge", "river", "robin", "rock", "rose", "ruins", "salmon", "sand", "savanna", "seal", "shadow", "shard", "shark", "sheep", "shell", "shore", "sky", "slope", "snail", "snake", "snow", "solar", "sparrow", "spider", "spirit", "spring", "squid", "squirrel", "star", "storm", "stream", "summit", "sun", "swallow", "swan", "temple", "thistle", "thorn", "thunder", "tiger", "tower", "trail", "tree", "trout", "tulip", "tunnel", "turtle", "valley", "vapor", "vessel", "violet", "vulture", "warbler", "water", "wave", "weaver", "whale", "willow", "wind", "winter", "wolf", "wren", "yacht", "zebra",];
#[cfg(test)]mod tests { use super::*;
#[test] fn test_generate_room_name_is_deterministic() { let name1 = generate_room_name("12345"); let name2 = generate_room_name("12345"); assert_eq!(name1, name2); }
#[test] fn test_generate_room_name_differs_for_diff_ids() { let name1 = generate_room_name("11111"); let name2 = generate_room_name("22222"); assert_ne!(name1, name2); }
#[test] fn test_generate_room_name_has_hyphen() { let name = generate_room_name("99999"); assert!(name.contains('-'), "room name should be adjective-noun"); let parts: Vec<&str> = name.split('-').collect(); assert_eq!(parts.len(), 2); }}