Jump to content

Philosophical Research:RatingHub/YT/swcclectures2031

From Philosophical Research
Revision as of 10:12, 17 May 2025 by Reversedragon (talk | contribs) (archive lisp program as-is; cr. 2023-11-06T09:53:06Z)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Program

;;;; # channel @swcclectures2031
(asdf:load-system "channel-rating")
(defpackage :reversedragon3.rating.swcc-lectures
   (:shadowing-import-from :reversedragon3.rating  #:rating)
   (:use :common-lisp))
(in-package :reversedragon3.rating.swcc-lectures)
;; before I forget again - these lectures are from Tsinghua University by Associate Professor Feng Wuzhong at the School of Marxism. I always forget his name for unknown reasons

(defun main ()
   (let (likes dislikes num-likes num-dislikes)
   (setq
      likes (append
         (list  ; regular
            'GxbKOjXnE-0
            'TYlLBGbqrxI  "HI-0m8PB_NE" 'TxiNbKDzTIM  'Wa4BL0LI-0o  'ZpNZx2UvLTM  'DcA52cQR-rM
            'HEjODjnfq-o  '6Umh4WBdmTk  'jne1iyQv2No  'vGFUAB3-GRY  '-mXRNDec06E  'DpIlhFUFqPs
            '53IYYrEia9I  'uLoaPivZa6M  'fgsH898PRDw  "c_SdOf-DNEI" '90UKrrp5JG4  'lf3VW9wzl1g
            'LFDmtTIa6UI  'rkI2NEPNOi0  "zt_ca5xr6q0" "4_x4Mv6Utm4" 'Y3a7TRsCbDM  'bP-Vp8gWDd0
            'LfzJnLPwyUw  'HwonrsZ8R7o  'n8Lor36nT8o  'VainzFGFnLA  '62mvMWJHt8g  'cPYoq9Nb2bA

            ;; chapter 4
            )
         nil)
      
      ;;dislikes (append
      ;;   nil
      ;;   nil)
      )
   
   (rating likes dislikes)
   ))

(print (main))


;; :: cr. 2023-11-06T09:53:06Z
;; :: ed. 2024-04-16T21:57:23Z
;;      date began 'serious review' by chapter

Lisp library

;;; toolkit for rating-sheets
(defpackage :reversedragon3.rating
   (:use :common-lisp)
   ;; (:local-nicknames )
   (:export
      ;; #:nearest-pow10 #:deduplicate
      #:rating #:stylesheet
))
(in-package :reversedragon3.rating)

(defun nearest-pow10 (value)  ; round up to nearest power of 10, such as 70 -> 100
   (expt 10 (ceiling (expt value (/ 1 10)))))

(defun deduplicate (list)
   (let ((known-id (make-hash-table :test 'equal))
          result canonical stored)
   (dolist (item list)
      (setq
         canonical
            (if (stringp item)
               item  (symbol-name item))
         stored (gethash (string-upcase canonical) known-id))
      (cond
         ((equal canonical stored)
            (format t "Item ~a matched known item ~a~%" canonical stored))
         (t
            (setf
               (gethash (string-upcase canonical) known-id) canonical
               result (cons canonical result))
            ))
      (setq  stored nil  canonical nil))
   (reverse result)))

(defun rating (likes dislikes  &optional neutral)
   (setq
      likes    (deduplicate likes)
      dislikes (deduplicate dislikes)
      neutral  (deduplicate neutral))
   (let* (
      (num-likes    (length likes))
      (num-dislikes (length dislikes))
      (total        (+ num-likes num-dislikes (length neutral)))
      (percentage-likes
         (truncate (* (nearest-pow10 total) (/ num-likes total))))
      (percentage-dislikes
         (truncate (* (nearest-pow10 total) (/ num-dislikes total))))
   )
   (list  num-likes num-dislikes  percentage-likes percentage-dislikes)))

(defun stylesheet (videos)
   (let ((result
      (make-string-output-stream)))
   (format result ".unlikely-dummy-item~%")
   (dolist (item videos)
      (format result
         ", .watch-active-metadata[video-id=\"~A\" i] div, a.ytd-rich-grid-media[href*=\"~A\" i]~%"
         item item))
   (format result "{ background-color: #9f9ff7; }~%~%.watch-active-metadata div * { background-color: transparent !important; }")
   (get-output-stream-string result)))

[Note: it's been a while since this code has been tested, so I do not know if it works.]