tharunk07 commited on
Commit
4e44b6c
·
1 Parent(s): 4341d97

Add application file

Browse files
app.py ADDED
@@ -0,0 +1,273 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from PIL import Image
3
+ import google.generativeai as genai
4
+ from geopy.geocoders import Nominatim
5
+ from deep_translator import GoogleTranslator
6
+ import requests
7
+ import io
8
+ import datetime
9
+ import pandas as pd
10
+ import matplotlib.pyplot as plt
11
+
12
+ # Get the current date
13
+ current_date = datetime.datetime.now()
14
+ cur_date = f"{current_date.day}/{current_date.month}/{current_date.year}"
15
+
16
+ # Configure Google Generative AI
17
+ genai.configure(api_key="AIzaSyAXCVMFirOACW80v3w4lNEruWBAskWbeiw") # Replace with your API key
18
+ weather_model = genai.GenerativeModel('gemini-1.5-flash')
19
+ farming_model = genai.GenerativeModel('gemini-pro')
20
+
21
+ # Initialize session state
22
+ if 'location' not in st.session_state:
23
+ st.session_state['location'] = ""
24
+ if 'crops' not in st.session_state:
25
+ st.session_state['crops'] = ""
26
+ if 'section' not in st.session_state:
27
+ st.session_state['section'] = "Weather Update"
28
+ if 'weather_data' not in st.session_state:
29
+ st.session_state['weather_data'] = None
30
+ if 'farming_plan' not in st.session_state:
31
+ st.session_state['farming_plan'] = None
32
+ if 'url' not in st.session_state:
33
+ st.session_state['url'] = None
34
+
35
+ # Sidebar navigation
36
+ st.sidebar.title("Menu")
37
+ st.sidebar.radio(
38
+ "Choose a section:",
39
+ ["Edit Information", "Weather Update", "Disease Prediction", "Price Plots"],
40
+ key='section'
41
+ )
42
+
43
+ # Function to get location coordinates
44
+ def get_location_coordinates(location_name):
45
+ loc = Nominatim(user_agent="GetLoc")
46
+ getLoc = loc.geocode(location_name)
47
+ if getLoc:
48
+ return getLoc.latitude, getLoc.longitude
49
+ else:
50
+ return None, None
51
+
52
+ # Function to fetch HTML content from a weather website
53
+ def get_html(url):
54
+ try:
55
+ headers = {"User-Agent": "Mozilla/5.0"}
56
+ response = requests.get(url, headers=headers)
57
+ if response.status_code == 200:
58
+ return response.text
59
+ else:
60
+ st.error(f"Failed to fetch the page. Status code: {response.status_code}")
61
+ return None
62
+ except Exception as e:
63
+ st.error(f"An error occurred: {e}")
64
+ return None
65
+
66
+ # Function to analyze weather data using AI
67
+ def analyze_weather_data(raw_data):
68
+ st.info("🔍 Crunching the weather data... Hang tight, farmer!")
69
+ prompt = f"""
70
+ I have the following text,
71
+ {raw_data}
72
+ This is a 15-day weather forecast. Today's date is `{cur_date}` in DD/MM/YYYY format.
73
+
74
+ Please analyze the data and format it correctly in this structure:
75
+
76
+ Date: {{date}}
77
+ Highest Temperature: {{highest_temperature}}
78
+ Lowest Temperature: {{lowest_temperature}}
79
+ Humidity: {{humidity}}
80
+ Percentage of Rain: {{rain_percentage}}
81
+ Wind Speed: {{wind_speed}}
82
+ Climate: {{climate}}
83
+ """
84
+ response = weather_model.generate_content(prompt)
85
+ return response.text
86
+
87
+ # Function to generate a farming plan
88
+ def generate_farming_plan(analyzed_data, crops):
89
+ st.info("🌾 Mapping out a smart farming plan for you... Stay tuned!")
90
+ prompt = f"""
91
+ Here is the text from a weather report of next 15 days:
92
+
93
+ {analyzed_data}
94
+
95
+ The user is actually a farmer and has these crops: {crops}.
96
+
97
+ Analyse the data completely and give me a concise farming plan for the next 15 days.
98
+ Focus on the varying weather reports, highlight if the farmer wants to undergo any precautions before anything unexpected happens.
99
+ Provide it with the actual date.
100
+ """
101
+ response = farming_model.generate_content(prompt)
102
+ return response.text
103
+
104
+ # Function to analyze plant disease using AI
105
+ def analyze_plant_disease(image_description, image):
106
+ st.info("🧐 Investigating plant health... This will just take a moment!")
107
+ prompt = """
108
+ Analyze the provided image of a plant and determine the type of disease it is affected by.
109
+ Follow the structure outlined below:
110
+
111
+ Template for Response:
112
+ ```
113
+ Plant Name: {plant_name}
114
+ Disease Name: {disease_name}
115
+ Disease Severity: {severity_level}
116
+ Suggestions to Overcome: {suggestions}
117
+ ```
118
+
119
+ Guidelines:
120
+ - Identify the type of disease in the image of the plant.
121
+ - If unclear, provide an approximate answer.
122
+ - Ensure the response is concise, accurate, and aligned with the template.
123
+ """
124
+ if image_description:
125
+ prompt += f"""
126
+ Here is a description of the image from the user:
127
+ ```
128
+ {image_description}
129
+ ```
130
+ Consider this information carefully in your response.
131
+ """
132
+
133
+ img_buffer = io.BytesIO()
134
+ image.save(img_buffer, format="PNG")
135
+ img_buffer.seek(0)
136
+
137
+ response = weather_model.generate_content([prompt, Image.open(img_buffer)])
138
+ return response.text.strip("```")
139
+
140
+ # Function to translate text to Tamil
141
+ def translate_to_tamil(text):
142
+ translator = GoogleTranslator(source='auto', target='ta')
143
+ return translator.translate(text)
144
+
145
+ def bold_text_before_colon(text):
146
+ # Split the input text into lines
147
+ lines = text.split('\n')
148
+
149
+ # Process each line to add bold formatting before the colon
150
+ formatted_lines = []
151
+ for line in lines:
152
+ if ':' in line:
153
+ # Split the line at the first colon
154
+ before_colon, after_colon = line.split(':', 1)
155
+ # Add bold formatting to the part before the colon
156
+ formatted_line = f"**{before_colon.strip()}**: {after_colon.strip()}"
157
+ else:
158
+ # If no colon is present, keep the line unchanged
159
+ formatted_line = line.strip()
160
+ formatted_lines.append(formatted_line)
161
+
162
+ # Join all the formatted lines back together
163
+ return '\n'.join(formatted_lines)
164
+
165
+
166
+ def clear_weather_data():
167
+ st.session_state['weather_data'] = None
168
+ st.session_state['farming_plan'] = None
169
+
170
+ # Function to plot individual datasets
171
+ def plot_data(data, x_col, y_col, xlabel, ylabel, title):
172
+ fig, ax = plt.subplots()
173
+ ax.plot(data[x_col], data[y_col])
174
+ ax.set_xlabel(xlabel)
175
+ ax.set_ylabel(ylabel)
176
+ ax.set_title(title)
177
+ st.pyplot(fig)
178
+
179
+ # Main application logic
180
+ if st.session_state['section'] == "Edit Information":
181
+ st.title("Edit Information")
182
+
183
+ location = st.text_input("Enter the location:", st.session_state['location'])
184
+ crops = st.text_input("Enter your crops (comma-separated):", st.session_state['crops'])
185
+
186
+ if st.button("Save"):
187
+ st.session_state['location'] = location
188
+ st.session_state['crops'] = crops
189
+ st.success("Information saved! 🎉")
190
+ clear_weather_data()
191
+
192
+ elif st.session_state['section'] == "Weather Update":
193
+ st.title("15-Day Weather Forecast")
194
+
195
+ if not st.session_state['location'] or not st.session_state['crops']:
196
+ st.error("Please enter your location and crops in the 'Edit Information' section.")
197
+ else:
198
+ if not st.session_state['weather_data']:
199
+ lat, long = get_location_coordinates(st.session_state['location'])
200
+ if lat and long:
201
+ st.session_state['url'] = f"https://weather.com/en-IN/weather/tenday/l/{lat},{long}?par=google"
202
+ html_content = get_html(st.session_state['url'])
203
+
204
+ if html_content:
205
+ st.markdown("⚡ **Analyzing weather trends with cutting-edge AI...**")
206
+ weather_data = analyze_weather_data(html_content)
207
+ farming_plan = generate_farming_plan(weather_data, st.session_state['crops'])
208
+
209
+ st.session_state['weather_data'] = weather_data
210
+ st.session_state['farming_plan'] = farming_plan
211
+ else:
212
+ st.error("Location not found. Please enter a valid location.")
213
+ st.markdown(st.session_state['farming_plan'])
214
+ st.markdown(f"[For more weather updates, click here]({st.session_state['url']})")
215
+
216
+ elif st.session_state['section'] == "Disease Prediction":
217
+ st.title("Plant Disease Detection System")
218
+ uploaded_image = st.file_uploader("Upload a plant image", type=["jpg", "jpeg", "png"])
219
+
220
+ if uploaded_image:
221
+ image = Image.open(uploaded_image)
222
+ st.image(image, caption="Uploaded Image", use_column_width=True)
223
+ image_description = st.text_area("Enter a brief description of the plant and symptoms (optional):", "")
224
+
225
+ if st.button("Analyze"):
226
+ with st.spinner("Analyzing the plant disease..."):
227
+ original_response = bold_text_before_colon(analyze_plant_disease(image_description, image))
228
+ st.success("Analysis Complete! 🎯")
229
+ st.subheader("**Analysis Report (English):**")
230
+ original_response = original_response.replace("\n"," \n").replace("\n\n"," \n")
231
+ st.markdown(original_response)
232
+
233
+ tamil_translation = translate_to_tamil(original_response)
234
+ st.subheader("**Analysis Report (Tamil):**")
235
+ tamil_translation = tamil_translation.replace("\n"," \n").replace("\n\n"," \n")
236
+ st.markdown(tamil_translation)
237
+
238
+ elif st.session_state['section'] == "Price Plots":
239
+ st.title("Crop Price Trends")
240
+
241
+ col1, col2 = st.columns(2)
242
+ with col1:
243
+ df = pd.read_csv("content/retail_prices.csv")
244
+ st.subheader("Rice Prices")
245
+ if not df.empty:
246
+ plot_data(df, 'date', 'pricw', 'Date', 'Price of Rice', 'Date vs Price of Rice')
247
+ else:
248
+ st.write("No data available for Rice.")
249
+
250
+ with col2:
251
+ df1 = pd.read_csv("content/Tomato.csv")
252
+ st.subheader("Tomato Prices")
253
+ if not df1.empty:
254
+ plot_data(df1, 'Date', 'Price', 'Date', 'Price of Tomato', 'Date vs Price of Tomato')
255
+ else:
256
+ st.write("No data available for Tomato.")
257
+
258
+ col3, col4 = st.columns(2)
259
+ with col3:
260
+ df3 = pd.read_csv("content/turmeric_price_6_months_with_dates.csv")
261
+ st.subheader("Turmeric Prices")
262
+ if not df3.empty:
263
+ plot_data(df3, 'Date', 'Price', 'Date', 'Price of Turmeric', 'Date vs Price of Turmeric')
264
+ else:
265
+ st.write("No data available for Turmeric.")
266
+
267
+ with col4:
268
+ df4 = pd.read_csv("content/44444.csv")
269
+ st.subheader("Wheat Prices")
270
+ if not df4.empty:
271
+ plot_data(df4, 'date', 'pricw', 'Date', 'Price of Wheat', 'Date vs Price of Wheat')
272
+ else:
273
+ st.write("No data available for Wheat.")
content/44444.csv ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ date,pricw
2
+ 01-03-2018,34.49
3
+ 01-04-2018,36.13
4
+ 01-05-2018,40.09
5
+ 01-06-2018,37.27
6
+ 01-07-2018,34.48
7
+ 01-08-2018,32.09
8
+ 01-09-2018,31.46
9
+ 01-10-2018,31.97
10
+ 01-11-2018,29.27
11
+ 01-12-2018,29.9
12
+ 01-01-2019,33
13
+ 01-02-2019,31.33
14
+ 01-03-2019,31.36
15
+ 01-04-2019,28.48
16
+ 01-05-2019,30.15
17
+ 01-06-2019,28.56
18
+ 01-07-2019,27.99
19
+ 01-08-2019,29.06
20
+ 01-09-2019,32.08
21
+ 01-10-2019,36.74
22
+ 01-11-2019,39.21
23
+ 01-12-2019,43.29
24
+ 01-01-2020,34.66
25
+ 01-02-2020,38
26
+ 01-03-2020,38
27
+ 01-05-2020,36
28
+ 01-06-2020,40.19
29
+ 01-07-2020,38.97
30
+ 01-08-2020,39.16
31
+ 01-09-2020,39.85
32
+ 01-01-2021,50.93
33
+ 01-02-2021,47.15
34
+ 01-03-2021,48.65
35
+ 01-04-2021,53.84
36
+ 01-05-2021,57.56
37
+ 01-06-2021,67.5
38
+ 01-07-2021,61.77
39
+ 01-08-2021,59.95
40
+ 01-09-2021,50.22
41
+ 01-10-2021,64.68
42
+ 01-11-2021,60.03
43
+ 01-12-2021,62.5
44
+ 01-01-2022,68.14
45
+ 01-02-2022,71.16
46
+ 01-03-2022,63.79
47
+ 01-04-2022,51.24
48
+ 01-05-2022,57.29
49
+ 01-06-2022,54.14
50
+ 01-07-2022,50.07
51
+ 01-08-2022,49.24
52
+ 01-09-2022,48.44
53
+ 01-10-2022,34.78
54
+ 01-11-2022,32.28
55
+ 01-12-2022,32.2
content/Tomato.csv ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Date,Price
2
+ 25-03-2021,35
3
+ 26-03-2021,35
4
+ 27-03-2021,45
5
+ 28-03-2021,45
6
+ 29-03-2021,47.5
7
+ 30-03-2021,47.5
8
+ 31-03-2021,47.5
9
+ 01-04-2021,35
10
+ 02-04-2021,35
11
+ 03-04-2021,40
12
+ 04-04-2021,47.5
13
+ 05-04-2021,35
14
+ 06-04-2021,32.5
15
+ 07-04-2021,35
16
+ 08-04-2021,35
17
+ 09-04-2021,35
18
+ 10-04-2021,35
19
+ 11-04-2021,30
20
+ 12-04-2021,30
21
+ 13-04-2021,22.5
22
+ 14-04-2021,22.5
23
+ 15-04-2021,17.5
24
+ 16-04-2021,17.5
25
+ 17-04-2021,14
26
+ 18-04-2021,17.5
27
+ 19-04-2021,12.5
28
+ 20-04-2021,12.5
29
+ 21-04-2021,17.5
30
+ 22-04-2021,12.5
31
+ 23-04-2021,16
32
+ 24-04-2021,12.5
33
+ 25-04-2021,17.5
34
+ 26-04-2021,12.5
35
+ 27-04-2021,12.5
36
+ 28-04-2021,17.5
37
+ 29-04-2021,35
38
+ 30-04-2021,22.5
39
+ 01-05-2021,22.5
40
+ 02-05-2021,27.5
41
+ 03-05-2021,17.5
42
+ 04-05-2021,12.5
43
+ 05-05-2021,12.5
44
+ 06-05-2021,12.5
45
+ 07-05-2021,17.5
46
+ 08-05-2021,12.5
47
+ 09-05-2021,12.5
48
+ 10-05-2021,12.5
49
+ 11-05-2021,12.5
50
+ 12-05-2021,32.5
51
+ 13-05-2021,37.5
content/retail_prices.csv ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ date,pricw
2
+ 01-01-2011,60.95
3
+ 01-02-2011,63.03
4
+ 01-03-2011,62.6
5
+ 01-04-2011,62.35
6
+ 01-05-2011,62.33
7
+ 01-06-2011,62.26
8
+ 01-07-2011,61.88
9
+ 01-08-2011,60.83
10
+ 01-09-2011,58.39
11
+ 01-10-2011,58.78
12
+ 01-11-2011,60.51
13
+ 01-12-2011,62.54
14
+ 01-01-2012,61.54
15
+ 01-02-2012,59.53
16
+ 01-03-2012,58.66
17
+ 01-04-2012,57.64
18
+ 01-05-2012,57.07
19
+ 01-06-2012,58.04
20
+ 01-07-2012,59.48
21
+ 01-08-2012,58.91
22
+ 01-09-2012,61.44
23
+ 01-10-2012,61.98
24
+ 01-11-2012,62.72
25
+ 01-12-2012,63.58
26
+ 01-01-2013,63.81
27
+ 01-02-2013,63.15
28
+ 01-03-2013,62.88
29
+ 01-04-2013,63.3
30
+ 01-05-2013,63.64
31
+ 01-06-2013,63.01
32
+ 01-07-2013,62.92
33
+ 01-08-2013,62.61
34
+ 01-09-2013,62.69
35
+ 01-10-2013,63.29
36
+ 01-11-2013,64.65
37
+ 01-12-2013,66.34
38
+ 01-01-2014,68.09
39
+ 01-02-2014,69.91
40
+ 01-03-2014,70.27
41
+ 01-04-2014,72.99
42
+ 01-05-2014,74.74
43
+ 01-06-2014,75.8
44
+ 01-07-2014,77.74
45
+ 01-08-2014,79.79
46
+ 01-09-2014,85.46
47
+ 01-10-2014,86.74
48
+ 01-11-2014,88.83
49
+ 01-12-2014,88.31
50
+ 01-01-2015,88.05
51
+ 01-02-2015,85.41
52
+ 01-03-2015,81.34
53
+ 01-04-2015,79.12
54
+ 01-05-2015,78.49
55
+ 01-06-2015,76.38
56
+ 01-07-2015,75.01
57
+ 01-08-2015,72.59
58
+ 01-09-2015,73.31
59
+ 01-10-2015,73.89
60
+ 01-11-2015,77.35
61
+ 01-12-2015,78.5
62
+ 01-01-2016,77.95
63
+ 01-02-2016,76.67
64
+ 01-03-2016,75.75
65
+ 01-04-2016,76.16
66
+ 01-05-2016,77.85
67
+ 01-06-2016,77.9
68
+ 01-07-2016,77.43
69
+ 01-08-2016,76.19
70
+ 01-09-2016,76.49
71
+ 01-10-2016,79.15
72
+ 01-11-2016,83.92
73
+ 01-12-2016,91.29
74
+ 01-01-2017,96.09
75
+ 01-02-2017,95.8
76
+ 01-03-2017,85.58
77
+ 01-04-2017,87.81
78
+ 01-05-2017,90.29
79
+ 01-06-2017,95.48
80
+ 01-07-2017,96.01
81
+ 01-08-2017,95.76
82
+ 01-09-2017,98.19
83
+ 01-10-2017,101.84
84
+ 01-11-2017,104.78
85
+ 01-12-2017,103.61
86
+ 01-01-2018,101.72
87
+ 01-02-2018,96.29
88
+ 01-03-2018,94.49
89
+ 01-04-2018,96.13
90
+ 01-05-2018,100.09
91
+ 01-06-2018,97.27
92
+ 01-07-2018,94.48
93
+ 01-08-2018,92.09
94
+ 01-09-2018,91.46
95
+ 01-10-2018,91.97
96
+ 01-11-2018,89.27
97
+ 01-12-2018,89.9
98
+ 01-01-2019,93
99
+ 01-02-2019,91.33
100
+ 01-03-2019,91.36
101
+ 01-04-2019,88.48
102
+ 01-05-2019,90.15
103
+ 01-06-2019,88.56
104
+ 01-07-2019,87.99
105
+ 01-08-2019,89.06
106
+ 01-09-2019,92.08
107
+ 01-10-2019,96.74
108
+ 01-11-2019,99.21
109
+ 01-12-2019,103.29
110
+ 01-01-2020,94.66
111
+ 01-02-2020,98
112
+ 01-03-2020,98
113
+ 01-05-2020,96
114
+ 01-06-2020,100.19
115
+ 01-07-2020,98.97
116
+ 01-08-2020,99.16
117
+ 01-09-2020,99.85
118
+ 01-01-2021,110.93
119
+ 01-02-2021,107.15
120
+ 01-03-2021,108.65
121
+ 01-04-2021,113.84
122
+ 01-05-2021,117.56
123
+ 01-06-2021,127.5
124
+ 01-07-2021,121.77
125
+ 01-08-2021,119.95
126
+ 01-09-2021,110.22
127
+ 01-10-2021,124.68
128
+ 01-11-2021,139.03
129
+ 01-12-2021,138.5
130
+ 01-01-2022,158.14
131
+ 01-02-2022,161.16
132
+ 01-03-2022,173.79
133
+ 01-04-2022,211.24
134
+ 01-05-2022,217.29
135
+ 01-06-2022,247.14
136
+ 01-07-2022,250.07
137
+ 01-08-2022,239.24
138
+ 01-09-2022,228.44
139
+ 01-10-2022,224.78
140
+ 01-11-2022,222.28
141
+ 01-12-2022,218.2
content/turmeric_price_6_months_with_dates.csv ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Date,Week,Price
2
+ 07-04-2024,Week 1,100
3
+ 14-04-2024,Week 2,105
4
+ 21-04-2024,Week 3,110
5
+ 28-04-2024,Week 4,115
6
+ 05-05-2024,Week 5,120
7
+ 12-05-2024,Week 6,115
8
+ 19-05-2024,Week 7,125
9
+ 26-05-2024,Week 8,130
10
+ 02-06-2024,Week 9,135
11
+ 09-06-2024,Week 10,130
12
+ 16-06-2024,Week 11,140
13
+ 23-06-2024,Week 12,145
14
+ 30-06-2024,Week 13,150
15
+ 07-07-2024,Week 14,145
16
+ 14-07-2024,Week 15,140
17
+ 21-07-2024,Week 16,135
18
+ 28-07-2024,Week 17,130
19
+ 04-08-2024,Week 18,125
20
+ 11-08-2024,Week 19,120
21
+ 18-08-2024,Week 20,115
22
+ 25-08-2024,Week 21,110
23
+ 01-09-2024,Week 22,105
24
+ 08-09-2024,Week 23,100
25
+ 15-09-2024,Week 24,110
26
+ 22-09-2024,Week 25,120
27
+ 29-09-2024,Week 26,130
requirements.txt ADDED
Binary file (168 Bytes). View file