xchat-exaile eklentisi

XChat Resim Göndericisinden sonra ikinci eklentimi de yaptım. Exaile‘de çalan şarkı türkü ne varsa bulunduğunuz kanalda gösteriyor.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import xchat
import commands
import random

__module_name__ = "Exaile"
__module_version__ = "0.1"
__module_description__ = "Exailede çalan şarkıyı türküyü şeyeder."

def exa(word, word_eol, userdata):
        turkucu = commands.getoutput("exaile --get-artist")
        album = commands.getoutput("exaile --get-album")
        parca = commands.getoutput("exaile --get-title")

        xchat.command("me %s - %s albümünden "%s" dinliyor. (Exaile)" % (turkucu, album, parca))

xchat.hook_command('exa', exa)
xchat.prnt(__module_name__ + ' v' + __module_version__ + ' loaded..')

Bu dosyayı bir yere kaydedip xchat’te XChat » Load Plugin or Script menüsünden dosyayı göstererek çalıştırabilirsiniz. /exa komutu ile o an dinlediğiniz şeyi gösterirsiniz.

XChat Resim Göndericisi

IRC’ye şipşak ekran görüntüsü göndermek için bir xchat eklentisi yaptım. Aşağıda:

#!/usr/bin/python
from os import system
import xchat, httplib, urllib, base64, sys

__module_name__ = "Resim Gonderici"
__module_version__ = "0.1"
__module_description__ = "Ekran goruntusunu gonderir."

def ss(words, word_eol, userdata):
        system("import /tmp/xchat-ss.jpg")
        cnn     = httplib.HTTPConnection('s.tugrul.org:80')
        gonder  = cnn.request('POST',
                                '/r/remoteUpload.php',
                                urllib.urlencode({'image': base64.b64encode(open('/tmp/xchat-ss.jpg').read())}),
                                {'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'text:plain'})
        xchat.command("me screenshot: " + cnn.getresponse().read())
        cnn.close
xchat.hook_command("ss", ss, help="/ss")

Bu dosyayı bir yere kaydedip xchat’te XChat » Load Plugin or Script menüsünden dosyayı göstererek çalıştırabilirsiniz.
/ss komutunu verdikten sonra fare imleci + şeklini alır. Göndermek istediğiniz alanı seçip bırakarak komutu tamamlarsınız. Alan seçmeyip yalnızca tıklarsanız, seçtiğiniz pencerenin tümünü gönderir.
Sonucu /me [link] şeklinde komutu verdiğiniz IRC penceresine yazar.

İki önemli şey:
* import komutunun çalışması için imagemagick paketinin yüklü olması gerekir.
* Resimler 3 saatte bir rm -f komutuyla silinir. Bu yüzden yalnızca anlık işleriniz için kullanın.

Çift monitör ile Guake

Guake’nin varlığından haberdar olduğumdan beri Yakuake yerine kendisini kullanıyorum. Pek de memnundum, ta ki ikinci monitörümü takana kadar. İki monitörü xinerama özelliğiyle kullanıyorum. Bu da ekran genişliğini 1600 + 1280 pixel yapıyor. Guake de ekran genişliği olarak bunu algılıyor doğal olarak. Bir genişlik ayarı da olmadığından beni epeydir sinir etmekteydi bu durum. Nedense kodu indirip bir bakmak geldi içimden. Neden mıncıklamayayım dedim. Sitesinden kodu indirdim ve aşağıdaki değişikliği yapınca durum düzeldi. Şimdi yalnızca soldaki monitörde görüyorum Guake’yi. Çözüm benim işimi görüyor..

src/guake.py:

    def get_window_size(self):
        width = self.window.get_screen().get_width()
        height = self.client.get_int(GCONF_PATH+'general/window_size')
        return 1600, height

Değişikik 751. satırda. width yerine 1600 gönderiyoruz.

Sonsuz kategorilendirme

Sonsuz kategorilendirme için güzel bir fonksiyon:

function kategori($lev, $par, $arr)
{
	foreach ($arr as $a)
	{
		if($a[2] == $par)
		{
			for($i = 0; $i < $lev; $i++)
				echo " »";
			echo $a[1]."
n"; kategori($lev + 1, $a[0], $arr); } } } $kategoriler = array( array(1, 'Bilgisayar', 0), array(2, 'Donanım', 1), array(3, 'İşletim Sistemi', 1), array(4, 'Ekran Kartı', 2), array(5, 'Nvidia', 4), array(6, 'ATI', 4), array(7, 'İşlemci', 2), array(8, 'Intel', 7), array(9, 'AMD', 7), array(10, 'Linux', 3), array(11, 'Debian', 10), array(12, 'Ubuntu', 10), ); kategori(0, 0, $kategoriler);
#!/usr/bin/python

kategoriler = [
	[1, 'bilgisayar', 0],
	[2, 'donanim', 1],
	[3, 'isletim sistemi', 1],
	[4, 'ekran karti', 2],
	[5, 'nvidia', 4],
]

def f(seviye, par, arr):
	for a in arr:
		if a[2] == par:
			for i in range(seviye):
				print '+',
			print a[1]
			f(seviye+1, a[0], arr)

f(0, 0, kategoriler)