Giter VIP home page Giter VIP logo

empv.el's People

Contributors

abougouffa avatar arialdomartini avatar arian-d avatar isamert avatar jasonhemann avatar mefff avatar rhododendrox avatar scott56gps avatar thomp avatar xfa25e avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

empv.el's Issues

consult-empv-youtube brings the following error/warning

hello,
first thank you to fix the previous error i reported.
its fixed!
but after select something, the following occurs.
it seems, that something goes wrong.

any ideas?
curl: (3) URL using bad/illegal format or missing URL Warning: Binary output can mess up your terminal. Use "--output -" to tell Warning: curl to output it to your terminal anyway, or consider "--output Warning: <FILE>" to save to a file.

empv info line

*Feature Request: Move Title To Start Of Info Display

Hi,

With many sites now using hls to stream (stream is split into multiple
little files) the EMPV Info Display is getting long, and worse, the
Title is at the end. Could you perhaps consider moving the Title to
the start of that display? It's a simple edit of the format line, so I
thought a patch was too heavy a hammer, and I also dont know if you
have other ideas there.

empv.el volume an mpv volume

volume from empv.el appears to not respect volume set in config/mpv/mpv.conf; eg if you set volume-max and volume in the conf file --- say volume=200, manipulating volume later with empv-volume-up/down immediately sets volume to 100

This extention Is Broken on Windows but kinda works.

i tried to install this extension and it kinda works.

it launches the mpv process via mpv-start but i get this after launching it

image

Taskmgr_cKWbPUk6I5

after that is unable to detect the mpv process and manipulate it

yt search works. as you detailed in your config to set the invidious instance url.
emacs_c4XTRSrY5q

emacs_CPmI0pbW6C

if i try to play it. it seems it cant find the mpv process but its already launched.

emacs_XLzjgaHlG7

you can troubleshoot it via firing up a quickemu virt machine. and using scoop package manager to install all applications quickly

add require iimage

to avoid not defined at runtime for iimage-recenter when compiling modules that load empv

Howto: Persist Playlists

Feature Request: I use empv to find talks on Youtube, then play some of them. I'd like to persist the ones I play into a playlist file m3u/pls on disk -- and give it a name, is there an easy way to do this?

YouTube query produces always empty results

Hi, thanks for this very interesting package. I was giving it a try, and everything works smooth except for the empv-youtube command. It seems to be a json error, though. Indeed, if I activate the debugging mode and issue the command with a random query, I get the following error:

(empv) Error while reading JSON :

followed by a long json string. I have a very simple config:

(use-package empv
  :straight (:type git
             :host github
             :repo "isamert/empv.el")
  :config
  (setq empv-invidious-instance "https://invidious.tiekoetter.com/api/v1"))

Do you have any hints on what could be the problem, or how to further debug? I am on Emacs 29.0.50.

Selectively Suppressing Event Display

Custom option empv-display-events loses all info display

I set the above option to nil in the hope of reducing chatter when
playing HLS streams (see earlier issue).
However turning that switch off also entirely silences
empv-display-current because that command also calls
empv--display-event -- perhaps refactor so the custom option disables
automatic event display but allows explicit requests to go through?

Misspelling (I assume) of command

Hi!
Thanks for writing this package. I'm already finding it a quicker and easier method for watching videos than via emms.

Anyway, just a little issue with the name of the playlist saving function: empv-playtlist-save-to-file.
I assume it's supposed to be empv-playlist-save-to-file?

Browse Playlist: Feature Request

Feature Request: Playlist And Metadata

I found a set of nice m3u playlists here:
BBC stations: https://garfnet.org.uk/cms/2023/10/29/latest-bbc-hls-radio-streams/

The m3u file has an #extinf: field listing the station name, and the
station URL.

I am able to play the m3u file and scroll linearly through stations
in empv.

Feature Request:

Would it be possible for mpv to load the playlist file, and display a
simple tabular UI and lists the stations and enables directly playing
the desired station?

empv: ignores save-position-on-quit in conf file

empv: Ignores save-position-on-quit when set in .config/mpv.conf

I added save-position-on-quit to my config/mpv.conf and verified at
the shell that it takes effect; position is saved on quit and resumes
at saved position.

With that set in the config/mpv.conf, empv appears to ignore this; do
we need to add a flag when launching mpv so those are respected? Was
surprized because setting volume in the conf file does take effect
with empv.

`empv-playlist-select` not working with local files

After enqueuing some entries into the playlist, calling empv-playlist-select interactively appears to do nothing. No playlist items are presented for selection. However, empv-playlist-next and empv-playlist-prev are working as expected.

UPDATE: After further testing, it seems empv-playlist-select IS working when there are YouTube results, but it does nothing when there are only local files in the playlist.

Using mpv 0.34.1 on macOS.

Unable to Start empv radio on Windows 10 OS

Unable to get empv-play-radio working on emacs.
Just want to achieve 2 things to through this package:

  • Able to play the radio and
  • Get the current song playing inside the radio on the modeline or some buffer to take note of the song which's playing.

Showing error on execution of commandM-x empv-play-radio
empv--make-network-process: Unknown address family

Next time when same command executed error is different,

Showing error on Second Execution of command M-x empv-play-radio
empv--send-command: Buffer emacs-config.org has no process

Troubleshooting Steps Taken so far:

  • empv is installed through Melpa Repository and using Elpaca package manager.
    • Made sure all the dependencies mentioned mentioned on Melpa are installed. (Everything was installed by ELpaca itself.)
  • Tried running empv-start << this starts the process but sadly songs doesnt plays, leave showing them on modeline.
  • Tried running empv-play-radio after the empv-start didnt start.
  • Tried some other commands empv-play and inserted radio channel link didnt worked.

System Details:
OS: Windows 10 (N)
Emacs installed through: Chocolatey Package Manager
emacs-version: GNU Emacs 29.1 (build 2, x86_64-w64-mingw32) of 2023-07-31
I have no idea where my cygwin folder for chocolatey or the msys2 setup file is at.
Emacs package manager: Elpaca

Config.org (init file)
(use-package empv
  :config
  (setq empv-invidious-instance "vid.priv.au")
  (setq empv-radio-channels
	'(("SomaFM - Groove Salad" . "http://www.somafm.com/groovesalad.pls")
	  ("Totally 80s FM" . "https://zeno.fm/radio/totally-80s-fm/")))
	)

PS: I tried eradio and its working for me on windows, sharing just for the reference, going through which i found your fork of it for the modeline title, found program reuqires a dependency by you was : SOCAT, Which I havnt found anywhere, searched through Chocolatey / Winget / Scoop My best guess is its part of Linux-utils.

I am very New to Emacs universe its possible i am doing very silly mistake and unable to find it.
Any Input, Suggestions or troubleshooting steps will be welcome.
Last Thank you very much for the Package.

Warm Regards
Seasons Greetings

Error playing live YT Streams

  1. Search YT for a TV channel, e.g. doordarshan
  2. https://www.google.com/search?q=site%3Ayoutube.com%20%20doordarshan&num=25
  3. Pick first result which is:
  4. https://www.youtube.com/doordarshannational
  5. Put that result url in a .m3u file e.g. doordarshan.m3u
  6. At the shell
    #+begin_src
    mpv media/radio/doordarshan.m3u
    Playing: https://youtube.com/watch?v=dpPzS1_8zjM
    Video --vid=1 (h264 1920x1080 30.000fps)
    (+) Audio --aid=1 (aac 2ch 44100Hz)
    AO: [pipewire] 44100Hz stereo 2ch floatp
    A: 00:00:05 / 00:00:19 (25%) Cache: 14s/596KBq
    Saving state.
    Not seekable, or time unknown - not saving position.
    A: 00:00:05 / 00:00:19 (25%) Cache: 14s/596KB
    Exiting... (Quit)
    13:55:30 emacspeak $
    #+end_src
  7. The same file above when played by empv does not stream any audio
    as of the last few days! This used to work last week I think.

Optionally skip thumbnails

For Emacspeak users, it would be nice to be able to specify to empv that thumbnails need not be downloaded and displayed. Possible? Also, could you add a results-displayed-done hook or equivalent?

empv volume after upgrade

Not all issues fixed; with config file setting max vol to 150, empv-set-volume always forces to 100, even if you specify 125 in minibuffer

Youtube Playlists Don't Play Using youtu.be Url

When trying to play a youtube playlist, the youtu.be style url does not work. When using the regular youtube.com url, playlists do play. I tested this using normal mpv on the command line.

Nit: Tweak Display Template

Suggestion For Info Line Display

The new template is nice, I can now put the title in front.

There is still the minor annoyance of HLS live streams displaying a
somewhat irrelevant chapter and percentage, best shown with an
example.

Stream: BBC Radio 4
Displays: [radio-4-bbc.m3u Playing, 00:06 of 00:19 (34%), 1/1, 🔊 50]
m3u file below:

#EXTINF:-1,BBC - Radio 4
http://as-hls-ww-live.akamaized.net/pool_904/live/ww/bbc_radio_fourfm/bbc_radio_fourfm.isml/bbc_radio_fourfm-audio%3d96000.norewind.m3u8

consult-empv-youtube throws error

hello,
today i tried the consult version of empv-youtube, but unfortunately it throws error:
any ideas?
i am on emacs 29 with latest consult from melpa.

Debugger entered--Lisp error: (wrong-number-of-arguments (3 . 3) 4) #f(compiled-function (_ candidates cand) #<bytecode -0xd544d39bedca072>)("klaus schulze deus arrakis" ("klaus schulze deus arrakis") "#klaus schulze deux" nil) #f(compiled-function (narrow input cand) #<bytecode -0xccbb8a8c7b94269>)(nil "#klaus schulze deux" "klaus schulze deus arrakis") consult--with-preview-1(any nil #f(compiled-function (narrow input cand) #<bytecode -0xccbb8a8c7b94269>) #f(compiled-function (&rest args2) #<bytecode -0x14a2044ce3f4257f>) #f(compiled-function () #<bytecode 0x11065a3c08779429>)) consult--read-1(#f(compiled-function (action) #<bytecode -0x1a87fea8c34d96fd>) :prompt "Search in YouTube videos: " :category empv-youtube :lookup #f(compiled-function (_ candidates cand) #<bytecode -0xd544d39bedca072>) :initial "#" :sort nil :require-match nil :prompt "Select: " :preview-key any :sort t :lookup #f(compiled-function (selected &rest _) #<bytecode 0x16ffa8caa42b639b>)) apply(consult--read-1 #f(compiled-function (action) #<bytecode -0x1a87fea8c34d96fd>) (:prompt "Search in YouTube videos: " :category empv-youtube :lookup #f(compiled-function (_ candidates cand) #<bytecode -0xd544d39bedca072>) :initial "#" :sort nil :require-match nil :prompt "Select: " :preview-key any :sort t :lookup #f(compiled-function (selected &rest _) #<bytecode 0x16ffa8caa42b639b>))) consult--read(#f(compiled-function (action) #<bytecode -0x1a87fea8c34d96fd>) :prompt "Search in YouTube videos: " :category empv-youtube :lookup #f(compiled-function (_ candidates cand) #<bytecode -0xd544d39bedca072>) :initial "#" :sort nil :require-match nil) consult-empv--get-input-with-suggestions() consult-empv-youtube() funcall-interactively(consult-empv-youtube) call-interactively(consult-empv-youtube record nil) command-execute(consult-empv-youtube record) execute-extended-command(nil "consult-empv-youtube" nil) funcall-interactively(execute-extended-command nil "consult-empv-youtube" nil) call-interactively(execute-extended-command nil nil) command-execute(execute-extended-command)

Youtube search always producing empty results

Hello,

I am trying to get youtube working with invidious. I'm using a simple test config with the following:

(require 'package)

(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)

(unless package-archive-contents
  (package-refresh-contents))

(unless (package-installed-p 'use-package)
  (package-install 'use-package))

(require 'use-package)
(setq use-package-always-ensure t)

(use-package empv
	     :ensure t
	     :config 
	     (setq empv-invidious-instance "https://invidious.io.lol"))
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(package-selected-packages '(empv use-package undo-tree general evil-collection)))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

I've tried several different invidious instances, and I've also attempted to use both empv-youtube and empv-youtube-tabulated. I get no results for either. Any ideas on what I should try?

How to detect stream failure

empv shows [ Playing, 00:00 of 00:00 (0%), -1/1] -- the -1/-1 indicates stream failure. Is it possible to detect this programmatically? At present, when this happens, I wait expectantly have to listen to the status line repeatedly until the -1/-1 shows up and then give up; I'd like to hav it announce the failure somehow -- which is the motivation behind the question

empv--let-properties

Can you explain:

  1. With a stream playing:
    #+begin_src

(empv--let-properties '(time-pos )
(format "%.2d" .time-pos))

(empv--let-properties '(time-pos )
(message "%.2d" .time-pos))

#+end_src

  1. The form using message returns the time

  2. The form using format does not return the time.

How to install in Doom-Emacs

How do I install this package in Doom-Emacs.
I think that quelpa will mess up my config.el
and I do not want to install it by using the load-path.
Since I want to get new updates...

Option: thumbnail quality to nil

Nit: please update the custom type to be a choice --- otherwise you cant set it to nil via custom, and setting it outside custom shows a mismatch warning

consult

"...If you are a consult user, then you can also install consult-empv package to get search suggestions while using empv’s YouTube search capabilities..."

Where is the link to install consult?
Is this a command line in Linux?

unable to save playlist

Description: Unable to save playlist
empv-playlist-save-to-file throws a "stringp nil" error even though
when stepping in the debugger, I can see that the playlist variable
that holds the extracted playlist property contains a list of urls.

empv-youtube-playlist error

  1. Set empv-youtube-use-tabulated-results to t

  2. Invoke empv-youtube-playlist

  3. empv throws the following backtrace.

  4. No error if not using tabulated results.

  5. Enter cricket as the term,

Backtrace:
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
(empv--format-yt-views nil)
(#f(compiled-function (it index) #<bytecode 0xb1dd0bf69192f1f>) ((type . "playlist") (title . "Great Cricket Documentaries") (playlistId . "PLnarSCJWu_W9QXQ1LsgrWM5DB52YUFHvU") (playlistThumbnail . "https://i.ytimg.com/vi/MKcvHAec6GM/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLD7APuwd_69vqgfxdtm78Yf-PNxmA") (author . "Sohil Nikam") (authorId . "UCwkTZJSEUD5YzsyhC7J11vg") (authorUrl . "/channel/UCwkTZJSEUD5YzsyhC7J11vg") (authorVerified . :json-false) (videoCount . 9) (videos ((title . "Documentary | Crossing The Line") (videoId . "MKcvHAec6GM") (lengthSeconds . 3354) (videoThumbnails ((quality . "maxres") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/maxres.jpg") (width . 1280) (height . 720)) ((quality . "maxresdefault") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/maxresdefault.jpg") (width . 1280) (height . 720)) ((quality . "sddefault") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/sddefault.jpg") (width . 640) (height . 480)) ((quality . "high") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/hqdefault.jpg") (width . 480) (height . 360)) ((quality . "medium") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/mqdefault.jpg") (width . 320) (height . 180)) ((quality . "default") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/default.jpg") (width . 120) (height . 90)) ((quality . "start") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/1.jpg") (width . 120) (height . 90)) ((quality . "middle") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/2.jpg") (width . 120) (height . 90)) ((quality . "end") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/3.jpg") (width . 120) (height . 90)))) ((title . "VIV RICHARDS - KING OF CRICKET - 1987 Documentary") (videoId . "nmP4S-cmR9k") (lengthSeconds . 3290) (videoThumbnails ((quality . "maxres") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/maxres.jpg") (width . 1280) (height . 720)) ((quality . "maxresdefault") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/maxresdefault.jpg") (width . 1280) (height . 720)) ((quality . "sddefault") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/sddefault.jpg") (width . 640) (height . 480)) ((quality . "high") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/hqdefault.jpg") (width . 480) (height . 360)) ((quality . "medium") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/mqdefault.jpg") (width . 320) (height . 180)) ((quality . "default") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/default.jpg") (width . 120) (height . 90)) ((quality . "start") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/1.jpg") (width . 120) (height . 90)) ((quality . "middle") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/2.jpg") (width . 120) (height . 90)) ((quality . "end") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/3.jpg") (width . 120) (height . 90)))))) 0)
(#f(compiled-function (elt) #<bytecode 0x1699b940fa8aa4ed>) ((type . "playlist") (title . "Great Cricket Documentaries") (playlistId . "PLnarSCJWu_W9QXQ1LsgrWM5DB52YUFHvU") (playlistThumbnail . "https://i.ytimg.com/vi/MKcvHAec6GM/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLD7APuwd_69vqgfxdtm78Yf-PNxmA") (author . "Sohil Nikam") (authorId . "UCwkTZJSEUD5YzsyhC7J11vg") (authorUrl . "/channel/UCwkTZJSEUD5YzsyhC7J11vg") (authorVerified . :json-false) (videoCount . 9) (videos ((title . "Documentary | Crossing The Line") (videoId . "MKcvHAec6GM") (lengthSeconds . 3354) (videoThumbnails ((quality . "maxres") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/maxres.jpg") (width . 1280) (height . 720)) ((quality . "maxresdefault") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/maxresdefault.jpg") (width . 1280) (height . 720)) ((quality . "sddefault") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/sddefault.jpg") (width . 640) (height . 480)) ((quality . "high") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/hqdefault.jpg") (width . 480) (height . 360)) ((quality . "medium") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/mqdefault.jpg") (width . 320) (height . 180)) ((quality . "default") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/default.jpg") (width . 120) (height . 90)) ((quality . "start") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/1.jpg") (width . 120) (height . 90)) ((quality . "middle") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/2.jpg") (width . 120) (height . 90)) ((quality . "end") (url . "https://vid.puffyan.us/vi/MKcvHAec6GM/3.jpg") (width . 120) (height . 90)))) ((title . "VIV RICHARDS - KING OF CRICKET - 1987 Documentary") (videoId . "nmP4S-cmR9k") (lengthSeconds . 3290) (videoThumbnails ((quality . "maxres") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/maxres.jpg") (width . 1280) (height . 720)) ((quality . "maxresdefault") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/maxresdefault.jpg") (width . 1280) (height . 720)) ((quality . "sddefault") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/sddefault.jpg") (width . 640) (height . 480)) ((quality . "high") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/hqdefault.jpg") (width . 480) (height . 360)) ((quality . "medium") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/mqdefault.jpg") (width . 320) (height . 180)) ((quality . "default") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/default.jpg") (width . 120) (height . 90)) ((quality . "start") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/1.jpg") (width . 120) (height . 90)) ((quality . "middle") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/2.jpg") (width . 120) (height . 90)) ((quality . "end") (url . "https://vid.puffyan.us/vi/nmP4S-cmR9k/3.jpg") (width . 120) (height . 90)))))))
(mapcar #f(compiled-function (elt) #<bytecode 0x1699b940fa8aa4ed>) (... ... ... ... ... ... ... ... ... ... ... ... ... ... ...))
(#f(compiled-function #'sequence #<bytecode -0x1de5c536bcb44a02>) #f(compiled-function (elt) #<bytecode 0x1699b940fa8aa4ed>) (... ... ... ... ... ... ... ... ... ... ... ... ... ... ...))
(apply #f(compiled-function #'sequence #<bytecode -0x1de5c536bcb44a02>) #f(compiled-function (elt) #<bytecode 0x1699b940fa8aa4ed>) (... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) nil)
(seq-map #f(compiled-function (elt) #<bytecode 0x1699b940fa8aa4ed>) (... ... ... ... ... ... ... ... ... ... ... ... ... ... ...))
(seq-map-indexed #f(compiled-function (it index) #<bytecode 0xb1dd0bf69192f1f>) (... ... ... ... ... ... ... ... ... ... ... ... ... ... ...))
(empv--youtube-show-tabulated-results (... ... ... ... ... ... ... ... ... ... ... ... ... ... ...))
(empv-youtube-tabulated-last-results)
(#f(compiled-function (results) #<bytecode 0x844542c692f3409>) (... ... ... ... ... ... ... ... ... ... ... ... ... ... ...))
(#f(compiled-function (status) #<bytecode -0xfea9ed35aa8539b>) (:peer (:certificates (... ...) :certificate (:version 3 :serial-number "04:82:e5:e1:8a:6b:42:0e:b2:30:9d:4d:92:c7:59:04:82:57" :issuer "C=US,O=Let's Encrypt,CN=R3" :valid-from "2024-02-25" :valid-to "2024-05-25" :subject "CN=vid.puffyan.us" :public-key-algorithm "RSA" :certificate-security-level "Medium" :signature-algorithm "RSA-SHA256" :public-key-id "sha1:52:ae:04:24:49:5c:de:ba:8e:f6:49:9f:4f:58:d2:5b:26:a8:3e:64" :public-key-id-sha256 "sha256:65:27:5a:d6:0c:ef:60:32:95:34:37:43:86:2f:4d:0f:b5:fb:33:a9:f6:7e:81:ac:eb:e8:05:56:a5:52:a4:01" :certificate-id "sha1:ee:e4:66:37:a1:f4:d9:d8:e8:3a:0c:61:03:96:d4:1a:fe:55:ab:23" :pem "-----BEGIN CERTIFICATE-----\nMIIE6DCCA9CgAwIBAgISBILl4YprQg6yMJ1NksdZBIJXMA0GCSqGSIb3DQEBCwUA\nMDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD\nEwJSMzAeFw0yNDAyMjUxMzE4MzNaFw0yNDA1MjUxMzE4MzJaMBkxFzAVBgNVBAMT\nDnZpZC5wdWZmeWFuLnVzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nxB4fZjGclEUnuNKrN4oW/jZrZ0jkhbTydqtF6fBReQmxE40RFYP3z8QYoKDuZ657\nVILMhZPk6H12vEcqhHWzGwqwv8z9oUED6qZpL2yZ/GdaSLS2Zug5ZIyswesgLPmF\n1ElhWCLcwd6dj8AjrCKMulPsw3c9fCet4FFiZAT+pUJYSutjawSLMG2qPOsdJg+u\nQjuNmUsZ96mMyh6o9+AAvusdXQiczu25Zr11zmhcDs8xAsitfi+Zcvgxq2LF/V98\nfXfnr/84bvKl4AJmBP+1WBlGwhD4NhsL9ViG7WfMXQuOuunaLXiiTkMEbSqwaq2A\nl0xm2YjiGFn/e//9Mk1I+QIDAQABo4ICDzCCAgswDgYDVR0PAQH/BAQDAgWgMB0G\nA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1Ud\nDgQWBBSF4K0FSbmU0lI1mvWMllJdzjADqDAfBgNVHSMEGDAWgBQULrMXt1hWy65Q\nCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9y\nMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iub3Jn\nLzAZBgNVHREEEjAQgg52aWQucHVmZnlhbi51czATBgNVHSAEDDAKMAgGBmeBDAEC\nATCCAQMGCisGAQQB1nkCBAIEgfQEgfEA7wB2ADtTd3U+LbmAToswWwb+QDtn2E/D\n9Me9AA0tcm/h+tQXAAABjeChv+gAAAQDAEcwRQIgINCsfb9mAIDQ9UoUWcvax6Nl\nPz4SimZzvRH44JhLHK4CIQDM0YZ0ro0AYBRfoHXTQn5UimJCx+5Z3sqbEgVhBTsj\n2wB1AO7N0GTV2xrOxVy3nbTNE6Iyh0Z8vOzew1FIWUZxH7WbAAABjeChv/YAAAQD\nAEYwRAIgLI82H6CU2gF7kHqgBCdN9i5KwpAS52IxJ+uhZaUaWAwCIH0SLmTBLBTT\n4ak/+GsTYCdoDy3aYndezG5srDL+n5m+MA0GCSqGSIb3DQEBCwUAA4IBAQCJzZCb\nUzHPXSgZeH2eM8O9MfZ3D9524//xtzc5Mk2KEifMqJN6oDUjNc8pGMZ917v41z+6\nF1ehd4Omg1OxG46/8gLdsBTeKRlWF4r399S+ZoqpNzLHCR6K/sCvOB5L+xXQL3yp\nFAeUvNIkie9QcByyR5ZGiHJ8n9Lsov9rbmhCS++4ueU+QSNLoZR8WWsSO...") :key-exchange "ECDHE-RSA" :protocol "TLS1.3" :cipher "AES-256-GCM" :mac "AEAD" :encrypt-then-mac nil)))
(apply #f(compiled-function (status) #<bytecode -0xfea9ed35aa8539b>) (:peer (:certificates (... ...) :certificate (:version 3 :serial-number "04:82:e5:e1:8a:6b:42:0e:b2:30:9d:4d:92:c7:59:04:82:57" :issuer "C=US,O=Let's Encrypt,CN=R3" :valid-from "2024-02-25" :valid-to "2024-05-25" :subject "CN=vid.puffyan.us" :public-key-algorithm "RSA" :certificate-security-level "Medium" :signature-algorithm "RSA-SHA256" :public-key-id "sha1:52:ae:04:24:49:5c:de:ba:8e:f6:49:9f:4f:58:d2:5b:26:a8:3e:64" :public-key-id-sha256 "sha256:65:27:5a:d6:0c:ef:60:32:95:34:37:43:86:2f:4d:0f:b5:fb:33:a9:f6:7e:81:ac:eb:e8:05:56:a5:52:a4:01" :certificate-id "sha1:ee:e4:66:37:a1:f4:d9:d8:e8:3a:0c:61:03:96:d4:1a:fe:55:ab:23" :pem "-----BEGIN CERTIFICATE-----\nMIIE6DCCA9CgAwIBAgISBILl4YprQg6yMJ1NksdZBIJXMA0GCSqGSIb3DQEBCwUA\nMDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD\nEwJSMzAeFw0yNDAyMjUxMzE4MzNaFw0yNDA1MjUxMzE4MzJaMBkxFzAVBgNVBAMT\nDnZpZC5wdWZmeWFuLnVzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nxB4fZjGclEUnuNKrN4oW/jZrZ0jkhbTydqtF6fBReQmxE40RFYP3z8QYoKDuZ657\nVILMhZPk6H12vEcqhHWzGwqwv8z9oUED6qZpL2yZ/GdaSLS2Zug5ZIyswesgLPmF\n1ElhWCLcwd6dj8AjrCKMulPsw3c9fCet4FFiZAT+pUJYSutjawSLMG2qPOsdJg+u\nQjuNmUsZ96mMyh6o9+AAvusdXQiczu25Zr11zmhcDs8xAsitfi+Zcvgxq2LF/V98\nfXfnr/84bvKl4AJmBP+1WBlGwhD4NhsL9ViG7WfMXQuOuunaLXiiTkMEbSqwaq2A\nl0xm2YjiGFn/e//9Mk1I+QIDAQABo4ICDzCCAgswDgYDVR0PAQH/BAQDAgWgMB0G\nA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1Ud\nDgQWBBSF4K0FSbmU0lI1mvWMllJdzjADqDAfBgNVHSMEGDAWgBQULrMXt1hWy65Q\nCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9y\nMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iub3Jn\nLzAZBgNVHREEEjAQgg52aWQucHVmZnlhbi51czATBgNVHSAEDDAKMAgGBmeBDAEC\nATCCAQMGCisGAQQB1nkCBAIEgfQEgfEA7wB2ADtTd3U+LbmAToswWwb+QDtn2E/D\n9Me9AA0tcm/h+tQXAAABjeChv+gAAAQDAEcwRQIgINCsfb9mAIDQ9UoUWcvax6Nl\nPz4SimZzvRH44JhLHK4CIQDM0YZ0ro0AYBRfoHXTQn5UimJCx+5Z3sqbEgVhBTsj\n2wB1AO7N0GTV2xrOxVy3nbTNE6Iyh0Z8vOzew1FIWUZxH7WbAAABjeChv/YAAAQD\nAEYwRAIgLI82H6CU2gF7kHqgBCdN9i5KwpAS52IxJ+uhZaUaWAwCIH0SLmTBLBTT\n4ak/+GsTYCdoDy3aYndezG5srDL+n5m+MA0GCSqGSIb3DQEBCwUAA4IBAQCJzZCb\nUzHPXSgZeH2eM8O9MfZ3D9524//xtzc5Mk2KEifMqJN6oDUjNc8pGMZ917v41z+6\nF1ehd4Omg1OxG46/8gLdsBTeKRlWF4r399S+ZoqpNzLHCR6K/sCvOB5L+xXQL3yp\nFAeUvNIkie9QcByyR5ZGiHJ8n9Lsov9rbmhCS++4ueU+QSNLoZR8WWsSO...") :key-exchange "ECDHE-RSA" :protocol "TLS1.3" :cipher "AES-256-GCM" :mac "AEAD" :encrypt-then-mac nil)))
(url-http-activate-callback)
(url-http-content-length-after-change-function 888 6634 5746)
(url-http-wait-for-headers-change-function 1 6651 6650)
(url-http-generic-filter # "HTTP/1.1 200 OK\15\nServer: nginx/1.22.1\15\nDate: Wed, 20 Mar 2024 15:52:51 GMT\15\nContent-Type: application/json\15\nContent-Length: 5745\15\nConnection: keep-alive\15\nContent-Encoding: gzip\15\nAccess-Control-Allow-Origin: \15\nX-Frame-Options: sameorigin\15\nX-XSS-Protection: 1; mode=block\15\nX-Content-Type-Options: nosniff\15\nContent-Security-Policy: default-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; manifest-src 'self'; media-src 'self' blob: https://.googlevideo.com:443 https://.youtube.com:443; child-src 'self' blob:; frame-src 'self'; frame-ancestors 'none'\15\nReferrer-Policy: same-origin\15\nPermissions-Policy: interest-cohort=()\15\nStrict-Transport-Security: max-age=31536000; includeSubDomains; preload\15\nOnion-Location: http://grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad.onion/api/v1/search?q=cricket&type=playlist\15\n\15\n\37\213\10\0R\6\373e\0\377\315\235\351\222\342\306\232\206o%\273\35a\373\304\0307\22\273#\34\23B\10\20 6\261\2378A\10\20\222X$\320\302R\247\347:\346\347\374\233\353\233K\230\244\252\272\352\23\2\252q\347G\370\217\355\253\362\201Lx\362U\2462\363\237\377\376\354\0377\372\347?>oV\332qey\376\347\337>\373\226\277:\375\252\344\352\232OD\327\232.u\237\24\234i\260\326m_s-\335\243W}\373\3yF/m\326l\315U\305J?\30\367s\255A\213\253y\206\333WR\205|\212\37v\213\345]\27\374E\307\f\326\23[\263V\364\17M\337\337x\177|\371b\375~\364\255\265\361\373\324Y\177\331Y_\224\352tW\26\364i\272\244|1\2673}\256\5+\377\367\305\306\370Oo\273\3713\346h\307\365^\352\213U#/\25Sr\177Wu\255\355\262 \266\214|\261%\10\226$\17\205\326\237\177\376\354z\177\n\15;)\326\n\31\241\31\354g\343tn\2675\346\207\231\277\316d\207\363X\263X\13\364\225i\201o:.}9\252cZ+R\267\226\332\372\355\327\317o\260+\356\227\235QE\225\272\205\324\360\311;\232b\246\302q;\343\355\252\256{z;_\246\246f\333\372\352\313\207\327\367t\327\232[:-{\256\255<\375\267\317;k\246;\242\23\330\376\347?r\257?z\237\377\370\347\277\337\332\343\275\5\216\344+m\27\307\363,\333 \35S'5\313\326?\277\376\321\363\353\5\25H\177\277\322m\3037U}\352\3303Zf"\221J\276^\374\326\26/\250m\240\255,\377H\13Xk\7\367\271\235\3\27\266\23\375\243\3377\301|\324\354\337\3\357\274\251^\376\350\324N\364\17\367\326\3147?\377\301\361\331\370o\237M\3352L\372\3162|\374\277~\213r^[\370/\341\300\247\343\273\251\336\354\257\21\337\376.LK'\1,\231=\203\231\364\367wrB\237\371wN\22\276\251D\372\274*\365\231\25\254\357\255\303\313\244\4\17H\334\371;\372k\225w\245\241\0(w\336L\364\263~/\205\273\243\374\2655\233\255\364;\1\374\35\0\335\236\335Yz\342v\351\377:\225\377M\10=\271G\332\262X\26\332\5\225\304HU\256\227H\243HD\372\273\252\324\241\277\341r\331\f\20\3671\244\10{\335L\252\261\351\272\235[^P\4\237\2133S\4 =B\21Q\34\266" \21S\21\220\203\253\210P\35\342*\2\242\360\24\1)(\212\200\0\366\212\200\245\177\250\210\27I\\315u\337\374 \327IGV$\225\250\255\256\320\226\250/\204nAn\220|\243Q\215\6\274\306\3568\213u\315\331`\334\265*^\256\275Ye\270\205X.\34\224\3552U\351q\367\5\274a\323\265\353N\325xZ\356\231\4<\301\310X\345\366\364\3115\315\306\276\227O\266\373\375\216U\360s=S\n\7<\337\241\351\251c\255u\262\267|\223(\226\347\21\301\245\366\323\317\3\237?\252\17\262\25~\273\350o\206jU6\332\305\222\323\334_\17|\37\\1773\360e.\6\276S\262\373\26\277-\373\371U{D\245\37\35\227\376\336\3246\276\356z\204#\232=#\374y\353\275{\36Tu\324\363\34\227\3120\363<l\324\7x>\212\303\366<$bz\376\352\267\203\271\347Cu\210\353y\210\302\363<\244\240x\36\2\330{\36\226O\24\374.U$\236U\221\f\331!\223)\231\375RC(\4\27R E\262K\201\200\364\10;Dq\330v\200DL;@\16\256\35Bu\210k\7\210\302\263\3\244\240\330\1\2\330\333\1\226\376\243)\360\2061>E\323_\315\30\227\333\325\251\226Q+\271E\325\31\255s\351\205>\310/jB\20\317\310J\354\276\364w\210\5#\327\223\322\271l\222M\372[\31\343I1\337\324\32\345M\247m\16JY)Xv\33\261\301r\374\36\300\350\313\221m\352A\233\276\341\222KM\270\321\316#\237"\33\232\304'{\261\356\241\357\n\207\270\25\317\256s7\306\370>\270\376f\344\343Rwg\276\351\213\310\11\02728\250\314\250\301S<;\201\303V{\200\300\2438l\201C"\246\300\257\374\231\13<T\207\270\2\207(<\201C\n\212\300!\200\275\300a\351?\30\357\276I\341\377\376\347\177\377\373\315\f|\310\fIK)O7FJ\KQ3\244S\03433\0\320#\314\20\305a\233\1\0221\315\09...")

Is there any way to save a playlist to a file?

First, thank you for this awesome package.

I would like to know if there is a way to save a playlist to a file, and load it later?

For example, usually, I enqueue some songs from YouTube (using consult-empv-youtube), this works perfectly, however, there is no clear way how to save these links to a playlist so the next time I don't need to search for them again.

Note: Even when calling empv-save-and-exit, then exit and reopen Emacs, there is no way to reload the previous playlist!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.