API Geo IP Menggunakan Framework Bottle Python

Di tulisan ini saya pada hari kemaren atau kemarennya berhasil menggunakan (bukan membuat) Geo IP Api Python dikembangkan oleh maxmind (https://github.com/maxmind/geoip-api-python). lalu saat ini saya menggunakan api tersebut di web yang berbasiskan bahasa PHP, lhoh kok bisa library di bahasa python di jalankan di PHP?, jawabannya ya bisa, dilewatkan menggunakan web service. nah saya kira sudah pada paham apa itu web service.

Alasan kenapa saya membuat ini adalah untuk memfilter negara apa saja yang bisa melihat iklan di situs saya. kenapa, ya karena di negara tertentu menampilkan iklan justru mengurangi RPM (rate per milion) atau bayaran per 1000 pengunjung. negara tertentu salah satunya negara kita tercinta :v

Oke selanjutnya masuk ke bagian utama dan bagian yang paling tidak penting dari yang tidak penting tidak penting lainnya, yaitu bagian koding

import GeoIP
import falcon

class GeoipResource:
    def on_get(self, req, resp):
        ipaddr = req.get_param('ipaddr')
        if ipaddr is None or ipaddr == "":
            ipaddr = '8.8.8.8'

        gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)
        resp.body = gi.country_code_by_addr(ipaddr) or 'xx'
        resp.status = falcon.HTTP_200

app = falcon.API()
app.add_route('/apis/geoip', GeoipResource())

nah diatas adalah script python yang digunakan untuk mendapatkan Kode negara berdasarkan alamat IP atau script bisa di download di https://github.com/ojixzzz/GeoIP-API-Webservice.

Library yang dibutuhkan :
– GeoIP Legacy C Library

sudo add-apt-repository ppa:maxmind/ppa
sudo aptitude update
sudo aptitude install libgeoip1 libgeoip-dev geoip-bin

– GeoIP Legacy Python API

pip install GeoIP

– Falcon framework

pip install falcon

– Gunicorn (optional)

pip install gunicorn

Cara menjalankan service diatas:
– gunicorn namascript:app -b alamat_ip:port

Untuk menggunakan service diatas tinggal GET alamat url dengan endpoint “/apis/geoip” dengan parameter ipaddr=alamat ip

SEKIAN 😀

Leave a Reply

Your email address will not be published. Required fields are marked *