lcat
My personal /var/log
  • Home
  • Contact
  • HackMe!

Script update harga saham (indo), reksadana, dan kripto

Saya iseng mengumpulkan beberapa API gratis dari internet untuk menyusun script update harga komoditas di journal hledger saya. Berikut scriptnya, sedottt gan hehe

```bash
#!/bin/bash

kontan_reksadana_cache=$(mktemp)

cleanup() {
        rm -f "$kontan_reksadana_cache"
}
trap cleanup EXIT

process_price() {
        local price=$1
        if [[ $price =~ ^[0-9]+(\.[0-9]+)?$ ]]; then
                echo "$price"
        else
                echo "Invalid price: $price" >&2
                return 1
        fi
}

print_price() {
        local symbol=$1 base=$2
        shift 2
        local price
        price=$("$@") || return
        echo P "$today $symbol $price $base"
}

ipot_stock_price() {
        local today last_week stock_code url close_price
        today=$(date +"%m/%d/%Y")
        last_week=$(date -d "30 days ago" +"%m/%d/%Y")
        stock_code=$1
        url="https://www.indopremier.com/module/saham/include/json-charting.php?code=$stock_code&start=$last_week&end=$today"
        until close_price=$(curl -s "$url" | jq '.[length -1][4]'); do
                sleep 1
        done
        process_price "$close_price"
} 2>/dev/null

kontan_reksadana_price() {
        local mf_name price
        mf_name=$1
        if ! grep -q "recordsTotal" "$kontan_reksadana_cache"; then
                curl -s -X POST "https://pusatdata.kontan.co.id/reksadana/list/" -o "$kontan_reksadana_cache"
        fi
        price=$(jq -r ".data[] | select(.[0] == \"$mf_name\")[2]" "$kontan_reksadana_cache")
        process_price "$price"
} 2>/dev/null

cryptocompare_price() {
        local fsym tsym url price
        fsym=$1
        tsym=$2
        url="https://min-api.cryptocompare.com/data/price?fsym=$fsym&tsyms=$tsym"
        until price=$(curl -s "$url" | jq -r ".$tsym"); do
                sleep 1
        done
        process_price "$price"
} 2>/dev/null

today=$(date +"%Y-%m-%d")

for stock in BBCA BBNI BMRI BBRI BMTR EXCL GOTO TLKM ANTM ADRO NICL; do
        print_price "$stock" IDR ipot_stock_price "$stock"
done

curl -s -X POST "https://pusatdata.kontan.co.id/reksadana/list/" >/dev/null 2>&1

mf_names=("KISI_FI| KISI FIXED INCOME FUND" "I_SRILIKUID|Insight Sri Kehati Likuid" "TRIM_DTSYA|TRIMEGAH DANA TETAP SYARIAH KELAS A" "CAPITAL_FI|Capital Fixed Income Fund")
for mf in "${mf_names[@]}"; do
        symbol=${mf%|*}
        name=${mf#*|}
        print_price "$symbol" IDR kontan_reksadana_price "$name"
done

print_price USDT IDR ipot_stock_price "USD-IDR"
print_price XMR USDT cryptocompare_price "XMR" "USD"
print_price BTC USDT cryptocompare_price "BTC" "USD"

for currency in EUR SGD JPY USD CNY; do
        print_price "$currency" IDR ipot_stock_price "$currency-IDR"
done
```
Created: 2024-10-03 10:37:41, Updated: 2026-06-02 03:36:48, ID: fc35ee2c-78ed-4b2a-b17f-b1849477779c