trashchenkov commited on
Commit
5829a54
·
verified ·
1 Parent(s): 8ed04ff

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -17
app.py CHANGED
@@ -1,6 +1,5 @@
1
  import gradio as gr
2
  from pyvis.network import Network
3
- import base64
4
 
5
  def create_knowledge_graph():
6
  # Создаем граф с pyvis
@@ -9,14 +8,14 @@ def create_knowledge_graph():
9
  width="100%",
10
  bgcolor="#222222",
11
  font_color="white",
12
- cdn_resources="in_line" # Все необходимые JS/CSS будут встроены в HTML
13
  )
14
-
15
  # Добавляем узлы (концепции)
16
  nodes = ["Python", "Gradio", "Pyvis", "Data Science", "Machine Learning"]
17
  for node in nodes:
18
  net.add_node(node, label=node)
19
-
20
  # Добавляем ребра (связи между концепциями)
21
  edges = [
22
  ("Python", "Gradio"),
@@ -28,23 +27,38 @@ def create_knowledge_graph():
28
  ]
29
  for source, target in edges:
30
  net.add_edge(source, target)
31
-
32
  # Генерируем HTML-код графа
33
  html_content = net.generate_html(notebook=False)
34
-
35
- # Кодируем HTML в base64 и формируем data URL
36
- html_bytes = html_content.encode("utf-8")
37
- b64_html = base64.b64encode(html_bytes).decode("utf-8")
38
- data_uri = f"data:text/html;base64,{b64_html}"
39
-
40
- # Возвращаем ссылку, которая откроется в новой вкладке
41
- return f'<a href="{data_uri}" target="_blank">Открыть граф в новой вкладке</a>'
 
 
 
 
 
 
42
 
43
  with gr.Blocks() as demo:
44
- gr.Markdown("# Открытие графа в новой вкладке")
 
 
45
  generate_button = gr.Button("Создать граф")
46
- html_out = gr.HTML()
47
 
48
- generate_button.click(fn=create_knowledge_graph, inputs=[], outputs=html_out)
 
 
 
 
 
 
 
 
49
 
50
- demo.launch(inline=True)
 
1
  import gradio as gr
2
  from pyvis.network import Network
 
3
 
4
  def create_knowledge_graph():
5
  # Создаем граф с pyvis
 
8
  width="100%",
9
  bgcolor="#222222",
10
  font_color="white",
11
+ cdn_resources="in_line" # Встраиваем JS/CSS в HTML
12
  )
13
+
14
  # Добавляем узлы (концепции)
15
  nodes = ["Python", "Gradio", "Pyvis", "Data Science", "Machine Learning"]
16
  for node in nodes:
17
  net.add_node(node, label=node)
18
+
19
  # Добавляем ребра (связи между концепциями)
20
  edges = [
21
  ("Python", "Gradio"),
 
27
  ]
28
  for source, target in edges:
29
  net.add_edge(source, target)
30
+
31
  # Генерируем HTML-код графа
32
  html_content = net.generate_html(notebook=False)
33
+
34
+ # Экранируем двойные кавычки для корректной вставки в srcdoc
35
+ html_content_escaped = html_content.replace('"', '&quot;')
36
+
37
+ # Оборачиваем HTML в iframe
38
+ iframe_code = f'''
39
+ <iframe
40
+ srcdoc="{html_content_escaped}"
41
+ width="100%"
42
+ height="600"
43
+ frameborder="0"
44
+ ></iframe>
45
+ '''
46
+ return iframe_code
47
 
48
  with gr.Blocks() as demo:
49
+ gr.Markdown("# Граф Знаний с Pyvis и Gradio (Blocks)")
50
+
51
+ # Кнопка для генерации графа
52
  generate_button = gr.Button("Создать граф")
 
53
 
54
+ # Выводим результат в виде HTML
55
+ graph_html = gr.HTML()
56
+
57
+ # Связываем кнопку с функцией
58
+ generate_button.click(
59
+ fn=create_knowledge_graph,
60
+ inputs=[],
61
+ outputs=graph_html
62
+ )
63
 
64
+ demo.launch()