Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
5.5 kB
34
Indexable
Never
import sys
import requests
from bs4 import BeautifulSoup
import pandas as pd
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QTextBrowser, QVBoxLayout, QSizePolicy
from PyQt5.QtGui import QFont, QIcon
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QDesktopServices

favicon_path = 'C:/Users/mahmu/OneDrive/Masaüstü/BasarıSıralamaları/medicon.ico'
app = QApplication(sys.argv)
app.setWindowIcon(QIcon(favicon_path))

# İlk kod bloğu: Verileri web sitesinden al ve Excel'e kaydet
url = 'https://www.tercihsiralamalari.com/bolum/tip'
response = requests.get(url)

if response.status_code == 200:
    # Sayfanın kaynak kodu
    page_content = response.text

    # Beautiful Soup ile sayfanın içeriğini analiz et
    soup = BeautifulSoup(page_content, 'html.parser')

    # tbody'yi bulun
    tbody = soup.find('tbody')

    # tbody içindeki her bir tr'yi bulun
    rows = tbody.find_all('tr')

    # Verileri bir veri çerçevesine (DataFrame) ekleyin
    data = []
    for row in rows:
        cells = row.find_all(['th', 'td'])
        row_data = [cell.get_text(strip=True) for cell in cells]
        data.append(row_data)

    # Veri çerçevesini oluşturun
    df = pd.DataFrame(data, columns=['Üniversite Adı', 'Bölüm', 'Puan Türü', 'Kontenjan', 'Yerleştirme Puanı', 'Başarı Sırası'])

    # Veriyi Excel dosyasına kaydedin
    df.to_excel('Sıralamalar.xlsx', index=False)

class SiralamaUygulamasi(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('Sıralama Bazlı Tercih Sonuç Uygulaması')
        self.setMinimumWidth(400)
        self.setMinimumHeight(400)

        font = QFont()
        font.setPointSize(13)

        self.calculate_button = QPushButton('Sıralamanı Hesapla')
        self.calculate_button.setFont(font)
        self.calculate_button.clicked.connect(self.open_calculation_website)

        self.label = QLabel('Lütfen bir değer girin:')
        self.label.setFont(font)

        self.textbox = QLineEdit(self)
        self.textbox.setFont(font)
        self.textbox.setPlaceholderText('Örn. 21.482 olarak yazınız.')  # Placeholder ekleme
        self.textbox.returnPressed.connect(self.show_rankings)  # Enter tuşuna basıldığında show_rankings fonksiyonunu çağır

        self.show_results_button = QPushButton('Sonuçları Göster')
        self.show_results_button.setFont(font)
        self.show_results_button.clicked.connect(self.show_rankings)

        self.result_label = QTextBrowser()
        self.result_label.setFont(font)
        self.result_label.setReadOnly(True)
        self.result_label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

        self.layout = QVBoxLayout()
        self.layout.addWidget(self.calculate_button)
        self.layout.addWidget(self.label)
        self.layout.addWidget(self.textbox)
        self.layout.addWidget(self.show_results_button)
        self.layout.addWidget(self.result_label)

        self.setLayout(self.layout)

    def open_calculation_website(self):
        # Web sayfasını açmak için QDesktopServices kullanılır
        url = QUrl('https://ertansinansahin.com/yks-tyt-ayt-puan-hesaplama-ve-siralama-hesaplama/')
        QDesktopServices.openUrl(url)

    def show_rankings(self):
        girilen_deger_str = self.textbox.text()
        if ',' in girilen_deger_str:
            girilen_deger_str = girilen_deger_str.replace(',', '.')
        try:
            girilen_deger = float(girilen_deger_str)
        except ValueError:
            girilen_deger = None

        excel_verileri = pd.read_excel('Sıralamalar.xlsx')
        excel_verileri = excel_verileri.sort_values(by='Başarı Sırası')

        en_yakin_deger = float('inf')

        for deger_str in excel_verileri['Başarı Sırası']:
            try:
                deger = float(deger_str)
            except ValueError:
                continue

            if girilen_deger is not None and girilen_deger <= deger:
                en_yakin_deger = deger
                break

        universiteler = []

        for i, deger_str in enumerate(excel_verileri['Başarı Sırası']):
            try:
                deger = float(deger_str)
            except ValueError:
                continue

            if deger >= en_yakin_deger:
                universite_adi = excel_verileri.loc[i, 'Üniversite Adı']
                bolum = excel_verileri.loc[i, 'Bölüm']
                basari_sirasi = deger
                universiteler.append((universite_adi, bolum, basari_sirasi))

        if universiteler:
            sonuc = f"YERLEŞEBİLECEĞİNİZ ÜNİVERSİTELER:\n <br> <br>"
            for universite_adi, bolum, basari_sirasi in universiteler:
                sonuc += f"<b style='color:purple;'>Üniversite Adı:</b> {universite_adi}<br>"
                sonuc += f"<b style='color:purple;'>Bölüm:</b> {bolum}<br>"
                sonuc += f"<b style='color:purple;'>Başarı Sıralaması:</b> {basari_sirasi}<br><br>"
            self.result_label.setHtml(sonuc)
        else:
            self.result_label.setText("Üzgünüz! Herhangi bir yere yerleştirilemediniz.")

def main():
    app = QApplication(sys.argv)
    uygulama = SiralamaUygulamasi()
    uygulama.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()