extern crate tf_join;
use tf_core::{ErrorStore, Generator, Video};
use tf_join::{AnySubscription, AnyVideo, Joiner};
#[cfg(test)]
use tf_test::TestSubscription;
#[cfg(feature = "youtube")]
use tf_yt::YTSubscription;
#[cfg(feature = "lbry")]
use tf_lbry::LbrySubscription;
#[cfg(feature = "peertube")]
use tf_pt::PTSubscription;
#[cfg(feature = "youtube")]
const YT_SUBSCRIPTION_IDS: &'static [&'static str] = &["UCj1VqrHhDte54oLgPG4xpuQ"];
#[cfg(feature = "peertube")]
const PT_SUBSCRIPTION_IDS: &'static [(&'static str, &'static str)] = &[(
"https://peertube.linuxrocks.online",
"chrisweredigital@share.tube",
)];
#[cfg(feature = "lbry")]
const LBRY_SUBSCRIPTION_IDS: &'static [&'static str] = &["@SomeOrdinaryGamers:a"];
#[cfg(test)]
const TEST_SUBSCRIPTION_NAMES: &'static [&'static str] = &["Test1", "Test2"];
#[tokio::main(flavor = "current_thread")]
pub async fn main() {
env_logger::init();
log::info!("Logging enabled");
let join = Joiner::new();
let errors = ErrorStore::new();
let subscription_list = join.subscription_list();
#[cfg(feature = "youtube")]
YT_SUBSCRIPTION_IDS
.iter()
.map(|id| YTSubscription::new(id).into())
.for_each(|sub: AnySubscription| subscription_list.add(sub));
#[cfg(feature = "peertube")]
PT_SUBSCRIPTION_IDS
.iter()
.map(|s| PTSubscription::new(s.0, s.1).into())
.for_each(|sub: AnySubscription| subscription_list.add(sub));
#[cfg(feature = "peertube")]
LBRY_SUBSCRIPTION_IDS
.iter()
.map(|s| LbrySubscription::new(s).into())
.for_each(|sub: AnySubscription| subscription_list.add(sub));
#[cfg(test)]
TEST_SUBSCRIPTION_NAMES
.iter()
.map(|name| TestSubscription::new(name).into())
.for_each(|sub: AnySubscription| subscription_list.add(sub));
println!("VIDEOS: ");
for video in join.generate(&errors).await.take(100) {
let source = match &video {
#[cfg(feature = "youtube")]
AnyVideo::Youtube(_v) => "YouT",
#[cfg(feature = "peertube")]
AnyVideo::Peertube(_v) => "Peer",
#[cfg(feature = "lbry")]
AnyVideo::Lbry(_v) => "Lbry",
#[cfg(test)]
AnyVideo::Test(_v) => "Test",
};
println!("{}: {} - {} ({})", source, video.title(), video.subscription(), video.uploaded())
}
}