Aplikasi Downloader dengan Python PyQt4 versi 1

BelajarPython - assalamualaikum wr. Wb.

Hy sahabat belajar python.. Kembali lagi nih dengan saya.. Saya akan mencoba mengajak kalian untuk belajar membuat aplikasi mini lagi nih.. Hehe ya walaupun gk akan bagus sih.. Nah produk aplikasi apa yang akan kita pelajari pada postingan kali ini ? Udah penasaran belum? Kalo masih belum, saya lanjut terus nih intro nya. Hehe .. Langsung saja yuk kita simak sama - sama postingah kali ini...

Penjelasan umum program / aplikasi.

Aplikasi yang akan kita buat kali ini memang tidak terlalu spesial.. Namun untuk belajar saya rasa enak kok.. Hehe.. Jadi, aplikasi yang akan kita buat kali ini merupakan sebuah aplikasi yang mirip dengan sebuah aplikasi terkenal untuk download.. Yaitu IDM atau Internet Download Manager.. Udah pernah pakek kan? Atau minimal kalian tau lah aplikasi yang saya maksud tadi.. Jika kalian belum tau, kalian bisa mencari tau nya di google yaa...

Namun, seribu namun, kalian jangan pernah membayangkan aplikasi nya akan sebagus si IDM tadi ya... Karena aplikasi ini hanyalah aplikasi sederhana dan seadanya.. Ya maklum lah kita kan masih belajar.. Hehe jadi kalian jangan kecewa nanti ya.. :)

Oya perlu kalian ketahui, pada postingan kali ini, saya akan memposting aplikasi downloader versi yang pertama.. Dimana pada versi yang pertama kali ini tidak ada fitur-fitur spesial melainkan fungsi untuk downloadnya tadi.. Bahkan, pada versi kali ini tidak ada GUI nya sama sekali... Melaikan hanya pesan dialog saja yang muncul ketika proses download nya selesai..

Oya, aplikasi ini memiliki beberapa versi dengan peningkatan fitur di tiap versi nya... Jika kalian ingin mengetahui perkembangan tiap versi nya, kalian bisa membaca daftar isi dan rangkuman tiap versinya pada LINK INI ya... Silahkan klik saja.. Hehe

Fitur dan spesifikasi lengkap aplikasi Downloader versi 1.0

Perlu kalian ketahui, jika aplikasi yang akan kita buat kali ini merupakan aplikasi yang dibuat menggunakan library atau modul PyQt4. Jika kalian belum menginstall modul ini, Kalian bisa menginstall PyQt4 Di LINK INI. Silahkan klik ya.. Nah langsung saja yuk kita simak spesifikasi lengkap nya di bawah ini..

Nama: mn-downloader 1.0
Versi: 1.0
Platform: Python 3.x
Modul: PyQt4. Klik disini untuk instalasi PyQt4.
Baris Code: kurang lebih 60 baris code program.
Terdiri dari: 1 class dan 5 metode.
Fitur: mendownload file.
syarat menjalankan: install python 3.x dan PyQt4, punya editor teks atau IDE.
Cara menjalankan: install python 3 dan PyQt4, copy dan paste code program pada editor atau IDE, simpan dalam file python(ekstensi .py), lalu jalankan.


Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu loh.. sehingga, nantinya kita cukup klik dua kali saja untuk menjalankan aplikasi ini... tanpa perlu repot - repot membuka nya di IDLE atau IDE python.. nah seperti apa caranya? cukup mudah kok.. dan saya juga sudah membuatkan tutorialnya.. untuk kalian yang menggunakan windows, KALIAN BISA KLIK DISINI ya temen - temen.. atau jika pada link pertama terlalu rumit, KALIAN BISA MENCOBA CARA INI ya.... dan bagi pengguna linux ? tenang saja.. bisa juga kok membuat file executable nya.. untuk melihat tutorialnya, KALIAN BISA KLIK DISINI temen - temen...

Code program yang digunakan untuk membuat aplikasi Downloader versi 1.0

Pada segmen ini merupakan segmen utama pada postingan kali ini.. Karena saya akan memberikan code program dari aplikasi yang akan saya bagikan kali ini.... dan biar tidak penasaran lagi mengenai code program nya, yuk mari langsung saya kasi code program nya...


from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtNetwork import *
import sys
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError

class Downloader(QNetworkAccessManager):
    def __init__(self):
        QNetworkAccessManager.__init__(self)

        self.messageBuffer = QByteArray()

        url = 'http://www.drodd.com/images14/g32.png'
        self.teksUrl = url
        self.url = QUrl(url)

        self.tesUrl()
        self.mulai()

    def tesUrl(self):
        req = Request(self.teksUrl)

        try:
            response = urlopen(req)
        except HTTPError as e:
            print('The server couldn\'t fulfill the request.')
            print('Error code: ', e.code)
            return 'The server couldn\'t fulfill the raequest.'
        except URLError as e:
            print('We failed to reach a server.')
            print('Reason: ', e.reason)
            return 'We failed to reach a server.'
        else:
            print('Semuanya Normal')
            return True

    def mulai(self):
        req = QNetworkRequest(self.url)
        self.reply = self.get(req)

        QObject.connect(self.reply, SIGNAL("readyRead()"), self, SLOT("slotReadData()"))
        QObject.connect(self.reply, SIGNAL("finished()"), self, SLOT("slotFinished()"))

    @pyqtSlot()
    def slotFinished(self):
        imageFile = QFile('nama.jpg')
        if (imageFile.open(QIODevice.WriteOnly)):
            imageFile.write(self.messageBuffer)
            imageFile.close()
            QMessageBox.information(None, "Berhasil", "File telah Tersimpan!")

    @pyqtSlot()
    def slotReadData(self):
        self.messageBuffer += self.reply.readAll()

###################################

if __name__ == '__main__':
    app = QApplication(sys.argv)
    aplikasi = Downloader()
sys.exit(app.exec_())


Nah lalu seperti apakah tampilan aplikasi tersebut setelah kita jalankan? Biar tidak lama lama penasaran, Yuk langsung saja kita lihat sama - sama tampilannya di bawah ini.. Let’s check it out temen - temen.. Heehe





Nah seperti itulah tampilan saat file nya telah tersimpah.. Ya hanya seperti itu saja.. Haha... Jangan ketawa ya temen - temen.. Ini kan versi pertama.. Hehe oya.. Lalu dimana tempat link download nya ? Nah dowload link nya ada pada variabel “url = 'http://www.drodd.com/images14/g32.png’” silahkan isi sendiri dengan link file yang ingin kalian unduh... Dan file hasil downloadnya akan tersimpan pada lokasi tempat menyimpan file python kalian ya..

Dan perlu kalian ketahui ya.. Link File yang akan kalian unduh, formatnya haruslah sesuai.. Misalkan ‘jpg/gif/png’ untuk gambar.. Dan ‘mp3’ untuk musik.. ‘mp4/3gp’ untuk video.. Kalau format atau ekstensi nya ‘html’ berati adalah sebuah halaman html... Jadi pastikan akhiran link file yang kalian unduh tepat dan sesuai dengan apa yang ingin kalian unduh...

Contoh nya adalah pada link yang sudah saya kasi sebelumnya ya... Yaitu -> url = 'http://www.drodd.com/images14/g32.png'. Bisa kalian peratikan akhiran dari link tersebut. Yaitu ‘png’ yang menandakan file yang akan saya unduh adalah file foto atau gambar. Jika format nya berakhiran ‘html’ maka dipastikan file yang akan kalian dapatkan adalah sebuah halaman html.

Setelah itu, ubah nama file beserta ekstensi nya sesuai file yang sedang kalian unduh pada isi variabel “imageFile = QFile('nama.jpg')” yan ada pada metode ‘slotFinished’. Silahkan ubah kata ‘nama’ menjadi nama yang dikehendaki dan ubah ‘.jpg’ sesuai format file yang sedang kalian download. Contoh ‘.jpg’ untuk gambar dan ‘mp3’ untuk musik. Sesuaikan saja dengan ekstensi atau akhiran pada link kalian ya.


sekali lagi saya ingatkan ya... Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu loh.. sehingga, nantinya kita cukup klik dua kali saja untuk menjalankan aplikasi ini... tanpa perlu repot - repot membuka nya di IDLE atau IDE python.. nah seperti apa caranya? cukup mudah kok.. dan saya juga sudah membuatkan tutorialnya.. untuk kalian yang menggunakan windows, KALIAN BISA KLIK DISINI ya temen - temen.. atau jika pada link pertama terlalu rumit, KALIAN BISA MENCOBA CARA INI ya.... dan bagi pengguna linux ? tenang saja.. bisa juga kok membuat file executable nya.. untuk melihat tutorialnya, KALIAN BISA KLIK DISINI temen - temen...

Penjelasan code program untuk membuat aplikasi Downloader versi 1.0

Nah setelah kita tau aplikasi dan code program nya, maka selanjut saya akan menjelaskan code program yang sudah saya bagikan tadi ya temen - temen... Hal ini saya lakukan dengan tujuan agar kalian dapat memahami code program yang sudah saya rangkai tersebut... Ya anggaplah ini merupakan sebuah dokumentasi nya.. Hehe.. Yuk langsung saja kita mulai penjelasannya...


from PyQt4.QtGui import *  //digunakan untuk mengimport semua subs class yang ada di class ‘QtGui’. Yang merupakan bagian dari modul ‘PyQt4’.
from PyQt4.QtCore import *  //digunakan untuk mengimport semua subs class yang ada di class ‘QtCore’. Yang merupakan bagian dari modul ‘PyQt4’.
from PyQt4.QtNetwork import *  //digunakan untuk mengimport semua subs class yang ada di class ‘QtNetwork’. Yang merupakan bagian dari modul ‘PyQt4’.
import sys  //digunakan untuk mengimport sys.
from urllib.request import Request, urlopen  //digunakan untuk mengimport ‘Request’ dan ‘urlopen’ yang merupakan  subs class dari class ‘request’. Yang merupakan bagian dari modul bawaan python yaitu ‘urllib’.
from urllib.error import URLError, HTTPError  //digunakan untuk mengimport ‘URLError’ dan ‘HTTPError’ yang merupakan  subs class dari class ‘error’. Yang merupakan bagian dari modul bawaan python yaitu ‘urllib’.

class Downloader(QNetworkAccessManager):  //digunakan untuk membuat class dengan nama “Downloader” yang saya buat untuk menurunkan atau meng inheriten dari class ‘QNetworkAccessManager’.  Yang artinya menurnkan fungsi yang ada di class tersebut ke dalam class yang sudah saya buat ini.
    def __init__(self):  //digunakan untuk membuat konstruktor dari class ‘Downloader’.
        QNetworkAccessManager.__init__(self)  //digunakan untuk memanggil class ‘QNetworkAccessManager’. 

        self.messageBuffer = QByteArray()  //digunakan untuk memanggil class ‘QByteArray’ yang kemudian di tampung ke dalam variabel ‘messegeBuffer’. Ini akan digunakan untuk menyimpan file hasil download kita nantinya.

        url = 'http://www.drodd.com/images14/g32.png'  //merupakan link file yang akan kita download atau kita unduh. Dan kita simpan ke dalam variabel ‘url’.
        self.teksUrl = url  //digunakan untuk menampung atau mengoper nilai yang ada di variabel ‘url’ ke dalam variabel ‘teksUrl’.
        self.url = QUrl(url)  //digunakan untuk memanggil metode dengan nama ‘Qurl’ yang ada di class ‘QNetworkAccessManager’ dengan memasukkan url file yang sudah di tampung ke dalam variabel ‘url’ sebagai parameter.

        self.tesUrl()  //digunakanuntuk memanggil atau menjalankan metode dengan nama ‘tesUrl’.
        self.mulai()  //digunakanuntuk memanggil atau menjalankan metode dengan nama ‘mulai’.

    def tesUrl(self):  //digunakan untuk membuat metode dengan nama ‘tesUrl’. Yang akan digunakan untuk mengetes atau mengecek url yang kalian masukkan.
        req = Request(self.teksUrl)  //digunakanuntuk memanggil class ‘Request’ yang sudah kita import tadi. Dan memasukkan nilai variabel ‘teksUrl’ sebagai parameter.

        try:  //digunakan untuk mencoba beberapa code program
            response = urlopen(req)  //digunakan untuk memanggil class ‘urlopen’ yang sudah kita import tadi. Dan memasukkan nilai variabel ‘req’ sebagai parameter.
        except HTTPError as e:  //digunakan untuk mencoba menjalankan code program ketika ada HTTPError
            print('The server couldn\'t fulfill the request.')  //digunkan untuk mencetak beberapa teks
            print('Error code: ', e.code)  //digunakan untuk mencetak code error yang terjadi.
            return 'The server couldn\'t fulfill the raequest.'  //digunakan untuk mengambalikan sebuah teks atau pesan error.
        except URLError as e:  //digunakan untuk menjalankan code program ketika ada eror URL
            print('We failed to reach a server.')  //digunakan untuk mencetak pesan error.
            print('Reason: ', e.reason)  //digunakan untuk mencetak pesan eror yang terjadi.
            return 'We failed to reach a server.'  //digunakan untuk mengembalikan teks.
        else:  //digunakan untuk menjalankan code program ketika error nya tidak ada pada dua pengecualian ‘except’ diatas.
            print('Semuanya Normal')  //digunakan untuk mencetak pesan sukses.
            return True  //digunakan untuk mengembalikan boolean ‘true’.

    def mulai(self):  //digunakan untuk membuat metode dengan nama ‘mulai’. Yang digunakan untuk memulai proses unduh atau download.
        req = QNetworkRequest(self.url)  //digunakan untuk memanggl class ‘QNetworkRequest’ dan memasukkan nilai variabel ‘url’ sebagai parameter.
        self.reply = self.get(req)  //digunakanuntuk memanggil metode dengan nama ‘get’ yang merupakan metode yang ada di ‘QNetworkAccessManager’ dan disimpan ke dalam variabel ‘reply’.

        QObject.connect(self.reply, SIGNAL("readyRead()"), self, SLOT("slotReadData()"))  //digunakan untuk memanggil metode dengann nama ‘connect’ yang ada pada class ‘QObject’ yang sudah kita import tadi. Dan memasukkan beberapa parameter. Dengan sinyal atau signal ‘readyRead’ yang artinya siap untuk di download, maka akan menjalankan metode dengan nama ‘slotReadData’.
        QObject.connect(self.reply, SIGNAL("finished()"), self, SLOT("slotFinished()"))  //digunakan untuk memanggil metode dengann nama ‘connect’ yang ada pada class ‘QObject’ yang sudah kita import tadi. Dan memasukkan beberapa parameter. Dengan sinyal atau signal ‘finished’ yang artinya selesai di download, maka akan menjalankan metode dengan nama ‘slotFinished’.

    @pyqtSlot()  //digunakan untuk menandakan bahwa metode dibawah nya adalah sebuah ‘slot’
    def slotFinished(self):  //digunakan untuk membuat metode dengan nama ‘slotFinished’ yang akan di gunakan untuk menyimpan file apabila telah selesai di unduh.
        imageFile = QFile('nama.jpg')  //digunakan untuk membuat sebuah file dengan nama ‘nama.jpg’. Dan disimpan ke dalam variabel ‘imageFile’.
        if (imageFile.open(QIODevice.WriteOnly)):  //digunakan untuk mengecek apakah file bisa di edit.
            imageFile.write(self.messageBuffer)  //digunakan untuk memasukkan file hasil download kedalam file di dalam variabel ‘imageFile’.
            imageFile.close()  //digunakan untuk menutup file yang telah kita masukkan file hasil download tadi.
            QMessageBox.information(None, "Berhasil", "File telah Tersimpan!")   //digunakan untuk menampilkan kotak pesan. Yang memberitahukan kepada user jika file berhasil kita unduh.

    @pyqtSlot()  //digunakan untuk menandakan bahwa metode dibawah nya adalah sebuah ‘slot’
    def slotReadData(self):  //digunakan untuk membuat metode dengan nama ‘slotReadData’ yang akan di gunakan untuk menampung file yang di unduh.
        self.messageBuffer += self.reply.readAll()  //digunakan untuk menampung atau menerima file yang sedang di unduh.

###################################

if __name__ == '__main__':  //digunakan untuk menjalanakan code program di dalam nya pertama kali. Bisa kita katakan sebagai metode utama.
    app = QApplication(sys.argv)  //digunakan untuk memanggil ‘Qapplication’ untuk memanggil window.
    aplikasi = Downloader()  //digunakan untuk memanggil atau menjalankan class ‘Downloader’.

    sys.exit(app.exec_())  //digunakan agar aplikasi tidak langsung close saat di jalankan.


Nah itu dia temen - temen penjelasan saya mengenai code program yang telah saya bagikan tadi ya.. Oya jangan lupa lanjut ke versi selanjut nya ya.. Biar belajarnya lebih baik dan maksimal.. Oya.. Untuk mengetahui perkembangan tiap versinya, kalian bisa KLIK DISINI untuk melihat daftar isi versi dari aplikasi yang satu ini....

Dan itu dia aplikasi downloader yang dapat saya bagikan kali ini temen - temen... Jangan lupa untuk membaca postingan saya yang lainnya ya.. Jangan lupa juga untuk berlangganan via email ya... Agar kalian tidak ketinggalan setiap update yang saya lakukan.. Kolom email nya ada di paling bawah blog ini yaa.. Silahkan di scroll ke paling bawah...

Terakhir kalinya saya ingatkan lagi ya...  Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu loh.. sehingga, nantinya kita cukup klik dua kali saja untuk menjalankan aplikasi ini... tanpa perlu repot - repot membuka nya di IDLE atau IDE python.. nah seperti apa caranya? cukup mudah kok.. dan saya juga sudah membuatkan tutorialnya.. untuk kalian yang menggunakan windows, KALIAN BISA KLIK DISINI ya temen - temen.. atau jika pada link pertama terlalu rumit, KALIAN BISA MENCOBA CARA INI ya.... dan bagi pengguna linux ? tenang saja.. bisa juga kok membuat file executable nya.. untuk melihat tutorialnya, KALIAN BISA KLIK DISINI temen - temen...




Oke sekian dulu ya temen - temen postingan kali ini.. Sampai jumpa di postingan saya yang lain nya.. Sampaikan keluh kesah dan kritik saran kalian di komentar ya... Atau di halaman hubungi kami yang ada di blog ini.. Mohon maaf apabila ada salah kata sekian dan terimakasih temen - temen...

Wassalamualaikum wr. wb.
Previous
Next Post »
Thanks for your comment