mirror of
https://github.com/0xrsydn/idx-cli.git
synced 2026-08-07 01:33:52 +00:00
fix: restore live IDX ownership import
This commit is contained in:
parent
a2d15d2125
commit
c100c2da4d
3 changed files with 36 additions and 8 deletions
|
|
@ -3,9 +3,9 @@ use std::process::{Command, Output};
|
||||||
use crate::error::IdxError;
|
use crate::error::IdxError;
|
||||||
|
|
||||||
const CANDIDATES: &[&str] = &[
|
const CANDIDATES: &[&str] = &[
|
||||||
"curl_chrome142",
|
|
||||||
"curl_chrome136",
|
"curl_chrome136",
|
||||||
"curl_chrome133a",
|
"curl_chrome133a",
|
||||||
|
"curl_chrome142",
|
||||||
"curl_chrome131",
|
"curl_chrome131",
|
||||||
"curl_chrome124",
|
"curl_chrome124",
|
||||||
"curl_chrome120",
|
"curl_chrome120",
|
||||||
|
|
|
||||||
|
|
@ -29,10 +29,15 @@ const HEADER_LABELS: &[&str] = &[
|
||||||
const HOLDER_REGISTER_SCHEMA_MARKERS: &[&str] = &[
|
const HOLDER_REGISTER_SCHEMA_MARKERS: &[&str] = &[
|
||||||
"TEXT=\"DATE\"",
|
"TEXT=\"DATE\"",
|
||||||
"TEXT=\"SHARE_CODE\"",
|
"TEXT=\"SHARE_CODE\"",
|
||||||
|
"TEXT=\"SHARE CODE\"",
|
||||||
"TEXT=\"INVESTOR_NAME\"",
|
"TEXT=\"INVESTOR_NAME\"",
|
||||||
|
"TEXT=\"INVESTOR NAME\"",
|
||||||
"TEXT=\"INVESTOR_TYPE\"",
|
"TEXT=\"INVESTOR_TYPE\"",
|
||||||
|
"TEXT=\"INVESTOR CLASSIFICATION\"",
|
||||||
"TEXT=\"LOCAL_FOREIGN\"",
|
"TEXT=\"LOCAL_FOREIGN\"",
|
||||||
|
"TEXT=\"LOCAL/FOREIGN\"",
|
||||||
"TEXT=\"TOTAL_HOLDING_SHARES\"",
|
"TEXT=\"TOTAL_HOLDING_SHARES\"",
|
||||||
|
"TEXT=\"TOTAL HOLDING SHARES\"",
|
||||||
"TEXT=\"PERCENTAGE\"",
|
"TEXT=\"PERCENTAGE\"",
|
||||||
];
|
];
|
||||||
const ANNOUNCEMENT_WRAPPER_SCHEMA_MARKERS: &[&str] =
|
const ANNOUNCEMENT_WRAPPER_SCHEMA_MARKERS: &[&str] =
|
||||||
|
|
@ -40,8 +45,9 @@ const ANNOUNCEMENT_WRAPPER_SCHEMA_MARKERS: &[&str] =
|
||||||
const ABOVE_FIVE_SCHEMA_MARKERS: &[&str] =
|
const ABOVE_FIVE_SCHEMA_MARKERS: &[&str] =
|
||||||
&["TEXT=\"INVS\"", "REKENING TAMPUNGAN KSEI", "CLOSED MEMBER-"];
|
&["TEXT=\"INVS\"", "REKENING TAMPUNGAN KSEI", "CLOSED MEMBER-"];
|
||||||
const INVESTOR_TYPE_SCHEMA_MARKERS: &[&str] = &[
|
const INVESTOR_TYPE_SCHEMA_MARKERS: &[&str] = &[
|
||||||
"TEXT=\"STOCK_CODE\"",
|
"STOCK_CODE",
|
||||||
"TEXT=\"NUMBER_OF_SHARES\"",
|
"NUMBER_OF_SHARES",
|
||||||
|
"TEXT=\"DOMESTIC\"",
|
||||||
"TEXT=\"FOREIGN\"",
|
"TEXT=\"FOREIGN\"",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -460,8 +466,33 @@ fn is_id_number_like(value: &str) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_investor_type_marker(value: &str) -> bool {
|
fn is_investor_type_marker(value: &str) -> bool {
|
||||||
let trimmed = value.trim();
|
let trimmed = value.trim().to_ascii_uppercase();
|
||||||
!trimmed.is_empty() && trimmed.len() <= 4 && trimmed.chars().all(|ch| ch.is_ascii_uppercase())
|
if trimmed.is_empty() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if trimmed.len() <= 4 && trimmed.chars().all(|ch| ch.is_ascii_uppercase()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
matches!(
|
||||||
|
trimmed.as_str(),
|
||||||
|
"CORPORATE"
|
||||||
|
| "INDIVIDUAL"
|
||||||
|
| "MUTUAL FUND"
|
||||||
|
| "PENSION FUND"
|
||||||
|
| "INSURANCE"
|
||||||
|
| "FOUNDATION"
|
||||||
|
| "SECURITIES COMPANY"
|
||||||
|
| "PRIVATE BANK"
|
||||||
|
| "PRIVATE EQUITY"
|
||||||
|
| "SOVEREIGN WEALTH FUND"
|
||||||
|
| "STATE OWNED ENTERPRISES"
|
||||||
|
| "BANK"
|
||||||
|
| "FIRM"
|
||||||
|
| "BROKER"
|
||||||
|
| "OTHER"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_locality_marker(value: &str) -> bool {
|
fn is_locality_marker(value: &str) -> bool {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ const DEFAULT_IDX_ANNOUNCEMENT_API_URL: &str =
|
||||||
const IDX_ANNOUNCEMENT_API_ENV: &str = "IDX_OWNERSHIP_ANNOUNCEMENT_API_URL";
|
const IDX_ANNOUNCEMENT_API_ENV: &str = "IDX_OWNERSHIP_ANNOUNCEMENT_API_URL";
|
||||||
const IDX_ANNOUNCEMENT_LISTING_ENV: &str = "IDX_OWNERSHIP_ANNOUNCEMENT_PAGE_URL";
|
const IDX_ANNOUNCEMENT_LISTING_ENV: &str = "IDX_OWNERSHIP_ANNOUNCEMENT_PAGE_URL";
|
||||||
const IDX_ANNOUNCEMENT_PAGE_SIZE: usize = 10;
|
const IDX_ANNOUNCEMENT_PAGE_SIZE: usize = 10;
|
||||||
const USER_AGENT: &str = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36";
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Deserialize)]
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
pub struct AnnouncementPage {
|
pub struct AnnouncementPage {
|
||||||
|
|
@ -383,7 +382,6 @@ fn fetch_bytes(stage: &str, url: &str, headers: &[(String, String)]) -> Result<V
|
||||||
|
|
||||||
fn json_headers() -> Vec<(String, String)> {
|
fn json_headers() -> Vec<(String, String)> {
|
||||||
vec![
|
vec![
|
||||||
("User-Agent".to_string(), USER_AGENT.to_string()),
|
|
||||||
(
|
(
|
||||||
"Accept".to_string(),
|
"Accept".to_string(),
|
||||||
"application/json,text/plain,*/*".to_string(),
|
"application/json,text/plain,*/*".to_string(),
|
||||||
|
|
@ -398,7 +396,6 @@ fn json_headers() -> Vec<(String, String)> {
|
||||||
|
|
||||||
fn pdf_headers() -> Vec<(String, String)> {
|
fn pdf_headers() -> Vec<(String, String)> {
|
||||||
vec![
|
vec![
|
||||||
("User-Agent".to_string(), USER_AGENT.to_string()),
|
|
||||||
(
|
(
|
||||||
"Accept".to_string(),
|
"Accept".to_string(),
|
||||||
"application/pdf,application/octet-stream,*/*;q=0.8".to_string(),
|
"application/pdf,application/octet-stream,*/*;q=0.8".to_string(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue