Merhabalar yine baya bir uzun aradan sonra geçenlerde boş boş otururken python ve pyqt kullanarak site bilgilerini çeken bir ui uygulama yapmaya karar verdim. Program siteyle iligili günceler bilgiler olan google pagerank, google backlink, google index, alexa rank ve dmoz kaydının olup olmadığını kontrol ederek elde ettiği bilgileri sunmakta.

Yazımın başında da söylemiştim php ile iletişime geçiyor diye öncelikle php ile oturup bu bilgileri çeken bir betik oluşturup fonksiyonel hale getirdikten sonra python ile bilgileri istenen sitenin istekleri bu php ye iletiliyor php de kendisine gelen istekler doğrultusunda gerekli bilgileri alıp ekrana yazıyor python ile de bu dönen sonucu alıp kullanıcıya yansıtıyor.

Betiğimiz bir adet sınıfdan oluşmakta ve thread kullanmaktadır. Thread kullanmaktaki amacım ise tek seferde bütün istekleri yapmak yerine tek tek parçalara bölüp istek yapmak ki böylece python betiğinin performansı da sağlanmış olmaktadır.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#----------------------------------------------------------
# Yazar: Yusuf KOÇ ( Raiden )
# Web :  http://www.ysfkc.com
# ---------------------------------------------------------
# Copyright 2008 ysfkc.com
# Licensed under the GNU General Public License, version 2.
# See the file http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
 
 
import sys, re, urllib, thread
from PyQt4 import QtCore, QtGui
 
# Hadi Başlayalım
class siteInfo:
    def __init__(self, ui):
        self.ui = ui
        self.site = "http://www.ysfkc.com/dosyalar/siteinfo/"
 
    # Site adresinde http:// yoksa uyarılıyor...
    def httpKontrol(self):
        self.httpDurum = re.search("^(http:\/\/)?", str(self.ui.lineEdit.text())).group(1)
        if self.httpDurum == None:
            return False;
        else:
            return True;
 
    def basla(self):
        if str(self.ui.lineEdit.text()) == '':
            self.hata('Lütfen Kutucuğa Site Adresinizi Giriniz')
        else:
            if self.httpKontrol() == False:
                self.hata('Lütfen Site Adresine Http:// eklemeyi unutmayınız!')
            else:
                thread.start_new_thread(self.pagerank, ())
                thread.start_new_thread(self.backlink, ())
                thread.start_new_thread(self.gindex, ())
                thread.start_new_thread(self.alexa, ())
                thread.start_new_thread(self.dmoz, ())
 
    def pagerank(self):
        self.ui.pr.setText(unicode("Bilgiler Alınıyor...", "utf-8"))
        self._pagerank = urllib.urlopen(self.site + "?i=googleP&u=%s" % str(self.ui.lineEdit.text()))
        self.ui.pr.setText(self._pagerank.read())
 
    def backlink(self):
        self.ui.bl.setText(unicode("Bilgiler Alınıyor...", "utf-8"))
        self._backlink = urllib.urlopen(self.site + "?i=googleB&u=%s" % str(self.ui.lineEdit.text()))
        self.ui.bl.setText(self._backlink.read())
 
    def gindex(self):
        self.ui.gi.setText(unicode("Bilgiler Alınıyor...", "utf-8"))
        self._gindex = urllib.urlopen(self.site + "?i=googleI&u=%s" % str(self.ui.lineEdit.text()))
        self.ui.gi.setText(self._gindex.read())
 
    def alexa(self):
        self.ui.as.setText(unicode("Bilgiler Alınıyor...", "utf-8"))
        self._alexa = urllib.urlopen(self.site + "?i=alexa&u=%s" % str(self.ui.lineEdit.text()))
        self.ui.as.setText(self._alexa.read())
 
    def dmoz(self):
        self.ui.dk.setText(unicode("Bilgiler Alınıyor...", "utf-8"))
        self._dmoz = urllib.urlopen(self.site + "?i=dmoz&u=%s" % str(self.ui.lineEdit.text()))
        self.ui.dk.setText(self._dmoz.read())
 
    def temizle(self):
        self.ui.lineEdit.clear()
 
    def hakkinda(self,):
        mesaj = QtGui.QMessageBox()
        mesaj.setWindowTitle(unicode('Hakkında', 'utf-8'))
        mesaj.setText(unicode('Info:\nBu program python bilgilerimi pekiştirmek amacıyla kobay-02 olarak adlandırılıp yazılmıştır. :) Çalışma şekli PHP betiği ile iletişime geçip belirtilen site bilgilerini alır ve size sunar.\n\nDenek-No:\nPython-02\n\nYazar:\nYusuf KOÇ\n\nWeb:\nhttp://www.ysfkc.com', 'utf-8'))
        mesaj.exec_()
 
    def hata(self,yazi):
        mesaj = QtGui.QMessageBox()
        mesaj.setWindowTitle(unicode("Uyarı","utf-8"))
        mesaj.setText(unicode(yazi,"utf-8"))
        mesaj.exec_()

Bu betikte sys, re, urllib, thread ve pyqt olarak beş adet modülden yararlanılmıştır.. Linux da çalışması için PyQt’nin kurulu olması gerekmektedir.

Windows da programımızın çalışabilmesi için Python ve PyQt4 modülünün kurulu olması gerekmektedir. Bu ikisini buraya tıklayarak indirip kurabilirsiniz.

Download

Ve son olarak programımızdan bir görüntü koyarak yazımı noktalıyorum.. Resme tıklayarak büyük halini görebilirsiniz…