diff options
-rw-r--r-- | yeetube-search2.el | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/yeetube-search2.el b/yeetube-search2.el new file mode 100644 index 0000000..e09ff3e --- /dev/null +++ b/yeetube-search2.el @@ -0,0 +1,45 @@ + +(defvar yeetube--video-ids '()) +(defvar yeetube--video-titles '()) + +(defun yt-search2 (query) + "Search for QUERY." + (interactive "sYeetube Search: ") + (with-current-buffer + (url-retrieve-synchronously + (concat yeetube-query-url + "/search?q=" + (replace-regexp-in-string " " "+" query)) + t t) + (goto-char (point-min)) + (toggle-enable-multibyte-characters) + (yeetube--get-content-youtube) + (yeetube--draw-buffer query yeetube--video-titles yeetube--video-ids))) + + +(defun yeetube--get-content-youtube () + (setq yeetube--video-ids nil) + (setq yeetube--video-titles nil) + (while (and (< (length yeetube--video-ids) yeetube-results-limit) + (search-forward "videoId" nil t)) + (let* ((start (point)) + (end (search-forward ",")) + (videoid (buffer-substring + (+ start 3) + (- end 2)))) + (unless (or (member videoid yeetube--video-ids) + (not (and (>= (length videoid) 9) + (<= (length videoid) 13) + (string-match-p "^[a-zA-Z0-9_-]*$" videoid)))) + (push videoid yeetube--video-ids) + (search-forward "text") + (let* ((start (point)) + (end (search-forward ",\"")) + (title (buffer-substring + (+ start 3) + (- end 5)))) + (if (string-match-p "vssLoggingContext" title) + (pop yeetube--video-ids) + (push title yeetube--video-titles))))))) + +(setq yeetube-results-limit 15) |