August 28, 2010 - Tagged as: python, tr.
Nautilus scriptleri işimi acayip kolaylaştırıyor, yazımı da çok kolay, bir gün içerisinde bir şeyi birden fazla kez yapıyorsam, o işlemi nautilus scripti aracılığıyla yapmaya çalışıyorum artık. Python ile tabii ki..
Bu seferki seçtiğiniz dosyaları(veya klasörleri)(birden fazla seçebilirsiniz), FTP sunucunuzda belirttiğiniz klasöre gönderiyor. Harici bir kütüphane kullanmadım, FTP işlemleri için ftplib kullandım. ftplib neredeyse bir kütüphane değil istemci, çok basit birkaç komutla her işinizi halledebilirsiniz.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ftplib, os, sys
try:
import pynotify
except ImportError:
= False
uyar else:
= True
uyar = 0
sayac # Debug icin, silinebilir
# sys.stderr = open('/home/osa1/Desktop/stderr.txt', 'w')
# sys.stdout = open('/home/osa1/Desktop/stdout.txt', 'w')
= ftplib.FTP('ftp sunucunuz')
ftp ='kullanici adiniz', passwd='sifreniz')
ftp.login(user= [f.strip() for f in os.environ['NAUTILUS_SCRIPT_SELECTED_URIS'].split('file://') if len(f) > 0]
yerler
def gonder(local, baslangic='/media'): # upload edilecek klasor
global sayac
if os.path.isdir(local):
= os.path.basename(local)
basename = '%s/%s' % (baslangic, basename)
sunucuKlasor
try:
ftp.mkd(sunucuKlasor)except ftplib.error_perm:
pass
for dosya in os.listdir(local):
= '%s/%s' % (local, dosya)
localYeni =sunucuKlasor)
gonder(localYeni, baslangicelse:
= ftp.nlst(baslangic)
dosyalar if os.path.basename(local) in baslangic:
ftp.delete(os.path.basename(local))'STOR %s/%s' % (baslangic, os.path.basename(local)),
ftp.storbinary(open(local, 'rb'))
+= 1
sayac
if uyar:
= pynotify.Notification("Upload basladi",
n "%s dosya ve/veya klasor" % len(yerler))
n.show()for yer in yerler:
gonder(yer)if uyar:
= pynotify.Notification("Upload bitti",
n "%s dosya upload edildi" % sayac,
"gnome-netstatus-txrx")
n.show() ftp.close()