Hocam bu arada kodu yeniden güncelledim. Kazanan ve yedek kazanan sayısı belirlemeyi ekledim. Sanırsam GitHub üzerinden de yayınlanabiliyor fakat dediğim gibi kullanmayı bilmediğim için buradan yayınlayacağım. Kurulum için ek bir modül indirmeye gerek yok.
[CODE lang="python" title="Bahsettiğim Güncelleme"]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_count = int(winner_count_entry.get())
backup_count = int(backup_count_entry.get())
winners = []
backup_winners = []
for _ in range(winner_count):
winner = select_winner(usernames)
if winner:
winners.append(winner)
usernames.remove(winner)
for _ in range(backup_count):
backup_winner = select_backup_winner(usernames, random.choice(winners) if winners else None)
if backup_winner:
backup_winners.append(backup_winner)
usernames.remove(backup_winner)
if winners:
winner_label.config(text=f"Kazananlar: {', '.join(winners)}")
if backup_winners:
winner_label.config(text=f"Kazananlar: {', '.join(winners)}\nYedek Kazananlar: {', '.join(backup_winners)}")
else:
winner_label.config(text=f"Kazananlar: {', '.join(winners)}\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)
winner_count_label = tk.Label(root, text="Kazanan sayısını girin:")
winner_count_entry = tk.Entry(root, width=10)
backup_count_label = tk.Label(root, text="Yedek kazanan sayısını girin:")
backup_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()
winner_count_label.pack()
winner_count_entry.pack()
backup_count_label.pack()
backup_count_entry.pack()
run_button.pack()
total_participants_label.pack()
participant_list.pack()
winner_label.pack()
# Start the UI event loop
root.mainloop()
[/CODE]
[CODE lang="python" title="Bahsettiğim Güncelleme"]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_count = int(winner_count_entry.get())
backup_count = int(backup_count_entry.get())
winners = []
backup_winners = []
for _ in range(winner_count):
winner = select_winner(usernames)
if winner:
winners.append(winner)
usernames.remove(winner)
for _ in range(backup_count):
backup_winner = select_backup_winner(usernames, random.choice(winners) if winners else None)
if backup_winner:
backup_winners.append(backup_winner)
usernames.remove(backup_winner)
if winners:
winner_label.config(text=f"Kazananlar: {', '.join(winners)}")
if backup_winners:
winner_label.config(text=f"Kazananlar: {', '.join(winners)}\nYedek Kazananlar: {', '.join(backup_winners)}")
else:
winner_label.config(text=f"Kazananlar: {', '.join(winners)}\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)
winner_count_label = tk.Label(root, text="Kazanan sayısını girin:")
winner_count_entry = tk.Entry(root, width=10)
backup_count_label = tk.Label(root, text="Yedek kazanan sayısını girin:")
backup_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()
winner_count_label.pack()
winner_count_entry.pack()
backup_count_label.pack()
backup_count_entry.pack()
run_button.pack()
total_participants_label.pack()
participant_list.pack()
winner_label.pack()
# Start the UI event loop
root.mainloop()
[/CODE]
Son düzenleme: