isamert's webpage

Ekşisözlük, gündem, dikkat dağınıklığı ve Emacs

Ekşi kullanımımı azaltmaya çalışıyorum-hatta hiç girmemeye-fakat bu pek mümkün olmuyor. Nihayetinde ekşi'ye girişimin temel sebebinin gündem'e bakmak olduğunun farkına vardım. Gündem içerisinde de en çok merak ettiğim şey genel itibarıyla en çok entry girilen başlıkların neler olduğunu görmek. Fakat ekşi'de gündem tam olarak entry sayısına göre sıralanmıyor ve bu durum benim için sinir bozucu. Gündemi oluşturan 3-5 başlığa bakıp çıkmak isterken dikkatim diğer başlıklarla dağılıyor veya en çok entry girilen başlıkları bulayım derken zaman kaybediyorum. Zaten çoğu zaman entry'leri de merak etmiyorum, sadece bi başlıkları gözden geçirmek istiyorum. Bunun için çözümüm şu oldu:

curl --silent --header "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:137.0) Gecko/20100101 Firefox/137.0" https://eksisozluk.com/basliklar/gundem | grep '?a=popular' | sed -E 's/[ ]*href="(.*)">(.*) <small>(.*)<\\/small>(.*)/(\\3) \\2|||\\1/' | sort -V -r | uniq

2021-05-16 23:28 itibarıyla bu komutun çıktısı şöyle:

(696) 16 mayıs 2021 sedat peker açıklamaları
(675) 2020-2021 sezonu şampiyonu beşiktaş
(567) 16 mayıs 2021 içişleri bakanlığı genelgesi
(553) beşiktaş jean-claude billong skandalı
(482) fatih terim
(463) 22-23 mayıs 2021 yasak protestoları
(339) aynı anda 24 kızla sevgili olan öğretmen
(332) hafta sonu sokağa çıkma yasağı
...

Bir ihtimal başlığı açıp bir iki entry'e bakmak istersem diye de bunu interaktif bir Emacs fonksiyonuna sardım, o da şöyle:

(defun isamert/eksi-gundem-sirali ()
  "Eksi gundemini entry sayisina gore sirala ve `completing-read' yap."
  (interactive)
  (let* ((results (->>
                   (with-temp-buffer
                     (insert
                      (shell-command-to-string "curl --silent --header \"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:137.0) Gecko/20100101 Firefox/137.0\" https://eksisozluk.com/basliklar/gundem | grep '?a=popular' | sed -E 's/[ ]*href=\"(.*)\">(.*) <small>(.*)<\\/small>(.*)/(\\3) \\2|||\\1/' | sort -V -r | uniq"))
                     (goto-char (point-min))
                     (xml-parse-string)) ; Turkce karakterleri duzgun handle etmek icin
                   (s-trim)
                   (s-split "\n")
                   (--map (s-split "|||" it))
                   (--map `(,(car it) . ,(cadr it))))))
    (->>
     (completing-read "Baslik: "
                      (lambda (string predicate action)
                        (if (eq action 'metadata)
                            '(metadata
                              (display-sort-function . identity)
                              (cycle-sort-function . identity))
                          (complete-with-action action results string predicate))))
     (funcall (-flip 'assoc-string) results)
     (cdr)
     (format "https://eksisozluk.com/%s")
     (browse-url))))

O da böyle gözüküyor:

eksi_emacs.png

Browser üzerinde de sol frame'i ve ekşişeyler frame'ini uBlock origin aracılığıyla engelledim. Bu sayede entry okumak için girdiğimde sağdan soldan fırlayan şeyler dikkatimi dağıtmıyor. Umarım gelecekte bir vakit hiç girmem şu siteye.


Edit (2025-06-29)
Ülkeden taşındım ama hala şu lanet siteye giriyorum, kalite her zamankinden daha kötü. Bunun dışında:
  • Elisp kodunu sıralamayı bozmayacak şekilde güncelledim, önceki hali sadece selectrum kullanıyorsanız sıralamayı koruyordu, şimdi bütün completing-read wrapperları ile çalışmalı.
  • Bash kodunu Eksi tarafından bloklanmamak adına bir User-Agent içerecek şekilde güncelledim.
  • Önceki hali ile farkını buradan görebilirsiniz.

Similar posts

Comments