1#[cfg(feature = "kg")]
2pub mod kg;
3#[cfg(feature = "kw")]
4pub mod kw;
5#[cfg(feature = "mg")]
6pub mod mg;
7#[cfg(feature = "tx")]
8pub mod tx;
9#[cfg(feature = "wy")]
10pub mod wy;
11
12use lux_core::traits::MusicSource;
13use lux_core::types::Source;
14use std::sync::Arc;
15
16pub fn get_native_source(source: &Source) -> Option<Arc<dyn MusicSource>> {
17 match source {
18 #[cfg(feature = "wy")]
19 Source::NetEase => Some(Arc::new(wy::NetEaseSource)),
20 #[cfg(feature = "kw")]
21 Source::Kuwo => Some(Arc::new(kw::KuwoSource)),
22 #[cfg(feature = "kg")]
23 Source::Kugou => Some(Arc::new(kg::KugouSource)),
24 #[cfg(feature = "tx")]
25 Source::QQ => Some(Arc::new(tx::QQSource)),
26 #[cfg(feature = "mg")]
27 Source::Migu => Some(Arc::new(mg::MiguSource)),
28 _ => None,
29 }
30}