43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package main
|
|
|
|
import "log"
|
|
|
|
const (
|
|
OFZ_URL = `https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQOB/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,NEXTCOUPON,COUPONVALUE,SECNAME,COUPONPERCENT,MATDATE,COUPONPERIOD`
|
|
CORP_URL = `https://iss.moex.com/iss/engines/stock/markets/bonds/boards/TQCB/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,NEXTCOUPON,COUPONVALUE,SECNAME,COUPONPERCENT,MATDATE,COUPONPERIOD`
|
|
)
|
|
|
|
func main() {
|
|
d1, err := processFile(OFZ_URL)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
if err := export("офз.csv", d1); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
d2, err := processFile(CORP_URL)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
if err := export("корп.csv", d2); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func processFile(url string) ([]*Document, error) {
|
|
in, err := download(url)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var documents []*Document
|
|
for _, item := range in.Data.Rows.Items {
|
|
d, err := parse(item)
|
|
if err != nil {
|
|
log.Println(err)
|
|
continue
|
|
}
|
|
documents = append(documents, d)
|
|
}
|
|
return documents, nil
|
|
}
|