wakataw / pyproc Goto Github PK
View Code? Open in Web Editor NEWSPSE (Sistem Pengadaan Secara Elektronik) Python API Wrapper
License: MIT License
SPSE (Sistem Pengadaan Secara Elektronik) Python API Wrapper
License: MIT License
sqlite3.connect(self.db_file, check_same_thread=False)
Downloader error di python versi 3.6 (error lanjutan dari #31) karena sqlite connection mengharuskan type argument 1 string sedangkan self.db_file
adalah objek dari Path.
ijin mas untuk export ke csv LPSE Versi <4.4 itu yg tahun anggaran nya di filter manual untuk kolom
npwp | nama_peserta | penawaran | penawaran_terkoreksi | hasil_negosiasi | alamat | p | pk |
---|
ini tidak ada isinya
trims
saya nyoba download di :
http://lpse.malinau.go.id/eproc4
https://lpse.penajamkab.go.id/eproc4
Mas minta tolong untuk export to csv nya ditambahkan kolom alamat lpsenya, jadi tau tender ini ambil dari alamat lpse mana dan di detil pemenang ditambahkan juga kolom alamat untuk export csvnya
Dan juga untuk kolom nilai_hps itu seharusnya nilai_hps_paket mas di downloader.py baris 559
Trims
Terdapat ketidakkonsistensian pada format pemenang dan pemenang berkontrak pada paket pengadaan langsung (non tender). Terdapat 2 versi format, pertama adalah format data berupa tabel dengan header horizontal, sedangkan yang kedua adalah format seperti pemenang dan pemenang berkontrak pada pengadaan lelang (tender) berupa tabel dengan header campuran antara horizontal (untuk detil paket yang dimenangkan) dan vertikal (untuk detil pemenang).
Untuk kasus ini perlu dilakukan pengecekan terlebih dahulu apakah untuk data pemenang pada paket non tender ini memenuhi format tabel full horizontal header atau campuran antara vertikal dan horizontal.
Untuk solusi sementara pada release v0.1.6, downloader akan mengambil pemenang dari hasil evaluasi berdasarkan flag pemenang (P
).
Proses pengunduhan indeks data LPSE merupakan proses awal yang harus dilakukan sebelum melakukan proses selanjutnya seperti pengunduhan detil paket, pemenang, dan lain-lain. Proses ini memiliki cukup banyak tantangan antara lain:
Karena effort yang cukup besar untuk mengunduh data ini terutama untuk instansi yang memiliki jumlah paket pengadaan yang sangat besar, maka diperlukan mekanisme resume proses pengunduhan data indeks.
Perubahan hanya akan dilakukan pada modul downloader
dengan menambahkan argument --resume-index
.
contoh:
pyproc --host lpse.pu.go.id --resume-index
Perkiraan prosedur yang akan dilakukan dalam rangka implementasi fitur ini adalah:
start
pada saat pengunduhan akan disesuaikan berdasarkan iterasi terakhir pada metada.Untuk donlot alamat lpse dari inaproc pake argument apa ya mas
Terima Kasih
Mohon bantuan nya mas, untuk yg export csv itu jika ada beberapa data yang jika di export ke csv itu datanya turun satu line sehingga tidak terdetek untuk data setelahnya
contohnya untuk LPSE Kota Pekalongan ini :
kode tender : 3566091 ini kolom nama_tendernya geser sehingga untuk data tanggal_pembuatan dst tidak terdeteksi satu row
Terima Kasih
Error message pada downloader hanya menampilkan string representation dari instan exception yang tertangkap, perlu ditampilkan error yang lebih mudah dimengerti oleh pengguna. Beberapa error yang sering terjadi:
Sejak SPSE 4.4 terdapat penambahan data pencatatan pengadaan darurat
Fungsi filter tahun anggaran pada downloader
dilakukan dengan cara mencari nilai tahun pada kolom tahun anggaran menggunakan regular expression. Setelah dilakukan pengamatan, ditemukan bahwa data pada kolom ini bersifat nullable
sehingga banyak data tahun anggaran yang kosong. Pada proses sebelumnya, data ini tetap ditampilkan ke user dengan harapan proses validasi ada di pengguna data. Berdasarkan hasil diskusi di grup telegram salah satu sumber data yang bisa dijadikan sebagai acuan tahun anggaran adalah tanggal pembuatan paket.
Penambahan parameter filter data tahun anggaran menggunakan data tanggal pembuatan paket.
Sejak SPSE 4.4 terdapat tambahan data pencatatan non tender
Download data dari lpse.kemenkumham.go.id error karena ada javascript challenge pada halaman home. Proses tetap berhasil jika langsung skip ke halaman tarik daftar paket dan halaman detail, tidak ada javascript challenge.
Terdapat beberapa parameter pemenang pada hasil evaluasi sehingga hanya kolom pemenang saja tidak bisa digunakan untuk menentukan bahwa peserta merupakan pemenang lelang.
Informasi tetap menampilkan jumlah paket dalam 1 tahun ketika keyword filter digunakan. Seharusnya total berkurang sesuai dengan jumlah filter berdasarkan keyword tersebut.
Lpse.get_paket akan mengembalikan nilai json berdasarkan start
dan length
parameter untuk setiap iterasi halaman.
Lpse.get_paket gagal melakukan json decoding karena server tidak mengembalikan nilai tersebut melainkan mengalihkan ke halaman forbidden access.
import pyproc
lpse = pyproc.Lpse('lpse.kepahiangkab.go.id')
total = self.lpse.get_paket_tender(length=0)['recordsTotal']
length = 100
for i in range(-int(-total//100)):
self.lpse.get_paket_tender(start=i*length, length=length)
script akan menampilkan Exception pada kisaran iterasi ke 3 - 4.
Perbaikan cepat bisa dilakukan dengan menambahkan time.sleep(1)
pada setiap iterasi.
Error
Traceback (most recent call last):
File "/usr/lib/python3.6/unittest/case.py", line 59, in testPartExecutor
yield
File "/usr/lib/python3.6/unittest/case.py", line 605, in run
testMethod()
File "/home/-/PycharmProjects/pyproc/tests/test_lpse.py", line 353, in test_indexing
self.lpse.get_paket_tender(start=i*100, length=100)
File "/home/-/PycharmProjects/pyproc/pyproc/lpse.py", line 231, in get_paket_tender
order, ascending)
File "/home/tony/PycharmProjects/pyproc/pyproc/lpse.py", line 213, in get_paket
return data.json()
File "/home/-/PycharmProjects/pyproc/venv/lib/python3.6/site-packages/requests/models.py", line 897, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Sejak SPSE4.4 terdapat penambahan data pencatatan swakelola
Lpse.get_paket seharusnya mengembalikan nilai json dari response server dalam type dict
Gagal decode json dari response server karena server meresponse dengan status kode 403.
from pyproc import Lpse
lpse = Lpse('lpse.bengkuluprov.go.id')
lpse.get_paket_tender(length=1)
Error
Traceback (most recent call last):
File "D:\Program Files\Python37\lib\unittest\case.py", line 59, in testPartExecutor
yield
File "D:\Program Files\Python37\lib\unittest\case.py", line 615, in run
testMethod()
File "D:\-\AllProjects\PycharmProjects\pyproc\tests\test_lpse.py", line 99, in test_get_jadwal_tender
data = self.lpse.get_paket_tender(length=1)
File "D:\-\AllProjects\PycharmProjects\pyproc\pyproc\lpse.py", line 200, in get_paket_tender
order, ascending)
File "D:\-\AllProjects\PycharmProjects\pyproc\pyproc\lpse.py", line 182, in get_paket
return data.json()
File "D:\Program Files\Python37\lib\site-packages\requests\models.py", line 897, in json
return complexjson.loads(self.text, **kwargs)
File "D:\Program Files\Python37\lib\json\__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "D:\Program Files\Python37\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "D:\Program Files\Python37\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Gagal install di termux karena dependency beautifulsoup4
Pada kolom nama paket di database index salah mapping, sehingga data yang masuk nilai kontrak.
Downloader close ketika aplikasi lpse error atau url lpse tidak valid sehingga tidak melanjutkan ke url lpse selanjutnya.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.