this post was submitted on 24 Jun 2023
62 points (100.0% liked)

Linux

50208 readers
1213 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

cross-posted from: https://lemmy.world/post/530920

Magic-tape is an image supporting fuzzy finder command line interface YouTube client.

https://gitlab.com/christosangel/magic-tape

Image rendering can be done with the use of ueberzugpp, ueberzug, kitty terminal or chafa.

With magic-tape, through the main menu, the user can:

  • Browse videos from subscriptions.

  • Browse through trending video feed.

  • make a video search, using keywords or phrases.

  • Watch a previously watched video (watch history).

  • Browse videos from a subcsribed channel.

  • Watch a liked video.

  • Repeat the previous selection.

  • Repeat a previous search (search history).

  • Watch/download video/audio content, in various formats.

Through the miscellaneous menu the user can

  • Set up Preferences (configuration).

  • Like / Unlike a video.

  • Synchronize the above actions with their YouTube account.

  • Import subscriptions from YouTube.

  • Subscribe to/ Unsubscribe from a channel.

  • Clear their watch/search history, liked videos, thumbnail cache.

top 30 comments
sorted by: hot top controversial new old
[–] [email protected] 2 points 2 years ago (1 children)
[–] christos 3 points 2 years ago

Thanks! Any feedback would be appreciated :)

[–] archy 2 points 2 years ago (1 children)

Looks like a cool script. I am learning different TUI tools now and willing to migrate some from GUI. This one gives me trouble. I probably did something wrong. When I press m then P - nothing happens. Supposedly, there should be preferences. And the program didn't ask me on the first run to configure anything.

When I search a video with s - I get in a preview window: zsh:11: command not found: draw_preview

[–] christos 1 points 2 years ago (1 children)

I do not know how this script is interacting with zsh. Have you tried to run it with bash?

[–] archy 1 points 2 years ago* (last edited 2 years ago) (2 children)
$ echo $0
bash

Strange... It still displays the same zsh error and the preferences are not displayed. I even tried to execute the program using bash magic-tape.sh while in bash

I tried on a machine where only bash is installed, and the search window is blank, yt-dlp gives an error that flashes and I can't read quickly, no preferences appear, again it flashes some text but I cannot read it. Also, the location for the folder is not relative, it has to be in ~/git/magic-tape otherwise it will give you multiple errors.

[–] christos 1 points 2 years ago (1 children)

Have you followed the instructions correctly to install the script?

Obviously something is not ok, and I find it surprising that the script is not working in all these distros.

You have zsh errors with the Debian as well, although it is not installed?

Is yt-dlp up to date? If you use this command on its own, do you get any errors?

I am trying to troubleshoot, but in the dark.

[–] archy 1 points 2 years ago* (last edited 2 years ago) (1 children)

Yeah, I followed the instructions, created necessary folders. yt-dlp is not the latest version, but the latest from Debian bookworm repositories (2023.03.04). yt-dlp works perfectly to download and convert videos with ffmpeg.

When I try to browse trending yt-dlp says:

yt-dlp: error: playlist end "0" must be must be greater than or equal to playlist start "1"

I don't have zsh errors on Debian where only bash is installed, after searching for a video I got a blank screen with the only option:

Select video:
search videos 1 to 0:
> 1 Abort Selection
[–] christos 1 points 2 years ago (1 children)

On Debian, what preference values have you entered (P option on misc menu)?

[–] archy 1 points 2 years ago (1 children)

That P menu doesn't open on all systems that I've tried

[–] christos 1 points 2 years ago (1 children)

You can open the P option by either double-clicking on it with the mouse, or entering capital P with the keyboard. You can get to select the P option through the misc menu.

Do you get any error messages when doing so?

Have you installed all the dependencies of the script (rofi in particular)?

[–] archy 1 points 2 years ago (1 children)

I did not have rofi installed on my headless machine, from the description I understand it is a GUI application. After installing it I still could not get the Preferences menu to appear. Nothing happens when I press P, or more specifically there is a quick flash of something and it comes back to the m submenu

[–] christos 1 points 2 years ago (1 children)

It sems to me that there were a few ommisions made during the installation of this script from your part.

If I were you, I would remove the whole git/magic-tape folder, and re-install the script, this following the detailed instructions from the README.

There are specific commands that take care of the dependencies, and of the directory structure.

Do that, and the chances are that you will have no problems.

[–] archy 1 points 2 years ago (1 children)

I finally got to my main workstation with GUI, pulled the latest code, installed rofi there and it works now, I sill could not to get previews to show because of the draw_preview: command not found error. But I don't think rofi can run on a headless machine:

rofi
(process:1456958): X11Helper-WARNING **: 10:52:55.600: Failed to open display: (null)
(process:1456958): Rofi-WARNING **: 10:52:55.600: Connection has error
[–] christos 1 points 2 years ago (1 children)

I think that apart from not installing the dependencies, both problems that you have faced in your machine (zsh-bash conflict, headless machine) are beyond the scope of this script and need to be examined individually.

At the end of the day, one could easily substitute rofi with fzf itself in the script, they do more or less the same job. I am not certain rofi is your main obstacle here.

[–] archy 1 points 2 years ago (1 children)

I tried to substitute rofi with fzf in vim, and when I try Preferences - it says 😕 Selection canceled...

My main goal was to use this program on my server which has no GUI and I can access it from anywhere. For example, I successfully use newsboat and neomutt remotely. When I saw TUI, I thought I could use that too headless, but you may wanna put a disclaimer that the script requires a GUI application rofi.

Anyways, thanks for the project, I will keep an eye on it if it keeps developing, great idea! While troubleshooting this program I came across ytfzf that also supposedly supports subscriptions and seems like can work headlessly

[–] christos 1 points 2 years ago (1 children)

may wanna put a disclaimer that the script requires a GUI application rofi.

This is clearly stated in the instructions, and in the dependencies.

https://imgur.com/Anr1SSh.png

You might consider always read the instructions before installing anything.

[–] archy 1 points 2 years ago (2 children)

undefined> https://imgur.com/Anr1SSh.png

Don't get mad, I've read. It's a little unusual for me to see amongst 6 CLI dependencies on GUI one. But even installing a GUI application on a headless machine won't do any good

[–] christos 2 points 2 years ago* (last edited 2 years ago) (1 children)

I have made some updates that may concern you:


UPDATES:

  1. The directory structure of the program has been updated. Instead of keeping everything in ~git/magic-tape/, now various files and directories are kept in various places.This way,
  • the magic-tape.sh is in ~/.local/bin/
  • the magic-tape cache files are all in ~/.cache/magic-tape/
  • the configuration text file will be created in ~/.config/magic-tape/
  1. The action selection can be either with rofi, or fzf (if the user wants to go full TUI).This can be configured during the P option of the misc menu.

So if you want to go full tui, you can avoid rofi and go full fzf.

Let me know how it goes if you try.

[–] archy 2 points 2 years ago (1 children)

Thank you for the update. Can't wait to try. Looks like GitLab is down right now (503) - I will look as they restore service

[–] christos 1 points 2 years ago (1 children)

I know, I have just found out. Last night I also added dmenu as well as an action selector (together with fzf and rofi). Let me know how it goes!

[–] archy 1 points 2 years ago (1 children)

Actual git still worked. I was able to git pull I also figured out a way to launch the script using bash - needed to export $SHELL - the only way it worked. I could not update yt-dlp to the latest version - the latest I could install is 2023.06.22 from the side PPA repo. Official Ubuntu repo provides 2023.03 and pip breaks my system with compatibility issues that I don't have desire to troubleshoot. I could try in the future downloading their binary but I don't like when stuff doesn't auto-update. The preferences worked this time and I was able to save them.

yt-dlp gives me an error every time I try to browse either Trending or do a search. I have a TV with a cross and 1 option to Abort Selection.

I have a question: is the script dependent on having browser cookies? Because I don't have any of the browsers installed on a headless machine. ANd I think that is what yt-dlp wasn't happy about...

Downloading /feed/trending ...
Traceback (most recent call last) :
File "/usr/bin/yt-dlp", line 33, in <module>
sys. , 'console_scripts'
' yt—dtp'
Fite py", tine 1008, in main
File "/usr/lib/python3/dist-packages/yt_dlp/_init_.py", tine 962, in _real_main
with YoutubeDL(ydl_opts) as ydl:
AAAAAAAAAAAAAAAAAAA
File "/usr/tib/python3/dist—packages/yt_dlp/YoutubeDL.py", tine 762, in _ init
self. _ setup_opener()
File "/usr/Iib/python3/dist—packages/yt_dIp/YoutubeDL.py", tine 3929, in _ setup_opener
self. cookiejar = load_cookies(opts_cookiefile, opts_cookiesfrombrowser, self)
File "/usr/lib/python3/dist-packages/yt_dtp/cookies.py", line 106, in load_cookies
extract_cookies_from_browser(browser_name, profile, YDLLogger(ydI), keyring=keyring, container=container))
File "/usr/lib/python3/dist-packages/yt_dlp/cookies.py", line 123, in extract_cookies_from_browser
return _extract_firefox_cookies(profile, container, logger)
File py", tine 148, in _extract_firefox_cookies
raise FileNotFoundError(f' could not find Firefox cookies database in {search_root}')
FiteNotFoundError: could not find Firefox cookies database in /home/user/. mozitta/firefox
Completed /feed/trendinq.
[–] christos 2 points 2 years ago (1 children)

Exactly that. Yt-dlp works with browser cookies, You need one of the browsers, and to log in to your yt account.

[–] archy 2 points 2 years ago (1 children)

Ah, yeah that's what I figured.

Unfortunately, (or fortunately for me) I have not used YouTube in a traditional way in a very long time. I use FreeTube, Piped, Invidious, NewPipe, VueTube depending on the platform I currently am. And that is why I don't have any cookies for it. I don't really care for liking or commenting the videos as just watching them. All the above mentioned programs support own "offline" subscription lists, and most have interest-based profiles which you cannot achieve with a traditional YouTube account.

But yeah, sadly this not for me in its current form, I will join whoever added a comment here earlier about waiting for support of json - based subscription lists - that is, of course, if you decide to go that route, or at least as bare minimum if you could remove the cookie requirement and have "anonymous search and view" functionality. I believe many of us here on Lemmy that are concerned about privacy will greatly appreciate that. YouTube itself, mpv, and yt-dlp don't really need cookies to watch a video.

Thanks for troubleshooting this with me.

[–] christos 2 points 2 years ago

I was considering being full "offline", it is perfectly doable, working with yt xml requests.

The downside is that this process (so far for me) takes longer, gives less info, and mostly, although there is no image support there, is done better by terminal rss feeders like newsboat.

You cannot do everything at the same time. I may revisit this approach in the feature and put up something else.

[–] christos 2 points 2 years ago

No worries! Thanks for the feedback anyway.

ytfzf is great. And if you don't mind the image support, give newsboat a try, it works great for youtube feeds.

[–] christos 1 points 2 years ago (1 children)

If it is displaying zsh error messages, while you are in bash, I am afraid this is an issue on its own.

I am confident that once you resolve this shell conflict, the script will do its work. I would gladly help you, but I know nothing of zsh.

May I ask about your operating system?

[–] archy 1 points 2 years ago (1 children)

May I ask about your operating system? You can read my edit above for more info. I tried it on Arch + Zsh,Bash; Ubuntu 23.04 + Zsh,Bash; Debian 12 + Bash

[–] christos 1 points 2 years ago

I use linumxmit and mxlinux, the script works_in_my_machine.

[–] [email protected] 1 points 2 years ago* (last edited 2 years ago) (1 children)

Would be very cool to support importing NewPipe or Freetube subscriptions. Or any other offline subscription sync that doesnt require a Youtube account.

[–] christos 1 points 2 years ago

I haven't used either, so I have no idea about that. I imagine that these programs exporting someting like a json file, like invidious. I initially was using the yt-dlp command to extract from invidious, but it was somehow not stable, and an extra step to the process, so I opted for syncing with the yt account subscription feed. One can use the script without a yt account, however the F option (for subscription feed) will not function. The user can sub and browse the content of selected channels (c option).

load more comments
view more: next ›