yazgoo / youtube-subscriptions Goto Github PK
View Code? Open in Web Editor NEWterminal client to browse youtube subscriptions
terminal client to browse youtube subscriptions
instead of runtime in main()
because it might crash
when server sends eTag, we should use it to make sure we don't spam it.
โฏ youtube-subscriptions
thread '<unnamed>' panicked at 'failed to parse XML: Error { location: 0, errors: {Expected("<?xml"), ExpectedComment, ExpectedElement, ExpectedProcessingInstruction, ExpectedWhitespace} }', src/libcore/result.rs:999:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
1: std::sys_common::backtrace::_print
at src/libstd/sys_common/backtrace.rs:71
2: std::panicking::default_hook::{{closure}}
at src/libstd/sys_common/backtrace.rs:59
at src/libstd/panicking.rs:197
3: std::panicking::default_hook
at src/libstd/panicking.rs:211
4: std::panicking::rust_panic_with_hook
at src/libstd/panicking.rs:474
5: std::panicking::continue_panic_fmt
at src/libstd/panicking.rs:381
6: rust_begin_unwind
at src/libstd/panicking.rs:308
7: core::panicking::panic_fmt
at src/libcore/panicking.rs:85
8: core::result::unwrap_failed
9: youtube_subscriptions::get_channel_videos
10: <futures::future::lazy::Lazy<F,R> as futures::future::Future>::poll
11: std::panicking::try::do_call
12: __rust_maybe_catch_panic
at src/libpanic_unwind/lib.rs:85
13: <futures::future::catch_unwind::CatchUnwind<F> as futures::future::Future>::poll
14: <futures_cpupool::MySender<F,core::result::Result<<F as futures::future::Future>::Item,<F as futures::future::Future>::Error>> as futures::future::Future>::poll
15: futures::task_impl::std::set
16: futures::task_impl::std::Run::run
17: futures_cpupool::Inner::work
You should probably make the XML parser more permissive or prepend <?xml version="1.0?>
.
"__HOME/.cache/yts/videos", is not created by the program, so if you use that in your config file, it will not load youtube-subscriptions, and will instead give a vague error about a missing directory.
I can create a PR for these issues but I just wanted to have them logged here.
Definitely a wishlist thing, but it would be nice to know what videos have been played, or manually marked for ones I want to skip.
I had to search the source code to find it was "config.json". It is sort of obvious, and maybe I am an idiot, but not all programs use that name.
Instead of the jq
one-liner on the subscriptions HTML file could we offer something like youtube-subscriptions import <PATH-TO-HTML-FILE>
or make the command a hotkey in the main app that prompts for a path? It would write the file to ~/.config/youtube-subscriptions/subscription_manager
wrapped appropriately in ompl
tags.
I am on macOS
and the path for mpv
is /usr/local/bin/mpv
.
Maybe add an option to change the mpv
path in config.
e.g. LWN rss feed
should support urls like library://@channel
urls
Some formats do not work with youtube-dl*, but I only get a flash of red text and then back to the youtube-subscriptions menu. To be fair, the youtube-dl error message is not very helpful (see below), but without digging into the problem, it first appears to be a youtube-subscriptions problem. Maybe you could add some way to display to the user the final output of youtube-dl if the video download fails?
With a clean install (just downloaded the release, made it executable, and ran it), I get a blank screen with a cursor. I can press 'h' for the help screen, and I can press 'q' to quit. I can also press 'c' to download my subscriptions OPML... but otherwise, blank screen with a cursor at the left side that I can use 'j' and 'k' to scroll with, but nothing else happens. How does the app retrieve subs?
I tried adding a config.json with the contents from the readme to see if there was an initialization error that wasn't being caught. Is there debugging output I can enable to see what's wrong?
in description
... and display a link if an update is available
could be enabled by conf.
would help for "debugging" purpose.
I don't use this program, but I came across it as I was looking for an alternative to the OPML for collecting channelids for a personal project. I just wanted to warn you that the approach you are taking will only get the first ~100 subscriptions. Subscriptions after this are loaded on that page through AJAX requests when scrolling and are not present in the source of the page.
I haven't found any simple solution to this. It looks like it would be quite a bit of trouble to fake the ajax requests because of the multiple tokens it needs to be passed. My current semi-automated approach is to:
Array.from(document.getElementsByClassName("channel-link"), x => x.href)
by using pre-built docker images
to use roxmltree everywhere
because the current patched script is hacky
When I hit p/enter I get a message at the bottom of the screen and a tick next to the videos but no instance of mpv. I don't have a config file.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.