Technopat çekiliş scripti

@UserHakan Tutorial takip etmenin iyi olduğunu düşünmüyorum. Önemli olan dökümasyon okuyabilmek ve bilmek.
En başından algoritma, programlama dilleri nasıl çalışır diye öğrenirseniz dilleri çok rahat öğrenirsiniz.
C# ise syntax öğrendim ve basit if else function vs. öğrendim. 1-2 haftamı aldı.
 
Anladım sağ olun. Başarılarının devamını dilerim.
@LastPlayer hocam aklıma şöyle bir fikir geldi bu yaptığınız yazılımı şöyle yapabilir misiniz? Sadece katıldım yazanların ismini alsın.
 
Son düzenleme:
Zaten öyle değil mi?

"Şuanlık sadece "Katıldım." , "Katildim." ,"Katılıyorum. , "Katiliyorum." kelimelerini geçerli yorum olarak almaktadır. Güncellemeler ile birlikte filtreleme kısmından seçim yapabileceksiniz."
 
@LastPlayer hocam aklıma şöyle bir fikir geldi bu yaptığınız yazılımı şöyle yapabilir misiniz? Sadece katıldım yazanların ismini alsın.
Şuan da o şekilde hocam.


Fix:
  • Github Gist sistemi otomatik güncellemeyi desteklemediği için Github Repo geçilmiştir. Son sürüm kullanmak için Script tekrardan kurun.
  • Tek sayfalı olan konularda Yorumlar Toplanıyor kısmında kalma hatası düzeltildi.
 
Son düzenleme:
İçimden bir oha dedim. Helal olsun!
 
Merhaba.. Su konuda sizin script'i kullanarak cekilis yapmak istiyordum ancak script 101nci sayfaya gelince hata veriyor. Acaba caching'de bir hata mi var yoksa belirli bir kullanici adi mi hata yaratiyor olabilir?

Tekrar merhaba. Scripteki bir problem, eger mesajlar arasinda moderasyon ekibi mesaj yazmissa, kisi detay blogunda mesaj sayisi belirten hane olmadigindan hata veriyordu. Kodunuzu su sekilde duzenledim, boylece 221 sayfa mesajin 101nci sayfasindaki bu problemden kaynaklanan hata duzeldi.. Bilginize

JavaScript:
// ==UserScript==
// @name         Technopat Çekiliş
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Technopat Çekiliş
// @author       LastPlayer
// @match        https://www.technopat.net/sosyal/konu/*
// @icon         https://www.google.com/s2/favicons?domain=technopat.net
// @updateURL    https://github.com/LastPlayerTR/technopatcekilis/raw/main/technopatcekilis.user.js
// @downloadURL  https://github.com/LastPlayerTR/technopatcekilis/raw/main/technopatcekilis.user.js
// @grant        GM_setValue
// @grant        GM_getValue
// @require https://cdn.jsdelivr.net/npm/sweetalert2@11
// ==/UserScript==


(function () {
    function rand(items) {
        // "|" for a kinda "int div"
        return items[items.length * Math.random() | 0];
    }
    'use strict';
    function parsecomment(){
        let parsedcms = {}
        let list = document.getElementsByClassName("message m--post js-post js-inlineModContainer  ")
        var countt = 0;

        for (let item of list) {
            countt++;
            let qid = item.getAttribute("data-content")
            let msg = item.querySelector(".bbWrapper").innerHTML;
            let userExtras = item.querySelector(".m-userExtras");
            if(userExtras != null){
                let msgcount = item.querySelector(".m-userExtras").getElementsByClassName("pairs pairs--justified")[1].querySelector("dd").innerHTML.replace(/\./g, "") * 1
                let username = item.querySelector(".username ").innerHTML;
                if(username == 'sparrowv'){
                    debugger;
                }
                console.log(msg + " - " + msgcount + " - " + username)
                parsedcms[qid] = {msg : msg , msgcount : msgcount , username : username}
            }
        }
        return parsedcms

    }

    function sonucekrani(){
        let sonliste = {}
        let cekilislistesi = {}
        Swal.fire({
            title: 'Yorumlar toplandı!',
            text: 'Filtreleme Ekranına Aktarılıyorsunuz',
            icon: 'success',
            allowOutsideClick : false,
            timer : 5000
        }).then(result=>{
            Swal.fire({
                title: 'Kullanıcının minimum kaç mesajı olmalı?',
                icon: 'question',
                input: 'range',
                inputLabel: 'Sayı',
                inputAttributes: {
                  min: 0,
                  max: 1000,
                  step: 10
                },
                inputValue: 0
            }).then((result) => {
                if (result.isConfirmed) {
                    let dataz = GM_getValue('datas',{})
                    dataz = JSON.parse(dataz)
                    for (var datak of Object.keys(dataz)){
                        let data = dataz[datak]
                        //if(data.msgcount >= result.value && (data.msg.includes("Katılıyorum.") || data.msg.includes("Katıldım.") || data.msg.includes("Katiliyorum.") || data.msg.includes("Katildim.")) ){
                        if(data.msgcount >= result.value && (data.msg.includes("Katılıyorum") || data.msg.includes("Katıldım") || data.msg.includes("Katiliyorum") || data.msg.includes("Katildim")) ){
                            sonliste[datak] = data
                            cekilislistesi[data.username] = true
                        }
                    }
                    let winner = rand(Object.keys(cekilislistesi))
                    Swal.fire(
                        'Kazanan:',
                        winner,
                        'success'
                    ).then(res=>{
                        for(const datak of Object.keys(sonliste)){
                            let data = sonliste[datak]
                            if(data.username == winner){
                                window.location.replace(GM_getValue('mainurl',"https://example.com")+datak)
                            }

                        }
                        GM_setValue('ongoing' , false)
                        GM_setValue('mainurl' , undefined)
                        GM_setValue('datas' , undefined)

                    })


                }



            })
        })
        //console.log(JSON.parse(GM_getValue('datas',{})))
    }
    if(GM_getValue("ongoing", false) == true){
        Swal.fire({
            title: 'Yorumlar Sayılıyor!',
            text : "Sistem verileri düzenliyor lütfen bekleyin!",
            allowOutsideClick : false,
            didOpen: () => {
              Swal.showLoading()

            }
        })

        let data = parsecomment()

        let dataz = GM_getValue('datas',{})
        dataz = JSON.parse(dataz)

        Object.keys(data).forEach(e => {
            dataz[e] = data[e]
        });

        GM_setValue('datas',JSON.stringify(dataz))
        let btn =document.querySelector(".pageNav-jump.pageNav-jump--next")
        if(btn != undefined){
            window.location.replace(btn.getAttribute("href"))
        }else{
            sonucekrani()
            GM_setValue('ongoing' , false)
        }

    }
    const zaaa = document.createElement('button');
    zaaa.id = 'Tamamla';
    zaaa.innerText = "Çekilişi Başlat";
    zaaa.style.cursor = 'pointer';
    zaaa.style.position = 'fixed';
    zaaa.style.bottom = '10px';
    zaaa.style.right = '100px';
    zaaa.style.color = 'black';

    zaaa.style.zIndex = 10001; // css, lock to right bottom, get over everything in the page.
    zaaa.onclick = async function () {
        GM_setValue('ongoing' , false)
        GM_setValue('datas' , undefined)


        GM_setValue('mainurl' , window.location.href)
        let datam = parsecomment()

        GM_setValue('datas',JSON.stringify(datam))
        Swal.fire({
            title: 'Yorumlar Sayılıyor!',
            text : "Sistem verileri düzenliyor lütfen bekleyin!",
            allowOutsideClick : false,
            didOpen: () => {
              Swal.showLoading()
            }
        })
        let btn =document.querySelector(".pageNav-jump.pageNav-jump--next")
        if(btn != undefined){
            GM_setValue('ongoing' , true)
            window.location.replace(btn.getAttribute("href"))
        }else{
            GM_setValue('ongoing' , false)
            sonucekrani()
        }

    };


    if(GM_getValue("ongoing", false) == false){
        document.body.append(zaaa); // append the button directly to the body.
    }


    const resetgiveaway = document.createElement('button');
    resetgiveaway.id = 'Tamamla';
    resetgiveaway.innerText = "Verileri Sıfırla";
    resetgiveaway.style.cursor = 'pointer';
    resetgiveaway.style.position = 'fixed';
    resetgiveaway.style.bottom = '10px';
    resetgiveaway.style.right = '250px';
    resetgiveaway.style.color = 'black';

    resetgiveaway.style.zIndex = 10001; // css, lock to right bottom, get over everything in the page.
    resetgiveaway.onclick = async function () {
        GM_setValue('ongoing' , false)
        GM_setValue('datas' , undefined)
        GM_setValue('mainurl' , undefined)
    };



    document.body.append(resetgiveaway); // append the button directly to the body.




    // Your code here...
})();
 
Son düzenleme:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…