2426

Üstün
Katılım
8 Ocak 2024
Mesajlar
1.269
Makaleler
1
Çözümler
10
Beğeniler
1.211
Kimse yapmadan ben yapayım dedim :D
Belirtilen bir konudaki çekiliş konusunda katılan kullanıcıları topluyor ve bu kullanıcılar arasından rastgele bir kazanan seçiyor.

Github

Python:
import random

import requests
from bs4 import BeautifulSoup


def get_usernames(url, page_count=1):
    usernames = []
    selected_usernames = set()
    for page in range(1, page_count + 1):
        response = requests.get(f"{url}?page={page}")
        if response.status_code == 200:
            soup = BeautifulSoup(response.text, "html.parser")
            comments = soup.find_all(class_="message-userContent")
            for comment in comments:
                if "Katılıyorum." in comment.text:
                    username = comment.find_previous(class_="username").text.strip()
                    if username is None:
                        username = ""
                    if username not in selected_usernames:
                        usernames.append(username)
                        selected_usernames.add(username)
    return usernames


def select_winner(usernames):
    if usernames:
        winner = random.choice(usernames)
        print("Kazanan:", winner)
    else:
        print("Katılım gösteren kullanıcı bulunamadı.")


def main():
    url = input("Çekiliş konusunun linkini girin: ")
    page_count = int(input("Sayfa sayısını girin: "))
    usernames = get_usernames(url, page_count)
    print("Toplam katılımcı sayısı:", len(usernames))
    print("Çekilişe katılan kullanıcılar:")
    for username in usernames:
        print(username)
    select_winner(usernames)


if __name__ == "__main__":
    print("wyltre tarafından yapılmıştır. github.com/wyltre")
    main()

Python indirin. Sonra modülleri kurun.

Bash:
pip install requests

Bash:
pip install beautifulsoup4

İster GitHub'dan ister buradan kodları alın ve .py olarak kaydedin.
CTRL + Shift sağ Click komut penceresini burada aç (Python dosyasında yapın bunu) "py dosyaismi.py"
Sonra konu linki girin, sonra sayfa sayısını ve bitti.
requests modülü: belirtilen Konu'dan sayfaları almak için.
Beautiful Soup modülü: belirtilen konuda kullanıcı yorumlarını ve kullanıcı adlarını bulmak için.
random modülü: kullanıcı adları listesinden rastgele bir kazanan seçmek için.
get_usernames fonksiyonu: belirtilen konudaki her bir sayfayı tarar ve "katılıyorum." ifadesini içeren yorumlardan kullanıcı adlarını alıyor. Daha önce seçilmiş kullanıcıları tekrar almaz.
select_winner fonksiyonu: kullanıcı adları listesinden rastgele bir kazanan seçiyor.
main fonksiyonu: kullanıcıdan çekiliş konusunun URL'sini ve sayfa sayısını alır. get_usernames fonksiyonunu kullanarak katılan kullanıcıları alır, ardından bu kullanıcıları ekrana yazdırır ve select_winner fonksiyonunu: kullanarak bir kazanan seçiyor.

Not: "Katılıyorum." ifadesini alıyor başka bir şey yazmayın.
 
Son düzenleyen: Moderatör:
Kimse yapmadan ben yapayım dedim :D
Belirtilen bir konudaki çekiliş konusunda katılan kullanıcıları topluyor ve bu kullanıcılar arasından rastgele bir kazanan seçiyor.

Github

Python:
import random

import requests
from bs4 import BeautifulSoup


def get_usernames(url, page_count=1):
    usernames = []
    selected_usernames = set()
    for page in range(1, page_count + 1):
        response = requests.get(f"{url}?page={page}")
        if response.status_code == 200:
            soup = BeautifulSoup(response.text, "html.parser")
            comments = soup.find_all(class_="message-userContent")
            for comment in comments:
                if "Katılıyorum." in comment.text:
                    username = comment.find_previous(class_="username").text.strip()
                    if username is None:
                        username = ""
                    if username not in selected_usernames:
                        usernames.append(username)
                        selected_usernames.add(username)
    return usernames


def select_winner(usernames):
    if usernames:
        winner = random.choice(usernames)
        print("Kazanan:", winner)
    else:
        print("Katılım gösteren kullanıcı bulunamadı.")


def main():
    url = input("Çekiliş konusunun linkini girin: ")
    page_count = int(input("Sayfa sayısını girin: "))
    usernames = get_usernames(url, page_count)
    print("Toplam katılımcı sayısı:", len(usernames))
    print("Çekilişe katılan kullanıcılar:")
    for username in usernames:
        print(username)
    select_winner(usernames)


if __name__ == "__main__":
    print("wyltre tarafından yapılmıştır. github.com/wyltre")
    main()

Python indirin. Sonra modülleri kurun.

Bash:
pip install requests

Bash:
pip install beautifulsoup4

İster GitHub'dan ister buradan kodları alın ve .py olarak kaydedin.
CTRL + Shift sağ Click komut penceresini burada aç (Python dosyasında yapın bunu) "py dosyaismi.py"
Sonra konu linki girin, sonra sayfa sayısını ve bitti.
requests modülü: belirtilen Konu'dan sayfaları almak için.
Beautiful Soup modülü: belirtilen konuda kullanıcı yorumlarını ve kullanıcı adlarını bulmak için.
random modülü: kullanıcı adları listesinden rastgele bir kazanan seçmek için.
get_usernames fonksiyonu: belirtilen konudaki her bir sayfayı tarar ve "katılıyorum." ifadesini içeren yorumlardan kullanıcı adlarını alıyor. Daha önce seçilmiş kullanıcıları tekrar almaz.
select_winner fonksiyonu: kullanıcı adları listesinden rastgele bir kazanan seçiyor.
main fonksiyonu: kullanıcıdan çekiliş konusunun URL'sini ve sayfa sayısını alır. get_usernames fonksiyonunu kullanarak katılan kullanıcıları alır, ardından bu kullanıcıları ekrana yazdırır ve select_winner fonksiyonunu: kullanarak bir kazanan seçiyor.

Not: "Katılıyorum." ifadesini alıyor başka bir şey yazmayın.
Katılıyorum. 💀 Elinize sağlık.
 
Ellerinize sağlık çok süper düper bombastik bir şey. Anahtar Kelime: Katılıyorum.
 
Son düzenleme:
Koda ilk "katılıyorum" un kabul edilmemesini (çekilişi düzenleyen kişi olduğu için), Tkinter modülünü kullanarak basit bir UI ve yedek kazanan seçilmesini ekledim.(not: Python bilgim çok düşük olduğu için yapay zekaya yazdırdım fakat fikirler benim.)

[CODE lang="python" title="Bahsettiğim kod"]
import requests
from bs4 import BeautifulSoup
import random
import tkinter as tk
from tkinter import messagebox

def get_usernames(url, page_count=1):
usernames = []
selected_usernames = set()
for page in range(1, page_count + 1):
response = requests.get(f"{url}?page={page}")
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
comments = soup.find_all(class_='message-userContent')
for comment in comments:
if "Katılıyorum." in comment.text:
username = comment.find_previous(class_='username').text.strip()
if username is None:
username = ""
if username not in selected_usernames:
usernames.append(username)
selected_usernames.add(username)
return usernames

def select_winner(usernames):
if usernames:
winner = random.choice(usernames)
return winner
else:
return None

def select_backup_winner(usernames, winner):
remaining_users = [user for user in usernames if user != winner]
if remaining_users:
backup_winner = random.choice(remaining_users)
return backup_winner
else:
return None

def run_giveaway():
url = url_entry.get()
page_count = int(page_count_entry.get())
usernames = get_usernames(url, page_count)

Remove the first participant (the one who posted the initial message)​

if usernames:
usernames.pop(0)

total_participants_label.config(text=f"Katılanlar: {len(usernames)}")

participant_list.delete(0, tk.END)
for username in usernames:
participant_list.insert(tk.END, username)

winner = select_winner(usernames)

if winner:
backup_winner = select_backup_winner(usernames, winner)

if backup_winner:
winner_label.config(text=f"Kazanan: {winner} (Asıl Kazanan)\nYedek Kazanan: {backup_winner}")
else:
winner_label.config(text=f"Kazanan: {winner}\nYedek Kazanan bulunamadı.")
else:
winner_label.config(text="Katılım gösteren kullanıcı bulunamadı.")

Create the main UI window​

root = tk.Tk()
root.title("Çekiliş Kazanan Seçici")

Create UI elements​

url_label = tk.Label(root, text="Çekiliş konusunun linkini girin:")
url_entry = tk.Entry(root, width=50)
page_count_label = tk.Label(root, text="Sayfa sayısını girin:")
page_count_entry = tk.Entry(root, width=10)
run_button = tk.Button(root, text="Çekilişi Başlat", command=run_giveaway)
total_participants_label = tk.Label(root, text="")
participant_list = tk.Listbox(root, width=50, height=10)
winner_label = tk.Label(root, text="")

Arrange UI elements​

url_label.pack()
url_entry.pack()
page_count_label.pack()
page_count_entry.pack()
run_button.pack()
total_participants_label.pack()
participant_list.pack()
winner_label.pack()

Start the UI event loop​

root.mainloop()

[/CODE]

Kurulum için normal modüllerin yanına "Tkinter" modulünü de kurmak gerekiyor.

[CODE title="CMD'ye girmeniz gereken kod"]pip install tk[/CODE]
 
Not: Kodda ufak tefek sorun denmeyecek hatalar var kod bitince kapanmıyor ve kişiler hiç belirgin değildi. Ben de bir güncelleme yaptım bunu da kullanabilirsiniz.
Dipnot: Bütün xenForo forumlarında çalışıyor. 💀


[CODE lang="python" title="Python revize edilmiş kod" highlight="2, 43, 29"]import requests
from bs4 import BeautifulSoup
import random

def get_usernames(url, page_count=1):

usernames = []
selected_usernames = set()
for page in range(1, page_count + 1):
response = requests.get(f"{url}?page={page}")
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
comments = soup.find_all(class_='message-userContent')
for comment in comments:
if "Katılıyorum." in comment.text:
username = comment.find_previous(class_='username').text.strip()
if username is None:
username = ""
if username not in selected_usernames:
usernames.append(username)
selected_usernames.add(username)
return usernames

def select_winner(usernames):


if usernames:
winner = random.choice(usernames)
print("|||||||||||||||||||||||||KAZANAN:", winner , "||||||||||||||||||||||||||")
else:
print("Katılım gösteren kullanıcı bulunamadı.")

def main():


url = input("Çekiliş konusunun linkini girin: ")
page_count = int(input("Sayfa sayısını girin: "))
usernames = get_usernames(url, page_count)
print("Toplam katılımcı sayısı:", len(usernames))
print("Çekilişe katılan kullanıcılar:")
for username in usernames:
print(username)
print("____________________________")
select_winner(usernames)

if name == "main":
print("wyltre tarafından yapılmıştır. github.com/wyltre")
main()


cikis = input("Kapatmak İçin Enter Tuşuna Basın.")[/CODE]
 
Not: Kodda ufak tefek sorun denmeyecek hatalar var kod bitince kapanmıyor ve kişiler hiç belirgin değildi. Ben de bir güncelleme yaptım bunu da kullanabilirsiniz.
Dipnot: Bütün XenForo forumlarında çalışıyor. 💀

[CODE lang="python" title="Python revize edilmiş kod" highlight="2, 43, 29"]import requests.
from bs4 import BeautifulSoup.
import random.

def get_usernames(url, page_count=1):

usernames = []
selected_usernames = set()
for page in range(1, page_count + 1):
response = requests.get(f"{url}?page={page}")
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
comments = soup.find_all(class_='message-userContent')
for comment in comments:
if "Katılıyorum." in comment.text:
username = comment.find_previous(class_='username').text.strip()
if username is None:
username = ""
if username not in selected_usernames:
usernames.append(username)
selected_usernames.add(username)
return usernames.

def select_winner(usernames):

if usernames:
winner = random.choice(usernames)
print("|||||||||||||||||||||||||KAZANAN:", winner , "||||||||||||||||||||||||||")
else:
print("Katılım gösteren kullanıcı bulunamadı.")

def main():

url = input("Çekiliş konusunun linkini girin: ")
page_count = int(input("Sayfa sayısını girin: "))
usernames = get_usernames(url, page_count)
print("Toplam katılımcı sayısı:", len(usernames))
print("Çekilişe katılan kullanıcılar:")
for username in usernames:
print(username)
print("____________________________")
select_winner(usernames)

if name == "main":
print("wyltre tarafından yapılmıştır. github.com/wyltre")
main()

cikis = input("Kapatmak İçin Enter Tuşuna Basın.")[/CODE]

1708883457061.webp


@1589 tebrikler :D

[CODE lang="python" title="Hataları düzeltilmiş"]if name == "main":
import requests.
from bs4 import BeautifulSoup.
import random.

def get_usernames(url, page_count=1):
usernames = []
selected_usernames = set()
for page in range(1, page_count + 1):
response = requests.get(f"{url}?page={page}")
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
comments = soup.find_all(class_='message-userContent')
for comment in comments:
if "Katılıyorum." in comment.text:
username = comment.find_previous(class_='username').text.strip()
if username is None:
username = ""
if username not in selected_usernames:
usernames.append(username)
selected_usernames.add(username)
return usernames.

def select_winner(usernames):
if usernames:
winner = random.choice(usernames)
print("|||||||||||||||||||||||||KAZANAN:", winner , "||||||||||||||||||||||||||")
else:
print("Katılım gösteren kullanıcı bulunamadı.")

def main():
url = input("Çekiliş konusunun linkini girin: ")
page_count = int(input("Sayfa sayısını girin: "))
usernames = get_usernames(url, page_count)
print("Toplam katılımcı sayısı:", len(usernames))
print("Çekilişe katılan kullanıcılar:")
for username in usernames:
print(username)
print("____________________________")
select_winner(usernames)

print("wyltre tarafından yapılmıştır. github.com/wyltre")
main()

cikis = input("Kapatmak İçin Enter Tuşuna Basın.")
[/CODE]

Birkaç hata vardı. Şu an sorunsuz çalışıyor.
GitHub'ı güncelliyorum.

Not: Kodda ufak tefek sorun denmeyecek hatalar var kod bitince kapanmıyor ve kişiler hiç belirgin değildi. Ben de bir güncelleme yaptım bunu da kullanabilirsiniz.
Dipnot: Bütün XenForo forumlarında çalışıyor. 💀

[CODE lang="python" title="Python revize edilmiş kod" highlight="2, 43, 29"]import requests.
from bs4 import BeautifulSoup.
import random.

def get_usernames(url, page_count=1):

usernames = []
selected_usernames = set()
for page in range(1, page_count + 1):
response = requests.get(f"{url}?page={page}")
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
comments = soup.find_all(class_='message-userContent')
for comment in comments:
if "Katılıyorum." in comment.text:
username = comment.find_previous(class_='username').text.strip()
if username is None:
username = ""
if username not in selected_usernames:
usernames.append(username)
selected_usernames.add(username)
return usernames.

def select_winner(usernames):

if usernames:
winner = random.choice(usernames)
print("|||||||||||||||||||||||||KAZANAN:", winner , "||||||||||||||||||||||||||")
else:
print("Katılım gösteren kullanıcı bulunamadı.")

def main():

url = input("Çekiliş konusunun linkini girin: ")
page_count = int(input("Sayfa sayısını girin: "))
usernames = get_usernames(url, page_count)
print("Toplam katılımcı sayısı:", len(usernames))
print("Çekilişe katılan kullanıcılar:")
for username in usernames:
print(username)
print("____________________________")
select_winner(usernames)

if name == "main":
print("wyltre tarafından yapılmıştır. github.com/wyltre")
main()

cikis = input("Kapatmak İçin Enter Tuşuna Basın.")[/CODE]

GitHub var mı hocam?

G

Koda ilk "katılıyorum" un kabul edilmemesini (çekilişi düzenleyen kişi olduğu için), Tkinter modülünü kullanarak basit bir UI ve yedek kazanan seçilmesini ekledim.(not: Python bilgim çok düşük olduğu için yapay zekaya yazdırdım fakat fikirler benim.)

[CODE lang="python" title="Bahsettiğim kod"]
import requests.
from bs4 import BeautifulSoup.
import random.
import tkinter as tk.
from tkinter import messagebox.

def get_usernames(url, page_count=1):
usernames = []
selected_usernames = set()
for page in range(1, page_count + 1):
response = requests.get(f"{url}?page={page}")
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
comments = soup.find_all(class_='message-userContent')
for comment in comments:
if "Katılıyorum." in comment.text:
username = comment.find_previous(class_='username').text.strip()
if username is None:
username = ""
if username not in selected_usernames:
usernames.append(username)
selected_usernames.add(username)
return usernames.

def select_winner(usernames):
if usernames:
winner = random.choice(usernames)
return winner.
else:
return None.

def select_backup_winner(usernames, winner):
remaining_users = [user for user in usernames if user != winner]
if remaining_users:
backup_winner = random.choice(remaining_users)
return backup_winner.
else:
return None.

def run_giveaway():
url = url_entry.get()
page_count = int(page_count_entry.get())
usernames = get_usernames(url, page_count)

Remove the first participant (the one who posted the initial message)​

if usernames:
usernames.pop(0)

total_participants_label.config(text=f"Katılanlar: {len(usernames)}")

participant_list.delete(0, tk.END)
for username in usernames:
participant_list.insert(tk.END, username)

winner = select_winner(usernames)

if winner:
backup_winner = select_backup_winner(usernames, winner)

if backup_winner:
winner_label.config(text=f"Kazanan: {winner} (Asıl Kazanan)\nYedek Kazanan: {backup_winner}")
else:
winner_label.config(text=f"Kazanan: {winner}\nYedek Kazanan bulunamadı.")
else:
winner_label.config(text="Katılım gösteren kullanıcı bulunamadı.")

Create the main UI window​

root = tk.Tk()
root.title("Çekiliş Kazanan Seçici")

Create UI elements​

url_label = tk.Label(root, text="Çekiliş konusunun linkini girin:")
url_entry = tk.Entry(root, width=50)
page_count_label = tk.Label(root, text="Sayfa sayısını girin:")
page_count_entry = tk.Entry(root, width=10)
run_button = tk.Button(root, text="Çekilişi Başlat", command=run_giveaway)
total_participants_label = tk.Label(root, text="")
participant_list = tk.Listbox(root, width=50, height=10)
winner_label = tk.Label(root, text="")

Arrange UI elements​

url_label.pack()
url_entry.pack()
page_count_label.pack()
page_count_entry.pack()
run_button.pack()
total_participants_label.pack()
participant_list.pack()
winner_label.pack()

Start the UI event loop​

root.mainloop()

[/CODE]

Kurulum için normal modüllerin yanına "Tkinter" modulünü de kurmak gerekiyor.

[CODE title="CMD'ye girmeniz gereken kod'ye girmeniz gereken kod"]pip install tk[/CODE]

GitHub var mı hocam?

Scrollbar ekleyip tekrar GitHub'ı güncelleyeceğim.

Güncel kodlar github da.
 
Son düzenleme: