GithubHelp home page GithubHelp logo

wakataw / pyproc Goto Github PK

View Code? Open in Web Editor NEW
23.0 23.0 20.0 275 KB

SPSE (Sistem Pengadaan Secara Elektronik) Python API Wrapper

License: MIT License

Python 100.00%
data e-procurement lkpp lpse pengadaan python sedot spse

pyproc's People

Contributors

wakataw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

pyproc's Issues

Error Python 3.6 sqlite3 connection harus string

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.

Tambah kolom export to csv

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

Inkonsistensi Format Pemenang Pengadaan Langsung

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).

Index Download Resume

Proposal

Deskripsi Singkat

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:

  1. Menjadi fokus dari pengembang aplikasi SPSE untuk mempersulit proses scraping data;
  2. Jumlah data yang besar sering mengakibatkan proses ini gagal sehingga harus diulang kembali.

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

Perubahan hanya akan dilakukan pada modul downloader dengan menambahkan argument --resume-index.

contoh:
pyproc --host lpse.pu.go.id --resume-index

Prosedur Resume Data

Perkiraan prosedur yang akan dilakukan dalam rangka implementasi fitur ini adalah:

  1. Menambahkan file metadata indeks file.
  2. File metadata tersebut mencangkup informasi antara lain sebagai berikut:
    • ID Data Awal. Digunakan sebagai pembanding pada saat proses resume untuk memastikan bahwa proses yang dilakukan masih atas data yang sama.
    • Total Data. Total data yang sudah diunduh berdasarkan iterasi terakhir.
  3. Untuk setiap iterasi, proses download akan mengupdate file metadata. Sehingga jika terjadi galat, metadata yang tersimpan adalah berdasarkan iterasi terakhir.
  4. Pada saat resume download, nilai parameter start pada saat pengunduhan akan disesuaikan berdasarkan iterasi terakhir pada metada.
  5. selesai

Daftar LPSE Inaproc

Untuk donlot alamat lpse dari inaproc pake argument apa ya mas

Terima Kasih

Export CSV Geser satu Line

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

pyproc_errorrrr

Terima Kasih

Humanize downloader error message

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:

  • Gagal menghubungi server lpse
  • Gagal pada saat iterasi index
  • Gagal pada saat merge detil data karena beberapa file detil kosong
  • Gagal karena koneksi ditolak server lpse

Filter Tahun Anggaran

Proposal

Deskripsi Singkat

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.

Perubahan

Penambahan parameter filter data tahun anggaran menggunakan data tanggal pembuatan paket.

Downloader Full Rewrite

TODO List:

  • Rewrite Argument Parser
  • Rewrite Index Downloader
  • Rewrite Detail Downloader
  • Rewrite File Merge Function
  • Filter index by tahun (supported spse 4.4)
  • #26
  • Export to Json
  • Export to CSV
  • #25

Error lpse.kemenkumham.go.id karena ada F5 anti bot

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.

PyProc 1.8

Ketika menggabungkan data di lpse.pu.go.id terdapat pesan error "ERROR: Expecting value: line 1 column 1 (char 0)"

Capture_lpse_pu

Querynya seperti ini : pyproc --host lpse.pu.go.id;hasil-pu.csv --workers 30 --timeout 600 --fetch-size 1000

Terima Kasih

SPSE versi 4.4

terjadi error ketika download data dari SPSE dengan versi 4.4. cth : lpse.maroskab.go.id
blank di kolom npwp, nama_peserta, penawaran, penawaran_terkoreksi, dan hasil_negosiasi
pyproc

Error Scrape

nyoba scrape dari lpse.lampungprov.go.id ga bisa. tanpa tampilan error.
Capture

Kolom Geser di export csv

Mohon bantuan nya mas untuk export csv itu kolom npwp terisi nilai dari ['jadwal'] jika kolom npwp tersebut kosong dan kolom hasil_negosiasi nilainya banyak yang kosong

seperti digambar ini

geser

terima kasih

Lpse.get_paket Error Forbidden Access saat requests index paket terlalu cepat

Context

  • Python Version: 3.6.7
  • PyProc Version: 0.1.4
  • SPSE Version: SPSE v4.3u20191009
  • SPSE Host: lpse.kepahiangkab.go.id
  • Authenticity Token Sudah diset

Expected Behaviour

Lpse.get_paket akan mengembalikan nilai json berdasarkan start dan length parameter untuk setiap iterasi halaman.

Current Behaviour

Lpse.get_paket gagal melakukan json decoding karena server tidak mengembalikan nilai tersebut melainkan mengalihkan ke halaman forbidden access.

Failure Informations

How to Reproduce

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.

Quick Fix

Perbaikan cepat bisa dilakukan dengan menambahkan time.sleep(1) pada setiap iterasi.

Error Log

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)

Get Paket Error

Context

Exprected Behavior

Lpse.get_paket seharusnya mengembalikan nilai json dari response server dalam type dict

Current Behavior

Gagal decode json dari response server karena server meresponse dengan status kode 403.

Failure Information

Steps to Reproduce

from pyproc import Lpse

lpse = Lpse('lpse.bengkuluprov.go.id')
lpse.get_paket_tender(length=1)

Logs

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)

Error Non Tender

Mohon bantuannya mas untuk narik data Non Tender

Terdapat error seperti dibawah ini

pyproc_non_tender

Terima Kasih

Download multiple LPSE error

Downloader close ketika aplikasi lpse error atau url lpse tidak valid sehingga tidak melanjutkan ke url lpse selanjutnya.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.