Göz ardı edilen listesindekileri son görülmelerine göre sıralayan script

Ozan Güven

Kilopat
Katılım
19 Aralık 2015
Mesajlar
3.863
Makaleler
5
Çözümler
35
1656714887800.png


1000 kişilik limiti kimse yükseltmediği için böyle bir scriptçik yazdım. Amaç uzun zamandır online olmayan üyeleri unignore ederek boş yer açmak.

Gördüğüm kadarıyla herkeste bir GNU/Linux dağıtımı kurulu, o yüzden Windows sürümüyle uğraşmadım bu sefer. Selenium'un çalışması için Gecko gerekiyor.

Göz ardı edilen üyelerin sayfalarına girip son görülme tarihlerini alıyor, 3 aydır online olmayanları işlem sonunda tarihe göre sıralı şekilde veriyor. Unignore işlemi de otomatik yapılabilirdi ama özellikle yapmak istemedim, saçma bi' sebepten herkesi unignore ederse hoş olmaz 🤣

İki karanlık temada da denedim, problem yaşamadım. Hata alan ya da önerisi olan varsa yazmaktan çekinmeyin.

Python:
import time
from selenium.webdriver import Firefox
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.options import Options
from selenium.common.exceptions import NoSuchElementException
from datetime import datetime
opt = Options()
opt.set_preference("permissions.default.image", 2)
today = int(datetime.today().timestamp())
browser = Firefox(options=opt)
browser.get("https://www.technopat.net/sosyal/hesap/ignored")
input("Login")
ignored = browser.find_elements(By.CLASS_NAME, "username")
url = []
for i in ignored:
    url.append(i.get_attribute("href"))
print(f"{len(ignored)} kişi var sanırım sayfada")
for i in url:
    browser.get(i)
    try:
        times = browser.find_element(By.CLASS_NAME, "memberHeader-blurbContainer").find_elements(By.TAG_NAME, "time")
        username = browser.find_element(By.CLASS_NAME, "username").text
        if len(times) > 1 and today - int(times[1].get_attribute("data-time")) > 2592000*3:
            browser.find_element(By.XPATH, '/html/body/div[1]/div[2]/div[1]/div/div/div[3]/div[3]/div/div/div/div/div/div[2]/div[2]/div[1]/a[2]').click() #unignore
            time.sleep(1)
            print(f"Unignored: {username}")
    except NoSuchElementException: #Profili/son görülme tarihi gizli olanlar
        pass
input("Görev tamam")
browser.quit()

Kod:
Unignored: adolfhamid
Unignored: ahmetdemir7137
Unignored: aliali71
Unignored: Alice Busra Alcinar
Unignored: alismloztrk
Unignored: anonimforum
Unignored: azzentor
Unignored: cagataybbbb
Unignored: cihn06
Unignored: corumluapo19
Unignored: dksişm
Unignored: Ellie Williams
Unignored: erzurumeniyioyundur
Unignored: Esadikiz
Unignored: fedex
Unignored: Flennax
Unignored: Fuski
Unignored: Gewer
Unignored: GTX 1050
Unignored: Gtx 2060 süper
Unignored: Güney Çelik
Unignored: Hamza Etli
Unignored: hesapkapalı
Unignored: hitsizler
Unignored: iNoxy
Unignored: ırmakovski
Unignored: istanbluevotka
Unignored: kral451234
Unignored: MAFYA MUCO
Unignored: medgang
Unignored: memo317
Unignored: Mert_3458
Unignored: Mon oyun
Unignored: Mr.Bubbles
Unignored: MuhammetDAĞ
Unignored: Mummyss
Unignored: neorist
Unignored: Nida hanne
Unignored: Night_Mare
Unignored: Oğdel
Unignored: olympos14
Unignored: Onelight
Unignored: oturgaçlı gagalaç
Unignored: piherm
Unignored: polS
Unignored: problem çözen üstad
Unignored: pylex
Unignored: Recep pekmeztaş
Unignored: REİStr
Unignored: ricyrich
Unignored: roottoorr
Unignored: sosodllero
Unignored: sucukcanavarı
Unignored: Teğmen34
Unignored: theboss2611
Unignored: tkl5t86bis
Unignored: Trerdem
Unignored: TürkçeYazılımKonatı
Unignored: utku0707

Göz ardı edilen üye sayısı tam 1000 olarak görünmüyorsa sorun göz ardı edildikten sonra hesabı silinen üyelerin limitte boş yer açmaması olabilir, emin değilim. Bende de 6 eksik çıkıyor 🤷‍♂️
 
Son düzenleyen: Moderatör:
Eğer listenizde gerçekten 1000 kişi varsa bu işlem Technopat'a 1-2 saniye içinde 1000 tane istek göndermek demektir. İsteklerin bir kısmının başarısız olacağı aşikar olsa da kalan kısmı bile CloudFlare tarafından banlanmanıza sebep olabilir(İlk yapışınızda ban yemeseniz de sonradan yiyebilirsiniz).
 
Bu script insaflı yine, saniyede 3-5 kişi işliyor, 1000 kişiyi bitirmesi de 4-5 dakika alıyor. Multithreading/multiprocessing eklemiş olsam belki problem olurdu, o da belki çünkü bundan çok daha fazla veriyi çeken denemelerimde de problem yaşamadım hiç.
 

Yeni konular

Geri
Yukarı