Ufak bir projede lazım olmuştu, işim bitince gerek kalmadı. Silmeden önce buraya yazayım madem dedim. Belki işinize yarar. Dropbox resmi API'si ile hesabınıza dosya yükleyip indirebilisiniz.

Dropbox SDK Kurulumu

Önce Dropbox Python SDK için şuradaki dosyayı indirip arşivden çıkardıktan sonra aşağıdaki komut ile kurun.

python setup.py install

Ya da pip ile kolayca kurabilirsiniz. Ben de bu yolu tercih ettim.

pip install dropbox

Uygulama Oluşturma

Dropbox hesabınıza giriş yaptıktan sonra App Console sayfasına gidip Create App butonuna tıklayın. Uygulama tipi olarak Dropbox API app'i seçin ve hemen altındaki Files and Datastores'u işaretleyin.

Bir sonraki bölüm uygulamanın hangi dosyalara erişebileceğini soruyor. İlk seçenek uygulama sadece kendi yüklediği dosyalara erişebilir, ikinci seçenek dropboxtaki diğer dosyalara da erişebilir demek. Seçiminizi yapın.

Son olarak uygulamanıza bir isim verin ve create app diyerek bu adımı bitirin. Sizi uygulama ayarları sayfasına yönlendirecektir. Burada app key ve app secret bilgilerini saklayın, az sonra lazım olacak. Tabi dilediğiniz zaman bu sayfadan yine öğrenebilirsiniz.

Uygulama Geliştirme

Şimdi python betiğinizi oluşturup kodlamaya başlayın. İlk olarak az önceki app key ve app secret keylerini aşağıdaki yerlerine yazın.

import dropbox

app_key = "app key bilgisi"
app_secret = "app secret bilgisi"

flow = dropbox.client.DropboxOAuth2FlowNoRedirect(app_key, app_secret)

Şimdi kullanıcının uygulama sayfasına gidip izin vermesini sağlayalım. Tabi bu adım kullanıcı için biraz amelelik olabilir. Bunun yerine mechanize tarzı modüllerle otomatik yaptırmayı deneyebilirsiniz.

authorize_url = flow.start()
print("Uygulamaya izin verin: {}".format(authorize_url))
code = raw_input("Kodu girin: ").strip()

Şimdi kullanıcının erişim kodunu(?) ve kullanıcı ID'sini alacağız. Ancak eğer kullanıcı uygulamaya izin vermezse ya da yanlış kod girerse bu satır hata verecektir. Onun için try-except içinde yazarsanız daha güvenli olur.

access_token, user_id = flow.finish(code)

Her şey normal gittiyse eğer, kullanıcıya bir hoşgeldin deme zamanı gelmiştir.

client = dropbox.client.DropboxClient(access_token)
print ("Hoşgeldin, {}".format(client.account_info()["display_name]))

Kullanıcı bilgileri client.account_info içinde tutuluyor, direkt yazdırarak inceleyebilirsiniz.

Dosya Yükleme

Cihazdaki dosyayı buluta yüklemek için client içindeki put_file fonksiyonu kullanılır. En basit haliyle kullanımı aşağıdaki gibi.

dosya = open("kullanici-listesi.txt", "rb")
cevap = client.put_file("/kullanici-listesi.txt", dosya)
print("Yüklendi: {}".format(cevap))

Dosya İndirme

Buluttan dosya indirmek için get_file_and_metadata fonksiyonu kullanılır. Beraberinde dosya bilgisini de verir.

dosya, bilgi = client.get_file_and_metadata("/dosya-adi.txt")
yeni_dosya = open("dosya-adi.txt", "wb")
yeni_dosya.write(dosya.read())
yeni_dosya.close()
print("İndirme tamamlandı: {}".format(bilgi))

En temel iki işlem bunlar. Eğer kafanızda daha farklı şeyler varsa Geliştirici Forumunda tartışabilirsiniz.

Kolay gelsin!