import gradio as gr import requests import pandas as pd import ast import boto3 import re import time df= pd.DataFrame() def _connect(): ''' Creates and returns the s3 connection by passing the access key and secret key to boto3.client ''' s3 = boto3.client("s3",aws_access_key_id='AKIA2BAL5ERM4EL4HRAE',aws_secret_access_key='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') return s3 def _upload(s3, tmp_filepath, s3_filepath, acl="public-read", content_type=None): ''' This function uploads the files to specified bucket in s3 and returns the file url ''' S3_LOCATION = 'https://{}.s3.ap-south-1.amazonaws.com/'.format('edwisely-academic-materials-v2') _content_type = content_type try: with open(tmp_filepath, 'rb') as data: s3.upload_fileobj(data, 'edwisely-academic-materials-v2', s3_filepath, ExtraArgs={ "ACL": acl, "ContentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }) return "{}{}".format(S3_LOCATION, s3_filepath) except Exception as e: print("Something Happened: ", e) raise def upload_file(tmp_filepath, faculty_name): s3_obj = _connect() s3_filepath = "{}/{}/{}.xlsx".format('q_gen', 'test',int(time.time())) s3_uploaded_path = _upload(s3_obj, tmp_filepath, s3_filepath) return s3_uploaded_path def q_gen(topics_list, count, difficulty): url = "https://d5cdtgvt04.execute-api.ap-south-1.amazonaws.com/test/q_gen" # params = { # "grand_topic_ids": "16595,898,746", # "topic_ids": "59559,59564,59565,59563", # "sub_topic_ids": "54345,31152,4011", # "count":"10", # "difficulty":"8" # } # params = { # "grand_topic_ids": "D04B01GT02,D07B03GT03,D12B190GT12", # "topic_ids": "D13B10GT06T03,D13B10GT07T02,D13B10GT07T03,D13B10GT07T04", # "sub_topic_ids": "D04B01GT04T02ST01,D03B29GT01T02ST010122,D12B190GT21T01ST02", # "count":"10", # "difficulty":"8" # } topics_list = topics_list.split(",") grand_topics, topics, sub_topics = "","","" for i in topics_list: if len(i.split("T")) == 2: temp = i.strip() if grand_topics != "": grand_topics = grand_topics+","+temp else: grand_topics = i elif len(i.split("T")) == 3: temp = i.strip() if topics != "": topics = topics+","+temp else: topics = temp elif len(i.split("T")) == 4: temp = i.strip() if sub_topics != "": sub_topics = sub_topics+","+temp else: sub_topics = temp params = { "grand_topic_ids": grand_topics, "topic_ids": topics, "sub_topic_ids": sub_topics, "count":count, "difficulty":difficulty, "test_id":1, "faculty_id":1 } df = pd.DataFrame() path = "" try: response = requests.get(url, params=params) response.raise_for_status() # Raise an exception if the request was not successful # Access the response content content = response.text df = pd.DataFrame(ast.literal_eval(content)) if df.columns[0] == "Not enough questions": return "Not enough questions", df options_df = pd.DataFrame(df['questions_options']) columns_shape = pd.DataFrame(df['questions_options'].tolist()).shape[1] for i in range(columns_shape): options_df[f"option_{i+1}"] = pd.DataFrame(df['questions_options'].tolist())[i].apply(pd.Series)['name'] # df =df[['name', 'media','blooms_level', 'type_name', 'type_code']] df['com'] = range(df.shape[0]) options_df['com'] = range(df.shape[0]) df = pd.merge(df, options_df, on=['com']) df = df[['id','name', 'media','blooms_level','type_name', 'type_code', 'option_1', 'option_2', 'option_3', 'option_4']] df.to_excel('temp.xlsx') file_path = "temp.xlsx" path = upload_file(file_path, 'krushna') except requests.exceptions.RequestException as e: print("Error occurred:", e) return path, df demo = gr.Interface(fn=q_gen, inputs=[ gr.Textbox(value="D04B01GT02,D12B190GT12, D13B10GT06T03,D13B10GT07T02, D12B190GT21T01ST02", label = "topics"), gr.Textbox(value="10", label = "Count"), gr.Textbox(value="8", label = "Difficulty")], outputs=["text","dataframe"]) demo.launch()