seawolf2357 commited on
Commit
045c5a5
·
verified ·
1 Parent(s): 98d3d46

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -14
app.py CHANGED
@@ -1,4 +1,4 @@
1
- from flask import Flask, render_template, request, redirect, url_for, jsonify, session
2
  import requests
3
  import os
4
  from datetime import timedelta
@@ -30,15 +30,6 @@ HUGGINGFACE_URLS = [
30
  "https://huggingface.co/spaces/openfree/Article-Generator",
31
  ]
32
 
33
- # Get direct iframe URL for Huggingface spaces
34
- def get_iframe_url(url):
35
- parts = url.split('/')
36
- if len(parts) >= 6 and parts[3] == 'spaces':
37
- owner = parts[4]
38
- repo = parts[5]
39
- return f"https://{owner}-{repo}.hf.space"
40
- return url
41
-
42
  # Extract title from the last part of URL
43
  def extract_title(url):
44
  parts = url.split("/")
@@ -67,6 +58,83 @@ def validate_token(token):
67
 
68
  return False, None
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  # Homepage route
71
  @app.route('/')
72
  def home():
@@ -118,7 +186,7 @@ def get_urls():
118
  search_query = request.args.get('search', '').lower()
119
 
120
  results = []
121
- for url in HUGGINGFACE_URLS:
122
  title = extract_title(url)
123
 
124
  if search_query and search_query not in url.lower() and search_query not in title.lower():
@@ -126,7 +194,7 @@ def get_urls():
126
 
127
  results.append({
128
  'url': url,
129
- 'iframeUrl': get_iframe_url(url),
130
  'title': title
131
  })
132
 
@@ -578,7 +646,7 @@ if __name__ == '__main__':
578
  }
579
 
580
  urls.forEach(item => {
581
- const { url, iframeUrl, title } = item;
582
 
583
  // Create grid item
584
  const gridItem = document.createElement('div');
@@ -608,7 +676,7 @@ if __name__ == '__main__':
608
 
609
  // Create iframe to display the content
610
  const iframe = document.createElement('iframe');
611
- iframe.src = iframeUrl;
612
  iframe.title = title;
613
  iframe.allow = 'accelerometer; camera; encrypted-media; geolocation; gyroscope; microphone; midi';
614
  iframe.setAttribute('allowfullscreen', '');
 
1
+ from flask import Flask, render_template, request, redirect, url_for, jsonify, session, Response
2
  import requests
3
  import os
4
  from datetime import timedelta
 
30
  "https://huggingface.co/spaces/openfree/Article-Generator",
31
  ]
32
 
 
 
 
 
 
 
 
 
 
33
  # Extract title from the last part of URL
34
  def extract_title(url):
35
  parts = url.split("/")
 
58
 
59
  return False, None
60
 
61
+ # Create a redirect page for each URL
62
+ def create_frame_page(url, title):
63
+ return f'''
64
+ <!DOCTYPE html>
65
+ <html lang="ko">
66
+ <head>
67
+ <meta charset="UTF-8">
68
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
69
+ <title>{title}</title>
70
+ <style>
71
+ body, html {{
72
+ margin: 0;
73
+ padding: 0;
74
+ height: 100%;
75
+ overflow: hidden;
76
+ }}
77
+ .container {{
78
+ position: absolute;
79
+ width: 100%;
80
+ height: 100%;
81
+ display: flex;
82
+ flex-direction: column;
83
+ }}
84
+ .header {{
85
+ background: #f5f5f5;
86
+ padding: 10px;
87
+ display: flex;
88
+ justify-content: space-between;
89
+ align-items: center;
90
+ border-bottom: 1px solid #ddd;
91
+ }}
92
+ .header h3 {{
93
+ margin: 0;
94
+ font-size: 16px;
95
+ }}
96
+ .header a {{
97
+ color: #4CAF50;
98
+ text-decoration: none;
99
+ }}
100
+ .frame-container {{
101
+ flex-grow: 1;
102
+ position: relative;
103
+ }}
104
+ iframe {{
105
+ position: absolute;
106
+ top: 0;
107
+ left: 0;
108
+ width: 100%;
109
+ height: 100%;
110
+ border: none;
111
+ }}
112
+ </style>
113
+ </head>
114
+ <body>
115
+ <div class="container">
116
+ <div class="header">
117
+ <h3>{title}</h3>
118
+ <a href="{url}" target="_blank">새 창에서 열기</a>
119
+ </div>
120
+ <div class="frame-container">
121
+ <iframe src="{url}" allowfullscreen="true" frameborder="0" allow="accelerometer; camera; encrypted-media; geolocation; gyroscope; microphone; midi"></iframe>
122
+ </div>
123
+ </div>
124
+ </body>
125
+ </html>
126
+ '''
127
+
128
+ # Route to serve a framed page
129
+ @app.route('/frame/<int:url_id>')
130
+ def frame(url_id):
131
+ try:
132
+ url = HUGGINGFACE_URLS[url_id]
133
+ title = extract_title(url)
134
+ return create_frame_page(url, title)
135
+ except IndexError:
136
+ return "URL not found", 404
137
+
138
  # Homepage route
139
  @app.route('/')
140
  def home():
 
186
  search_query = request.args.get('search', '').lower()
187
 
188
  results = []
189
+ for idx, url in enumerate(HUGGINGFACE_URLS):
190
  title = extract_title(url)
191
 
192
  if search_query and search_query not in url.lower() and search_query not in title.lower():
 
194
 
195
  results.append({
196
  'url': url,
197
+ 'frameUrl': f'/frame/{idx}',
198
  'title': title
199
  })
200
 
 
646
  }
647
 
648
  urls.forEach(item => {
649
+ const { url, frameUrl, title } = item;
650
 
651
  // Create grid item
652
  const gridItem = document.createElement('div');
 
676
 
677
  // Create iframe to display the content
678
  const iframe = document.createElement('iframe');
679
+ iframe.src = frameUrl;
680
  iframe.title = title;
681
  iframe.allow = 'accelerometer; camera; encrypted-media; geolocation; gyroscope; microphone; midi';
682
  iframe.setAttribute('allowfullscreen', '');