File size: 7,982 Bytes
0124d05
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# import os
# import sys

# sys.path.append(os.path.join(os.path.dirname(__file__), "src"))

# import tempfile
# from pathlib import Path
# import base64
# import subprocess
# import json
# import gradio as gr
# import requests
# from src.custom_main import generate_diagram_demo

# # Import your project's modules here
# # from diagram_generator import generate_diagram
# # from paper_processor import process_paper

# def process_pdf(pdf_file) -> str:
#     """Extract text from PDF file using local API service"""
#     print(f"====> Processing PDF: {pdf_file.name}")
#     try:
#         with open(pdf_file.name, "rb") as f:
#             files = {"file": (pdf_file.name, f, "application/pdf")}
#             response = requests.post(
#                 "https://amusing-presently-chow.ngrok-free.app/parse-pdf",
#                 files=files
#             )
#         # Call local API service to process PDF
#         # response = requests.post(
#         #     "http://amusing-presently-chow.ngrok-free.app/parse-pdf",
#         #     json={"pdf_path": pdf_file}
#         # )
        
#         # Check if the request was successful
#         response.raise_for_status()
        
#         # Parse the JSON response
#         output = response.json()
#         return output
#     except requests.RequestException as e:
#         print(f"Error calling PDF processing API: {e}")
#         return f"Error calling PDF processing API: {str(e)}"
#     except json.JSONDecodeError as e:
#         print(f"Error parsing API response: {e}")
#         return f"Error parsing API response: {response.text}"
#     except Exception as e:
#         print(f"Unexpected error: {e}")
#         return f"Unexpected error: {str(e)}"

# def encode_image(image_path: str) -> str:
#     """Encode image to base64 string"""
#     with open(image_path, "rb") as image_file:
#         return base64.b64encode(image_file.read()).decode('utf-8')

# def create_demo():
#     """Create and launch the Gradio demo interface"""
#     with gr.Blocks(title="SCISKETCH Demo") as demo:
#         gr.Markdown("SCISKETCH Demo")
#         gr.Markdown("Upload a PDF, provide a caption, and optionally upload images to generate a diagram.")
        
#         # State variable to store PDF processing result
#         pdf_text_state = gr.State("")
        
#         with gr.Row():
#             with gr.Column(scale=1):
#                 pdf_input = gr.File(label="Upload PDF", file_types=[".pdf"])
#                 process_pdf_btn = gr.Button("Process PDF", variant="secondary")
#                 caption_input = gr.Textbox(label="Caption", placeholder="Enter a caption for the diagram...")
#                 image_input = gr.File(label="Upload Images (Optional)", file_types=[".png", ".jpg", ".jpeg"], file_count="multiple")
#                 submit_btn = gr.Button("Generate Diagram", variant="primary")
            
#             with gr.Column(scale=1):
#                 pdf_text_display = gr.Textbox(label="PDF Processing Result", lines=10)
#                 output_display = gr.Textbox(label="Final Result", lines=20)
        
#         # Process PDF button handler
#         def process_pdf_handler(pdf_file):
#             if pdf_file is None:
#                 return "No PDF file uploaded", ""

#             pdf_text = process_pdf(pdf_file)
            
#             # Format the dictionary output for better display
#             if isinstance(pdf_text, dict):
#                 formatted_output = "## Paper Information\n\n"
                
#                 # Display title and authors if available
#                 if "title" in pdf_text and pdf_text["title"]:
#                     formatted_output += f"**Title:** {pdf_text['title']}\n\n"
                
#                 if "authors" in pdf_text and pdf_text["authors"]:
#                     formatted_output += f"**Authors:** {pdf_text['authors']}\n\n"
                    
#                 if "pub_date" in pdf_text and pdf_text["pub_date"]:
#                     formatted_output += f"**Publication Date:** {pdf_text['pub_date']}\n\n"
                    
#                 # Display abstract if available
#                 if "abstract" in pdf_text and pdf_text["abstract"]:
#                     formatted_output += f"**Abstract:**\n{pdf_text['abstract']}\n\n"
                    
#                 # Display section count if available
#                 if "sections" in pdf_text and isinstance(pdf_text["sections"], list):
#                     formatted_output += f"**Sections:** {len(pdf_text['sections'])}\n\n"
                    
#                     # Display section headings
#                     formatted_output += "**Section Headings:**\n"
#                     for i, section in enumerate(pdf_text["sections"]):
#                         if "heading" in section and section["heading"]:
#                             formatted_output += f"{i+1}. {section['heading']}\n"
                    
#                 # Display reference count if available
#                 if "references" in pdf_text and isinstance(pdf_text["references"], list):
#                     formatted_output += f"\n**References:** {len(pdf_text['references'])}\n"
                    
#                 # Keep the raw JSON for the state
#                 return formatted_output, pdf_text
#             else:
#                 # If it's not a dictionary, return as is
#                 return str(pdf_text), pdf_text
        
#         process_pdf_btn.click(
#             fn=process_pdf_handler,
#             inputs=[pdf_input],
#             outputs=[pdf_text_display, pdf_text_state]
#         )
        
#         # Generate diagram button handler
#         def analyze_with_pdf_text(pdf_file, pdf_text, caption, image_files):
#             print(f"Analyzing with PDF_file {pdf_file}, caption {caption}, image_files {image_files}")
#             result = generate_diagram_demo(pdf_text, caption, image_files)
            
#             # # Use the processed PDF text
#             # if pdf_text:
#             #     result += f"Using processed PDF text ({len(pdf_text)} characters).\n\n"
#             # elif pdf_file is not None:
#             #     # Process PDF if not already processed
#             #     pdf_text = process_pdf(pdf_file.name)
#             #     result += f"Extracted {len(pdf_text)} characters from PDF.\n\n"
            
#             # Process caption
#             # if caption:
#             #     result += f"Caption: {caption}\n\n"
            
#             # Process images if provided
#             # if image_files:
#             #     result += f"Processed {len(image_files)} images:\n"
#             #     for i, img in enumerate(image_files):
#             #         result += f"- Image {i+1}: {Path(img.name).name}\n"
            
#             # Here you would call your actual diagram generation code
#             # result = generate_diagram(pdf_text, caption, image_files)
            
#             # For demo purposes, return a placeholder
#             # result += "\n\nDiagram generation would happen here based on the inputs."
            
#             return result
        
#         submit_btn.click(
#             fn=analyze_with_pdf_text,
#             inputs=[pdf_input, pdf_text_state, caption_input, image_input],
#             outputs=output_display
#         )
    
#     return demo

# if __name__ == "__main__":
#     demo = create_demo()
#     demo.launch(server_port=7860)

import gradio as gr

def show_link():
    return """
    <div style="text-align: center; font-family: sans-serif; padding: 40px;">
        <h2>This app has moved.</h2>
        <p>Please click the link below to visit the new version:</p>
        <a href="https://amusing-presently-chow.ngrok-free.app/" target="_blank" style="font-size: 18px; color: #1f6feb;">
            πŸ‘‰ Go to the new app
        </a>
    </div>
    """

demo = gr.Interface(fn=show_link, inputs=[], outputs=gr.HTML())

demo.launch()