91 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			91 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import requests | ||
|  | from selenium import webdriver | ||
|  | from selenium.webdriver.chrome.options import Options | ||
|  | import time | ||
|  | from datetime import datetime | ||
|  | import base64 | ||
|  | 
 | ||
|  | import math | ||
|  | 
 | ||
|  | from selenium.webdriver.chrome.options import Options | ||
|  | 
 | ||
|  | key = "API_KEY"  | ||
|  | 
 | ||
|  | while(1): | ||
|  |     try: | ||
|  |         now = datetime.now() | ||
|  |         dt_string = now.strftime("%d-%m-%Y %H:%M:%S") | ||
|  | 
 | ||
|  |         options = Options() | ||
|  |         options.add_argument('--no-sandbox') | ||
|  |         options.add_argument('--window-size=1420,1080') | ||
|  |         options.add_argument('--headless') | ||
|  |         options.add_argument('--disable-gpu') | ||
|  |         browser = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver", chrome_options=options) | ||
|  | 
 | ||
|  |         browser.delete_all_cookies() | ||
|  |         browser.get("https://finance.yahoo.com/quote/IDR=X") | ||
|  | 
 | ||
|  |         time.sleep(5)  | ||
|  | 
 | ||
|  | 
 | ||
|  |         harga = browser.find_element_by_xpath("//*[@id=\"quote-header-info\"]/div[3]/div[1]/div/fin-streamer[1]").get_attribute('textContent') | ||
|  |         price_change = browser.find_element_by_xpath("//*[@id=\"quote-header-info\"]/div[3]/div[1]/div/fin-streamer[2]/span").get_attribute('textContent') | ||
|  |         change = browser.find_element_by_xpath("//*[@id=\"quote-header-info\"]/div[3]/div[1]/div/fin-streamer[3]/span").get_attribute('textContent') | ||
|  |         last_update = browser.find_element_by_xpath("//*[@id=\"quote-market-notice\"]/span").get_attribute('textContent') | ||
|  | 
 | ||
|  |         harga = harga.split(".")[0] | ||
|  |          | ||
|  |         change_flag = "" | ||
|  |          | ||
|  |         if "+" in price_change: | ||
|  |             change_flag = "+" | ||
|  |             price_change.replace('+', '') | ||
|  |         else: | ||
|  |             change_flag = "" | ||
|  |             price_change.replace('+', '') | ||
|  |              | ||
|  |         price_change = math.floor(float(price_change) * 100)/100.0 | ||
|  |          | ||
|  |         price_change = change_flag + str(price_change) | ||
|  |          | ||
|  |         change = change.replace('(', '') | ||
|  |         change = change.replace(')', '') | ||
|  |         change = change.replace('%', '') | ||
|  |         if "+" in change: | ||
|  |             change_flag = "+" | ||
|  |             change.replace('+', '') | ||
|  |         else: | ||
|  |             change_flag = "" | ||
|  |             change.replace('+', '') | ||
|  |      | ||
|  |         change = math.floor(float(change) * 100)/100.0 | ||
|  |         change = "(" + change_flag + str(change) + "%)" | ||
|  |          | ||
|  |          | ||
|  |         if "+" in change: | ||
|  |             sym = "#40ff00" | ||
|  |             sym2 = "🟢" | ||
|  |         else: | ||
|  |             sym = "#ff0000" | ||
|  |             sym2 = "🔴" | ||
|  |          | ||
|  |          | ||
|  |         payload = harga + "=" + price_change + "=" + change + "=" + last_update + "=" + dt_string + " GMT+7" + "=" + sym + "=" + sym2 + "=" + key | ||
|  | 
 | ||
|  | 
 | ||
|  |         print(payload) | ||
|  | 
 | ||
|  |         payload_encoded = base64.b64encode(bytes(payload, 'utf-8')) | ||
|  | 
 | ||
|  |         print(payload_encoded.decode('utf-8')) | ||
|  | 
 | ||
|  |         response = requests.get('https://api.dev.gabrielkheisa.xyz/stocks/usdidr/index.php?q='+str(payload_encoded.decode('ascii'))) | ||
|  | 
 | ||
|  |         browser.quit() | ||
|  |         print("Sleep for 1 hour") | ||
|  |         time.sleep(60*60) | ||
|  | 
 | ||
|  |     except: | ||
|  |         print("Error gak jelas, skip") | ||
|  |         browser.quit() |