أبريل 01، 2009

Twiq v0.01: برنامج تويتر بإستخدام PyQt4

قضيت هذا الصباح محاولا تطوير برنامج للتواصل عبر خدمة التويتر (Twitter) و الآن أشارككم ما أنجزته. حاليا كل ما يقوم به البرنامج هو تسجيل الذخول و إسترجاع أسماء أصدقائك الذين تتابعهم و إرسال الرسائل إلى الخدمة.

البرنامج مازال في البداية لذلك سيحمل رقم الإصدار 0.01 :)


يمكن تحميل الشفرة المصدرية و الواجهة الرسومية من هنا.



#!/usr/bin/env python

# -*- coding: utf-8 -*-





## جزء خاص بتحديد الرخصة و حق الملكية

## Copyright (c) 2009 Mohammed Berdai stuntgp2000@gmail.com

## This program is free software; you can redistribute it and/or modify

## it under the terms of the GNU General Public License as published by

## the Free Software Foundation; either version 2 of the License, or

## (at your option) any later version.



## Version : 0.01



## إستدعاء الوحدات اللازمة

import sys, twitter, simplejson

from PyQt4 import QtGui, QtCore, uic

from urllib2 import HTTPError, URLError





## إنشاء البرنامج على شكل قسم يشتق من الكائن (كيو ويدجت)ـ

class TwiqGui(QtGui.QWidget):



    ## تهيئة المتغيرات

    usr = ''

    passwd = ''

    twiqy = None



    ## دالة بدء التشغيل

    def __init__(self, parent=None):

        ## تهيئة الكائن الأساسي و الواجهة الرسومية

        QtGui.QWidget.__init__(self, parent)

        uic.loadUi("twiqui.ui", self)



        ## تعطيل زر و نص إلرسالة حتى يتم الإتصال بخدمة التويتر

        self.lnTwitThis.setEnabled(False)

        self.pbTwit.setEnabled(False)



        ## ربط الكائنات الرسومية بالدوال التي ستثمثل وظيفتها

        self.connect(self.pbSignIn, QtCore.SIGNAL("clicked()"), self.SignIn)

        self.connect(self.lnTwitThis, QtCore.SIGNAL("textChanged(QString)"), self.UpdateLblRemaingChars)

        self.connect(self.pbTwit, QtCore.SIGNAL("clicked()"), self.TwitThis)





    def SignIn(self):

        ## في حالة عدم كتابة إسم المستخدم و كلمة السر يتم الإستعانة بإسم بحسابي على خدمة التويتر

        if self.lnLogin.text() == '' and self.lnPassword.text() == '':

            self.lnLogin.setText('SpinDev2K')

            self.lnPassword.setText('xxxxxx')



        self.usr = str(self.lnLogin.text())

        self.passwd = str(self.lnPassword.text())



        ## تسجيل الدخول في خدمة التويتر

        self.twiqy = TwiqCore(username = self.usr, password = self.passwd)



        ## ملء القائمة بأسماء أصدقائك الذي تتابعهم على خدمة التويتر

        for item in self.twiqy.FriendsScreenName():

            self.qlstFriends.addItem(item)



        ## تفعيل زر و نص إلرسالة و تعطيل كل من إطاري إسم المستخدم و كلمة السر و زر تسجيل الدخول

        self.lnLogin.setEnabled(False)

        self.lnPassword.setEnabled(False)

        self.pbSignIn.setEnabled(False)



        self.lnTwitThis.setEnabled(True)

        self.pbTwit.setEnabled(True)





    ## كلما كتب حرف في نص الرسالة يتم تحديث إطار عدد الحروف المتبقية

    def UpdateLblRemaingChars(self):

        i = 140 - self.lnTwitThis.text().length()

        self.qlblRemainingChar.setText(str(i))





    ## إرسال نص الرسالة إلى خدمة التويتر ثم إضافته إلى لائحة التوترة

    def TwitThis(self):

        if self.lnTwitThis.text() <> '':

            print self.usr, self.passwd

            status = self.twiqy.PostUpdate(self.lnTwitThis.text())



            row = 0 #self.qtblTwits.rowCount()

            self.qtblTwits.insertRow(row)

            item = QtGui.QTableWidgetItem(status.text)

            self.qtblTwits.setItem(row, 0, item)



            self.lnTwitThis.setText('')





## قسم خاص بخدمة التويتر

class TwiqCore(twitter.Api):

    ## دالة للتوصل بآخر الأحول العامة على خدمة التويتر

    def PublicStatus(self):

        statuses = self.GetPublicTimeline()



    ## دالة للتوصل بأسماء أصدقائك الذين تتابعهم

    def FriendsName(self):

        users = self.GetFriends()

        return [u.name for u in users]



    ## دالة للتوصل بالأسماء المستعارة لأصدقائك الذين تتابعهم

    def FriendsScreenName(self):

        users = self.GetFriends()

        return [u.screen_name for u in users]







## هنا مذخل بداية البرنامج حيث يتم توظيف القسم و عرض الواجهة الرسومية

if __name__ == "__main__":

    TwiqApp = QtGui.QApplication(sys.argv)

    mw = TwiqGui()

    mw.show()

    sys.exit(TwiqApp.exec_())


هناك تعليقان (2):

  1. غير معرف28/12/09 12:19 م

    واو , ما شاء الله عليك :)
    جارى التجربه ,,

    ردحذف
  2. غير معرف25/7/15 8:39 ص

    مثل هذي التطبيقات تستخدم غالبا في الخداع بإرسال الايميل والباسورد

    ردحذف