Evdeki Raspberry Pi sunucuda çalışan Transmission uygulamasının web arabirimi, uzaktan torrent dosyası ekleme, download listesini takip etme, indirmeyi durdurma gibi işlemleri destekliyor. Böylece şirketten evdeki bilgisayara torrent indirmek kolaylaşıyor. Ama her bulduğunuz torrent dosyasını eklemek için sunucunun web sayfasına bağlanmak, kullanıcı ismi ve parola girmek gerekiyor. Bunu nasıl otomatikleştiririm diye düşünürken aklıma IFTTT ‘nin Dropbox yöntemi geldi.
Planım şuydu, Dropbox’ta bir dizin oluşturup, torrent dosyalarını buraya deoplayacağım, bir uygulama da bu watchfolderdaki dosyaları transmissiona RPC ile gönderip download işlemini başlatacak. Sonunda yaptım.
Gerekenler;
– Dropbox hesabı ve API bilgileri (key, secret)
– Dropbox ‘ta download, delete gibi işlemleri yapabilmek için dropbox uploader BASH scripti.
– Python ve transmissionrpc python modulu
Öncelikle Dropbox’ta torrentler için bir dizin oluşturun. Benim örneğimde Torrents. Aynı zamanda local sisteminizde de bu torrentlerin indirileceği bir dizin oluşturun. Benim örneğimde /home/pi/Torrents
Daha sonra dropbox_uploader scriptini çalıştırın, script sizi yönlendirerek Dropbox API üzerinden erişim isteyecek ve key ile secret alacaktır. Install sonrasında dropbox_uploader scriptini kullanarak dropbox hesabınıza dosya upload, dosya download, dosya silme testlerinizi yapın. (Key ve Secret bilgilerine daha sonra ~/.dropbox_uploader dosyasından erişebilirsiniz.)
transmissionrpc python modülünü indirip kurun.
$ wget -c “https://pypi.python.org/packages/source/t/transmissionrpc/transmissionrpc-0.11.tar.gz#md5=b2f918593e509f0e66e2e643291b436d” -O transmissionrpc-0.11.tar.gz
$ tar -xzf transmissionrpc-0.11.tar.gz
$ cd transmissionrpc-0.11
$ python setup.py install
Modülü sisteminize easy_install kurulu ise daha kolay bir şekilde de kurabilirsiniz.
easy_install transmissionrpc
Her şey hazır ise aşağıdaki python kodunu droptorrent.py olarak kaydedin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #!/usr/bin/env python # import os,os.path import transmissionrpc path = '/home/pi/Torrents' # Torrent dosyalarının indirileceği dizin address = '127.0.0.1' # transmission-daemon çalışan sunucu IP adresi. port = '9091' # transmission-daemon port username = 'admin' # transmission-daemon web kullanıcı adı password = 'admin' # transmission-daemon web parolası # Dropbox'taki .torrent dosyalarının indirilmesi os.system("/usr/local/bin/dropbox_uploader.sh download Torrents /home/pi/") # transmission rpc bağlantısı yapılıyor tc = transmissionrpc.Client(address, port, username, password) # İndirilen her dosya transmission-rpc bağlantısı ile indirme kuyruğuna ekleniyor for root, _, files in os.walk(path): for filename in files: torrent_file = os.path.join(root, filename) if os.path.exists(torrent_file): try: tc.add_torrent(torrent_file) except transmissionrpc.TransmissionError, e: print(u'Failed to add torrent "%s"' % e) # Eklenen .torrent dosyası local sistemden siliyor os.remove(torrent_file) # Eklenen .torrent dosyası tekrar indirilmemesi için dropboxtan siliyor os.system("/usr/local/bin/dropbox.sh delete Torrents/" + filename + "") |
Son olarak crontab içerisine aşağıdaki satırı ekleyerek, python scriptinin 5 dakika aralıklarda çalışarak torrent dosyalarını beklemesini sağlayın.
*/5 * * * * /usr/bin/python /usr/local/bin/droptorrent.py
Artık herhangi bir dropbox client veya dropbox web sayfasından “Torrents” isimli dizine bir .torrent dosyası upload ettiğinizde Transmission otomatik olarak indirmeye başlayacaktır.
3 Responses