solorpower_crawler/tests/debug_cmsolar_realtime.py

86 lines
2.3 KiB
Python

import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from dotenv import load_dotenv
load_dotenv()
from config import get_all_plants
from crawlers.base import create_session
def debug_cmsolar_realtime():
plants = get_all_plants()
target = next((p for p in plants if p['id'] == 'cmsolar-10'), None)
if not target:
print("Plant 10 not found")
return
print(f"Debug target: {target['name']}")
# Extract info
auth = target.get('auth', {})
system = target.get('system', {})
login_id = auth.get('login_id', '')
login_pw = auth.get('login_pw', '')
site_no = auth.get('site_no', '')
login_url = system.get('login_url', '')
data_url = system.get('data_url', '')
print(f"Login ID: {login_id}")
print(f"Login URL: {login_url}")
print(f"Data URL: {data_url}")
session = create_session()
headers = {
'User-Agent': 'Mozilla/5.0',
'Content-Type': 'application/x-www-form-urlencoded'
}
# Login
login_data = {
'login_id': login_id,
'login_pw': login_pw,
'site_no': site_no
}
print("Logging in...")
try:
res = session.post(login_url, data=login_data, headers=headers)
print(f"Login Status: {res.status_code}")
# Site selection
base_url = "http://www.cmsolar2.kr"
change_url = f"{base_url}/change.php?site={site_no}"
print(f"Selecting site via {change_url}...")
session.get(change_url, headers=headers)
except Exception as e:
print(f"Login/Select Error: {e}")
return
# Fetch Data
real_data_url = f"{base_url}/plant/sub/idx_ok.php?mode=getPlant"
print(f"Fetching data from {real_data_url}...")
try:
res = session.get(real_data_url, headers=headers)
print(f"Data Status: {res.status_code}")
# print(f"Data Content-Type: {res.headers.get('Content-Type')}")
print(f"Data Response:\n{res.text}")
try:
json_data = res.json()
print(f"JSON parsed successfully.")
except Exception as e:
print(f"JSON Parse Error: {e}")
except Exception as e:
print(f"Data Fetch Error: {e}")
if __name__ == "__main__":
debug_cmsolar_realtime()