JezK
Edit File: cron_new.php
<?php // Function to perform login and return cookies function login() { $login_data = [ 'mode' => 'login', 'login_id' => 'nabeel.mancheri@global-reia.org', 'login_pw' => 'reia2586' ]; $login_url = 'https://www.iru-miru.com/en/login.php'; $ch = curl_init($login_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $login_data); // Set a cookie jar to store cookies $cookie_jar = tempnam(sys_get_temp_dir(), 'cookie'); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar); $result = curl_exec($ch); curl_close($ch); //print_r($cookie_jar); exit; return $cookie_jar; } // Function to fetch metals based on group ID function fetch_metals($cookies, $gid, $base_url) { //print_r($cookies); exit; $ch = curl_init($base_url . '?gid=' . $gid); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_COOKIE, $cookies); $content = curl_exec($ch); $dom = new DOMDocument('1.0', 'UTF-8'); @$dom->loadHTML('<?xml encoding="utf-8" ?>' . $content); $node = @$dom->getElementById('categoryId'); $items = []; if ($node) { foreach ($node->childNodes as $option) { if ($option->nodeName !== 'option' || empty($option->nodeValue)) { continue; } $items[@$option->getAttribute('value')] = trim($option->textContent); } } curl_close($ch); // print_r($items); exit; return $items; } // Function to parse data based on date function parse_data($content, $date) { // echo $content; exit; $matches = []; preg_match('/\[\'' . $date . '\',.*?\]/', $content, $matches); return array_map(function ($item) { return json_decode(str_replace('\'', '"', $item), true); }, $matches); } // Function to insert data into the database function insert_data($type, $name, $prices) { $servername = "localhost"; $username = "bu3is_reia_use"; $password = "Krih#Rma@43%"; $conn = mysqli_connect($servername, $username, $password, "bu3is_reia_db"); $conn->set_charset("utf8mb4"); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $samplePrices = [ ['2023-01-01', 10.5, 9.8, 11.2], ['2023-01-02', 11.0, 10.2, 11.8], ['2023-01-03', 10.8, 9.5, 11.5] ]; foreach ($samplePrices as $row) { $price = !empty($row[1]) ? $row[1] : null; $price_min = !empty($row[2]) ? $row[2] : null; $price_max = !empty($row[3]) ? $row[3] : null; $stmt = "INSERT INTO market_prices_test (`type`, `description`, `date`, `price`, `price_min`, `price_max`) VALUES ('$type', '$name', '$row[0]', '$price', '$price_min', '$price_max')"; // echo $stmt . PHP_EOL; exit; // Display the insert query $insert_data = $conn->query($stmt); } mysqli_close($conn); } // Main function to fetch and process data function fetch($date = null) { $date ?? date('Y-m-d'); $login_cookies = login(); $base_url = 'https://www.iru-miru.com/en/metal_detail.php'; $types = [ 2 => 'Rare earth', 18 => 'Battery', 7 => 'Minor metal', 8 => 'Precious metal / PGM', 1 => 'Lead / Zinc / Tin', 3 => 'Aluminum', 6 => 'Copper', 9 => 'Iron ore / steel', 5 => 'SUS / Ferroalloy', 4 => 'E-waste', 15 => 'SCD / Electronics', 16 => 'Recycling' ]; $metals = [ 1 => [ 1 => 'LME Lead ($/MT)', 2 => 'Lead price (JPY/kg)', 3 => 'Lead battery scrap (JPY/kg)', 4 => 'Lead pipe (JPY/kg)', 171 => 'Lead ore (TC50%) ($/MT)', 5 => 'LME Zinc ($/MT)', 6 => 'Yamamoto price (JPY/kg)', 172 => 'Zinc ore (TC50%) ($/MT)', 7 => 'LME Tin ($/MT)', 8 => 'Domestic Tin Bullion (JPY/kg)' ], 2 => [ 9 => 'Cerium metal (99%min in China) (RMB/kg)', 10 => 'Cerium metal (99%FOB China) ($/kg)', 11 => 'Cerium oxide (99%min in China) (RMB/kg)', 12 => 'Cerium oxide (99% FOBChina) ($/kg)', 219 => 'Cerium carbonate (45-50% CeO2/TREO 100% FOBChina) ($/MT)', 13 => 'Dysprosium metal (99%min in China) (RMB/kg)', 14 => 'Dysprosium metal (99% FOBChina) ($/kg)', 15 => 'Dysprosium oxide (99%min in China) (RMB/kg)', 16 => 'Dysprosium oxide (99%FOB China) ($/kg)', 17 => 'Europium oxide (99%min in China) (RMB/kg)', 18 => 'Europium oxide (99% FOBChina) ($/kg)', 19 => 'Dysprosium iron alloy (99%min Dy 80% in China) (RMB/kg)', 20 => 'Dysprosium iron alloy (99%min Dy 80% FOBChina) ($/kg)', 220 => 'Erbium oxide (99%min FOBChina) ($/kg)', 23 => 'Gadolinium oxide (99%min in China) (RMB/kg)', 24 => 'Gadolinium oxide (99.99%min in China) ($/kg)', 25 => 'Lanthanum metal (99%min in China) (RMB/kg)', 26 => 'Lanthanum metal (99% FOBChina) ($/kg)', 27 => 'Lanthanum oxide (99%min in China) (RMB/kg)', 28 => 'Lanthanum oxide (99% FOBChina) ($/kg)', 29 => 'Lanthanum oxide (99.999%min in China) (RMB/kg)', 30 => 'Lanthanum oxide (99.999% FOBChina) ($/kg)', 32 => 'Misch metal (TREM≥99% Ce/TREM≥65% China) (RMB/kg)', 33 => 'Misch metal (TREM≥99% Ce/TREM≥65% China) ($/kg)', 34 => 'Misch metal (PrNd 99%min Nd 75% China) (RMB/kg)', 35 => 'Misch metal (PrNd 99%min Nd 75% FOBChina) ($/kg)', 36 => 'Neodymium metal (99%min in China) (RMB/kg)', 37 => 'Neodymium metal (99% FOBChina) ($/kg)', 38 => 'Neodymium oxide (99% in China) (RMB/kg)', 39 => 'Neodymium oxide (99% FOBChina) ($/kg)', 221 => 'Praseodymium oxide (99% FOBChina) ($/MT)', 40 => 'Praseodymium metal (99% FOBChina) ($/kg)', 41 => 'Terbium oxide (99.9%min in China) (RMB/kg)', 42 => 'Terbium oxide (99.9% FOBChina) ($/kg)', 43 => 'Yttrium oxide (99.999%min in China) (RMB/kg)', 44 => 'Yttrium oxide (99.999% FOBChina) ($/kg)', 45 => 'Samarium oxide (99.9%min in China) (RMB/kg)', 46 => 'Samarium oxide (99%min FOBChina) ($/kg)', 47 => 'Samarium metal (99%min in China) (RMB/kg)', 48 => 'Samarium metal (99%min FOBChina) ($/kg)', 236 => 'Scandium oxide (99.99%min China) (RMB/kg)' ], 3 => [ 49 => 'LME Aluminium ($/MT)', 50 => 'LME Aluminium Alloy ($/MT)', 169 => 'Australia alumina (FOB Australia USD/ton) (US$/ton)', 234 => 'Brazil alumina (FOB Brazil USD/ton) (US$/ton)', 249 => 'Aluminium P1020A premium, in-whs dp Rotterdam ($/tonne)', 250 => 'Aluminium P1020A premium, ddp Midwest US (cents/lb)', 251 => 'Aluminium P1020A (MJP) spot premium, cif Japan ($/ton)', 51 => 'NSP (Domestic aluminum metal) (JPY/kg)', 52 => 'Japan ADC12 (JPY/kg)', 53 => 'Sigma D12S ($/t)', 54 => 'Russia AK5M2 ($/t)', 55 => 'China ADC12(CIF Japan) (USD/ton)', 237 => 'Zorba (Metal97-98%CIF China) (USD/ton)', 56 => 'Aluminum 2S new cut (JPY/kg)', 57 => 'Aluminum sash 63 (No screw) (JPY/kg)', 58 => 'Aluminum 52 new cut (JPY/kg)', 59 => 'Aluminum Sash with screw (Pressed goods) (JPY/kg)', 60 => 'Aluminum wheel Mix (JPY/kg)', 61 => 'Japan aluminum base metal (JPY/kg)', 62 => 'Aluminum printing board (JPY/kg)', 63 => 'Aluminum new machine casting (JPY/kg)', 64 => 'Aluminum UBC(usedbeverage can) (JPY/kg)', 65 => 'Alum Dalai powder MIX (JPY/kg)', 66 => 'Aluminum-containing glass (JPY/kg)', 67 => 'Air conditioner radiator (with copper tube) (JPY/kg)', 71 => 'Black and white engine (JPY/kg)', 72 => 'White engine (JPY/kg)' ], 4 => [ 73 => 'Ceramic CPU (pure) (JPY/kg)', 74 => 'HDD board (JPY/kg)', 75 => 'IC board (middle) (JPY/kg)', 76 => 'Motherboard (MIX) (JPY/kg)', 77 => 'Motherboard (upper) * PEN III or earlier (JPY/kg)', 78 => 'Motherboard (bottom) * PENIV or later (JPY/kg)', 79 => 'Laptop motherboard (JPY/kg)', 80 => 'Memory board (JPY/kg)', 81 => 'Lithium ion battery (JPY/kg)', 261 => 'Lithium ion battery (JPY/kg)', 82 => 'Home appliance board (except washing machine) (JPY/kg)', 83 => 'Mobile phone (main body) (JPY/kg)' ], 5 => [ 84 => 'LME Nickel ($/MT)', 85 => 'Domestic nickel metal (JPY/kg)', 245 => 'NPI content 10-15% China (RMB/NickelMTU)', 244 => 'Nickel Ore Philippine 1.8%min CIF China ( USD/mt)', 86 => 'High carbon ferrochrome ($/LB)', 87 => 'Low carbon ferrochrome ($/LB)', 248 => 'Chrome ore South Africa UG2 concentrates Cr42%, CIF/China ($/ton)', 88 => 'High carbon ferromanganese(Mn75%min, C8%Max Europe) (EUR/MT)', 90 => 'Ferromanganese flakes(Mn99.7% Ex-VAT FOB China) ($/MT)', 91 => 'Silicomanganese (Mn65/Si17China) ($/MT)', 235 => 'Calcium silicon(30-55FOBChina) (USD/ton)', 92 => 'Ferrosilicon (72%minSiFOB China) ($/MT)', 93 => 'Molybdenum oxide ($/LB)', 94 => 'Ferromolybdenum (basisMo65% min) ($/kg Mo)', 95 => 'Ferroniobium ($/kg Nb)', 96 => 'Ferrotitanium ($/kg Ti)', 97 => 'Ferrotungsten ($/kg)', 98 => 'Ferrovanadium (basis 78% min EU, freemarketdelivered duty paidtoconsumer plant) ($/kg)', 99 => 'Niobium pentoxide ($/kg)', 100 => 'Vanadium pentoxide(V2O5) ($/lb V2O5 FOB CHINA)', 101 => 'Australian Manganese ore (Mn44%min US $/Mn1%) (USD/MTU)', 102 => '304 series scrap (JPY/kg)', 103 => '316 series scrap (JPY/kg)', 104 => '430 series scrap (JPY/kg)', 105 => '310 series scrap (JPY/kg)', 106 => '304 series scrap (JPY/kg)', 107 => '42 alloy scrap (JPY/kg)', 108 => 'MIX SKH50-59 (JPY/kg)', 109 => 'SKH50-59 (JPY/kg)', 110 => 'Pure titanium sheet scrap (JPY/kg)', 111 => 'Titanium alloy scrap (JPY/kg)', 112 => 'Titanium carbidescrap (JPY/kg)', 252 => 'hastelloyX (JPY/kg)', 253 => 'hastelloy C (JPY/kg)', 254 => 'inconell718 (JPY/kg)', 255 => 'inconell625 (JPY/kg)', 256 => 'incolloy800 (JPY/kg)', 257 => '6-4titanium ultra (JPY/kg)', 258 => 'molybdenum solid scrap (JPY/kg)', 259 => 'tantalum PIN scrap (JPY/kg)', 260 => 'ND magnet scrap (JPY/kg)', 113 => '304 cold rolled stainless sheet 2mm thickness (JPY/kg)', 114 => '430 cold rolled stainless sheet (JPY/kg)', 115 => '316 hot rolled stainless sheet 7mm thickness (JPY/kg)', 116 => '304 steel stainless bar (JPY/kg)', 243 => 'Stainless steel cold-rolled coil EastAsia CIF 304 (2mm 2B) ($/ton)', 269 => 'China Stainless Scrap (304 Solid in China) (RMB/mt)' ], 6 => [ 117 => 'LMECopper ($/MT)', 118 => 'NY Copper ($/lb)', 119 => 'SHFE Copper ($/MT(incTax))', 120 => 'Copper price (JPY/kg)', 121 => 'Number one picker linebare bright (JPY/kg)', 122 => 'Fresh copper cut (JPY/kg)', 123 => 'Copper (for smelting and refining Cu95%) (JPY/kg)', 124 => 'Coated copper wire (Cu40%) (JPY/kg)', 125 => 'Brass (JPY/kg)', 126 => 'Brass powder (JPY/kg)', 262 => 'night (円/kg)', 263 => 'Brass powder (円/kg)', 264 => 'Brass powder (円/kg)', 265 => 'Brass powder (円/kg)', 127 => 'Copper brass A (without impurities) (JPY/kg)', 128 => 'Phosphor bronze (JPY/kg)', 129 => 'Gunmetal roller (parallel bronze casting/without accessories) (JPY/kg)', 130 => 'Harness (JPY/kg)', 170 => 'Copper ore (TC30%) ($/MT)' ], 7 => [ 132 => 'Antimony (99.65% China) ($/MT)', 133 => 'Antimony trioxide (99.5%min FOBChina) ($/MT)', 134 => 'Bismuth (EU Freemarket) ($/LB)', 135 => 'Bismuth oxide (99.9%min in China) ($/kg)', 238 => 'LME Cobalt (US$/ton)', 136 => 'LG Cobalt (Co 99.3%) ($/LB)', 266 => 'HG Cobalt (Co 99.8%) ($/lb)', 138 => 'Cadmium (99.95% EU) ($/LB)', 222 => 'Ferrochrome (EU Freemarket) ($/MT)', 139 => 'Gallium (EU Freemarket) ($/kg)', 140 => 'Germanium metal (99.99% China) ($/kg)', 141 => 'Germanium oxide (99.999% China) ($/kg)', 142 => 'Indium (99.99% China) ($/kg)', 223 => 'Lithium metal (99.9% Delivered China) (RMB/mt)', 143 => 'Lithium carbonate (99% China) (RMB/mt)', 239 => 'Lithium carbonate (99.5% China) (RMB/mt)', 224 => 'Lithium hydroxide (56.5%min Delivered China) (RMB/mt)', 144 => 'Magnesium (99.9%China) (USD/MT)', 145 => 'Selenium (99.9%) (USD/lb)', 146 => 'Tellurium (99.95%) (USD/kg)', 150 => 'Rhenium (99.9% US) ($/kg)', 151 => 'Ferrosilicon (553 China) ($/MT)', 152 => 'Ferrosilicon (441 China) ($/MT)', 153 => '6N silicon (Solar-grade China) ($/kg)', 155 => 'Tantalite (Ta2O5 30%min CIFChina) ($/LB Ta2O5)', 156 => 'Tantalum (99.95% China) ($/kg)', 157 => 'Tantalum pentoxide ($/kg)', 158 => 'Titanium ore (Ilmenite) TI02 50% Fe203 14% ($/t)', 159 => 'Rutile sand (TIO290% China) ($/MT)', 160 => 'Titanium oxide (Rutile TiO2 93%min FOBChina) (USD/ton)', 161 => 'Titanium sponge ($/kg)', 162 => 'Tungsten ore (WO350%) (USD/mtu)', 163 => 'APT (EU Freemarket) ($/MTU)', 164 => 'Tungsten carbide (99.7%min 2.5-7.0micron FOBChina) ($/kg)', 165 => 'Tungsten oxide (WO3 99.95%min FOBChina) ($/mtu)', 166 => 'Tungsten bar (W-4 99.9% China) ($/kg)', 167 => 'Zirconium sponge (99.4%Zr+Hf) China (RMB/kg)', 168 => 'Zircon sand (ZrO266% CIF China) ($/MT)', 225 => 'Zirconium oxychloride (Zr(Hf)O2 36%min EXW China) (RMB/mt)' ], 8 => [ 173 => 'Gold (Yamamoto price) (JPY/g)', 174 => 'Silver (Yamamoto price) (JPY/kg)', 175 => 'Japan platinum (JPY/g)', 176 => 'Japan palladium (JPY/g)', 177 => 'NY Gold ($/toz)', 178 => 'NY Silver ($/toz)', 179 => 'NY Palladium ($/toz)', 180 => 'NY Platinum ($/toz)', 181 => 'Rhodium Johnson Matthey ($/toz)', 182 => 'Iridium ($/toz)', 183 => 'Ruthenium ($/toz)', 184 => 'Japan rhodium (JPY/g)', 185 => 'Japan iridium (JPY/g)', 186 => 'Japan ruthenium (JPY/g)', 187 => 'Automobile waste catalyst (honeycomb) Large (JPY/unit)', 188 => 'Automobile waste catalyst (honeycomb) Medium (JPY/unit)', 189 => 'Automobile waste catalyst (honeycomb) Small (JPY/unit)' ], 9 => [ 190 => 'Iron ore (62%Fe USD/ton CFRChina Qindao) ($/Dryton)', 191 => 'Small stick (JPY/mt)', 192 => 'H steel (JPY/mt)', 226 => 'US Composite ($/ton)', 193 => 'H2 (3 area average price:Kanto, Nagoya, Osaka) (JPY/mt)', 194 => 'H2 (special grade, domestic price) (JPY/t)', 231 => 'H2 (Totetsu-Okayama Sea) (JPY/t)', 232 => 'H2 (Totetsu Tahara Onsen) (JPY/t)', 233 => 'Raw material coal (High-grade strong sticky coal AUFOB USD/ton) (US$/ton)', 195 => 'New shredded steel scrap (JPY/t)', 196 => 'High manganese steel (JPY/t)', 197 => 'C press (JPY/t)', 227 => 'Graphite electrode (RMB/mt)', 246 => 'Steel scrap HMS 1&2 (75:25 mix) import,cfr delivered Turkish port ($/ton)', 247 => 'Steel scrap HMS 1&2 (80:20), cfr Vietnam, ($/ton)', 268 => 'China Steel Scrap (HMS in China) (RMB/mt)', 267 => 'China Steel Billt (RMB/mt)' ], 15 => [ 154 => '11N silicon (semiconductor US) ($/kg)' ], 16 => [ 198 => 'Industrial miscellaneous goods (JPY/kg)' ], 18 => [ 240 => 'Nickel Sulfate (RMB/mt)', 241 => 'Cobalt Sulfate (RMB/mt)', 242 => 'NCM 523 Delivered China (RMB/ton)' ] ]; foreach ($types as $type => $typeName) { // echo 'Processing Type: ' . $typeName . PHP_EOL; $metalsList = fetch_metals($login_cookies, $type, $base_url); foreach ($metalsList as $id => $metalName) { $uri = $base_url . '?id=' . $id . '&type=4'; $response = file_get_contents($uri); // Use file_get_contents as an alternative to wp_remote_post echo $response; exit; if (!is_array($date)) { // print_r($date); $prices = parse_data($response, $date); // print_r($prices); exit; insert_data($type, $metalName, $prices); } else { foreach ($date as $dateVal) { $prices = parse_data($response, $dateVal); insert_data($type, $metalName, $prices); } } } } } // Usage fetch(); // Call the main fetch function ?>