Engineer786 commited on
Commit
124d8cf
·
verified ·
1 Parent(s): 90042c9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -36
app.py CHANGED
@@ -4,40 +4,42 @@ from tariff_scraper import scrape_tariff_data
4
  def main():
5
  st.title("Electricity Bill Calculator with Tariff Scraper")
6
 
7
- # Default URL for scraping tariff rates
8
- url = "https://iesco.com.pk/index.php/customer-services/tariff-guide"
9
-
10
- # Scrape tariff rates
11
- tariff_rate = 0.0
12
- with st.spinner("Fetching tariff rates..."):
13
- data = scrape_tariff_data(url)
14
- if isinstance(data, list) and data:
15
- # Extract tariff rate from the scraped data
16
- # Assuming tariff rate is mentioned as a numeric value in PKR/unit
17
- for row in data:
18
- if "PKR" in row: # Replace with specific logic matching the structure of the scraped data
19
- try:
20
- tariff_rate = float(row.split()[1]) # Adjust this parsing logic based on your data
21
- break
22
- except (ValueError, IndexError):
23
- continue
24
- if tariff_rate == 0.0:
25
- st.warning("Could not fetch tariff rates. Using default rate of PKR 20.0/unit.")
26
- tariff_rate = 20.0 # Default rate
 
 
 
 
 
27
 
28
- # Electricity Bill Calculator Section
29
- st.write("## Electricity Bill Calculator")
30
  st.sidebar.subheader("Appliance Usage")
31
-
32
  appliances = {
33
  "Fan": 75, "Air Conditioner (1 Ton)": 1500, "Refrigerator": 150,
34
  "LED Bulb (20W)": 20, "Iron": 1000, "Microwave Oven": 1200
35
  }
36
-
37
- appliance = st.sidebar.selectbox("Select Appliance", options=list(appliances.keys()))
38
  quantity = st.sidebar.number_input("Quantity", min_value=1, value=1)
39
  usage_hours = st.sidebar.number_input("Usage Hours/Day", min_value=1.0, value=6.0)
40
-
41
  if st.sidebar.button("Add Appliance"):
42
  st.session_state.setdefault("appliances", []).append({
43
  "appliance": appliance,
@@ -47,24 +49,20 @@ def main():
47
  })
48
  st.sidebar.success(f"{quantity} x {appliance} added.")
49
 
50
- # Display Appliances
51
  st.write("### Selected Appliances")
52
  if "appliances" in st.session_state:
53
  for app in st.session_state["appliances"]:
54
  st.write(f"{app['quantity']} x {app['appliance']} ({app['usage_hours']} hours/day)")
55
- else:
56
- st.write("No appliances added yet.")
57
-
58
- # Calculate and Display Bill
59
- if st.button("Calculate Bill"):
60
- if "appliances" in st.session_state:
61
  total_units = sum(
62
  app["quantity"] * app["load"] * app["usage_hours"] / 1000 for app in st.session_state["appliances"]
63
  )
64
  bill = total_units * 30 * tariff_rate
65
- st.success(f"Estimated Monthly Bill: PKR {bill:.2f} (Tariff Rate: PKR {tariff_rate:.2f}/unit)")
66
- else:
67
- st.warning("No appliances added for calculation.")
68
 
69
  if __name__ == "__main__":
70
  main()
 
4
  def main():
5
  st.title("Electricity Bill Calculator with Tariff Scraper")
6
 
7
+ # Fetch tariff rates
8
+ st.sidebar.subheader("Tariff Rates")
9
+ url = st.sidebar.text_input("Tariff URL", "https://iesco.com.pk/index.php/customer-services/tariff-guide")
10
+
11
+ if st.sidebar.button("Fetch Tariff Rates"):
12
+ with st.spinner("Fetching tariff rates..."):
13
+ data = scrape_tariff_data(url)
14
+ if isinstance(data, dict): # Check if data is a valid dictionary
15
+ st.session_state["tariff_rates"] = data
16
+ st.sidebar.success("Tariff rates fetched successfully!")
17
+ st.write("### Tariff Rates")
18
+ for category, rate in data.items():
19
+ st.write(f"{category}: {rate} PKR/unit")
20
+ else:
21
+ st.sidebar.error(data)
22
+
23
+ # Use fetched tariff rates
24
+ tariff_categories = st.session_state.get("tariff_rates", {})
25
+ if tariff_categories:
26
+ load_type = st.sidebar.selectbox("Select Load Type", options=tariff_categories.keys())
27
+ tariff_rate = tariff_categories.get(load_type, 0.0)
28
+ else:
29
+ st.sidebar.warning("Using default rate. Fetch tariff rates to use live data.")
30
+ load_type = "Default"
31
+ tariff_rate = st.sidebar.number_input("Default Tariff Rate (PKR/unit)", min_value=0.0, value=20.0)
32
 
33
+ # Electricity bill calculation
 
34
  st.sidebar.subheader("Appliance Usage")
 
35
  appliances = {
36
  "Fan": 75, "Air Conditioner (1 Ton)": 1500, "Refrigerator": 150,
37
  "LED Bulb (20W)": 20, "Iron": 1000, "Microwave Oven": 1200
38
  }
39
+ appliance = st.sidebar.selectbox("Select Appliance", options=appliances.keys())
 
40
  quantity = st.sidebar.number_input("Quantity", min_value=1, value=1)
41
  usage_hours = st.sidebar.number_input("Usage Hours/Day", min_value=1.0, value=6.0)
42
+
43
  if st.sidebar.button("Add Appliance"):
44
  st.session_state.setdefault("appliances", []).append({
45
  "appliance": appliance,
 
49
  })
50
  st.sidebar.success(f"{quantity} x {appliance} added.")
51
 
52
+ # Display appliances and calculate bill
53
  st.write("### Selected Appliances")
54
  if "appliances" in st.session_state:
55
  for app in st.session_state["appliances"]:
56
  st.write(f"{app['quantity']} x {app['appliance']} ({app['usage_hours']} hours/day)")
57
+
58
+ if st.button("Calculate Bill"):
 
 
 
 
59
  total_units = sum(
60
  app["quantity"] * app["load"] * app["usage_hours"] / 1000 for app in st.session_state["appliances"]
61
  )
62
  bill = total_units * 30 * tariff_rate
63
+ st.success(f"Estimated Monthly Bill for {load_type}: PKR {bill:.2f}")
64
+ else:
65
+ st.write("No appliances added yet.")
66
 
67
  if __name__ == "__main__":
68
  main()