This commit is contained in:
gabrielkheisa 2022-11-04 23:43:25 +07:00
commit 5f21810bcc
3 changed files with 142 additions and 0 deletions

52
README.md Normal file
View File

@ -0,0 +1,52 @@
<h1>Get weather data from Google Search using Selenium</h1>
<h2>Requirements:</h2>
<ul>
<li>Python 3.6 or Python 3.7</li>
<li>Pip3</li>
<li>Selenium Python</li>
<li>Chromium driver binary</li>
<li>Jupyter Notebook (optional)</li>
</ul>
<h2>Trivia:</h2>
<ul>
<li>Suhu = Temperature</li>
<li>Kelembapan = Humidity</li>
<li>Angin = Wind speed</li>
<li>Cuaca = Weather</li>
</ul>
<h2>Example:</h2>
<ul>
<li>
Yogyakarta (Indonesia)
https://api.gabrielkheisa.xyz/weather/yogyakarta/
<pre>
{
"suhu": "24",
"kelembapan": "100%",
"presipitasi": "14%",
"angin": "2 km\/h",
"cuaca": "Berawan GMT+7",
"last_update": "Jumat 23.00",
"server_update": "04-11-2022 23:30:55"
}
</pre>
</li>
<li>
Yogyakarta (Singapore)
https://api.dev.gabrielkheisa.xyz/stocks/usdidr/
<pre>
{
"suhu": "24",
"kelembapan": "100%",
"presipitasi": "14%",
"angin": "2 km\/h",
"cuaca": "Cloudy GMT+7",
"last_update": "Friday 11:00 pm",
"server_update": "04-11-2022 23:21:06"
}
</pre>
</li>
</ul>

35
index.php Normal file
View File

@ -0,0 +1,35 @@
<?php
header('Content-Type: application/json; charset=utf-8');
$q = $_REQUEST["q"];
$key = "API_KEY";
if($q == ""){
$myfile = fopen("cache.txt", "r") or die("Unable to open file!");
$teks = fread($myfile,filesize("cache.txt"));
fclose($myfile);
$pieces = explode("=", $teks);
$marks = array("suhu"=>$pieces[0], "kelembapan"=>$pieces[1], "presipitasi"=>$pieces[2], "angin"=>$pieces[3],"cuaca"=>$pieces[4], "last_update"=>$pieces[5], "server_update"=>$pieces[6]);
echo json_encode($marks, JSON_PRETTY_PRINT);
}
else {
$txt = base64_decode($q);
$pieces = explode("=", $txt);
if(strcmp($pieces[7], $key) == 0) {
$myfile = fopen("cache.txt", "w") or die("Unable to open file!");
fwrite($myfile, $txt);
fclose($myfile);
echo "Done!";
}
else {
echo "Key Invalid";
fclose($myfile);
}
}
?>

55
script.py Normal file
View File

@ -0,0 +1,55 @@
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
from datetime import datetime
import base64
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('--headless')
options.add_argument('--disable-gpu')
browser = webdriver.Chrome(executable_path="/usr/bin/chromedriver", chrome_options=options)
browser.delete_all_cookies()
browser.get("https://www.google.com/search?q=weather+yogyakarta")
time.sleep(5)
suhu = browser.find_element_by_xpath("//*[@id=\"wob_tm\"]").get_attribute('textContent')
kelembapan = browser.find_element_by_xpath("//*[@id=\"wob_hm\"]").get_attribute('textContent')
presipitasi = browser.find_element_by_xpath("//*[@id=\"wob_pp\"]").get_attribute('textContent')
angin = browser.find_element_by_xpath("//*[@id=\"wob_ws\"]").get_attribute('textContent')
cuaca = browser.find_element_by_xpath("//*[@id=\"wob_dc\"]").get_attribute('textContent')
last_update = browser.find_element_by_xpath("//*[@id=\"wob_dts\"]").get_attribute('textContent')
payload = suhu + "=" + kelembapan + "=" + presipitasi + "=" + angin + "=" + cuaca + " GMT+7" + "=" + last_update + "=" + dt_string + "=" + key
print(payload)
payload_encoded = base64.b64encode(bytes(payload, 'utf-8'))
print(payload_encoded.decode('utf-8'))
response = requests.get('https://api.gabrielkheisa.xyz/weather/yogyakarta/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()