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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -82
app.py CHANGED
@@ -1,4 +1,4 @@
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,6 +30,14 @@ HUGGINGFACE_URLS = [
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,83 +66,6 @@ def validate_token(token):
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,15 +117,16 @@ def get_urls():
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():
193
  continue
194
 
195
  results.append({
196
  'url': url,
197
- 'frameUrl': f'/frame/{idx}',
198
  'title': title
199
  })
200
 
@@ -646,7 +578,7 @@ if __name__ == '__main__':
646
  }
647
 
648
  urls.forEach(item => {
649
- const { url, frameUrl, title } = item;
650
 
651
  // Create grid item
652
  const gridItem = document.createElement('div');
@@ -676,7 +608,7 @@ if __name__ == '__main__':
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', '');
 
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
  "https://huggingface.co/spaces/openfree/Article-Generator",
31
  ]
32
 
33
+ # Transform Huggingface URL to direct space URL
34
+ def transform_url(url):
35
+ prefix = "https://huggingface.co/spaces/"
36
+ if url.startswith(prefix):
37
+ rest = url[len(prefix):]
38
+ return f"https://{rest.replace('/', '-')}.hf.space"
39
+ return url
40
+
41
  # Extract title from the last part of URL
42
  def extract_title(url):
43
  parts = url.split("/")
 
66
 
67
  return False, None
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  # Homepage route
70
  @app.route('/')
71
  def home():
 
117
  search_query = request.args.get('search', '').lower()
118
 
119
  results = []
120
+ for url in HUGGINGFACE_URLS:
121
  title = extract_title(url)
122
+ transformed_url = transform_url(url)
123
 
124
  if search_query and search_query not in url.lower() and search_query not in title.lower():
125
  continue
126
 
127
  results.append({
128
  'url': url,
129
+ 'embedUrl': transformed_url,
130
  'title': title
131
  })
132
 
 
578
  }
579
 
580
  urls.forEach(item => {
581
+ const { url, embedUrl, title } = item;
582
 
583
  // Create grid item
584
  const gridItem = document.createElement('div');
 
608
 
609
  // Create iframe to display the content
610
  const iframe = document.createElement('iframe');
611
+ iframe.src = embedUrl;
612
  iframe.title = title;
613
  iframe.allow = 'accelerometer; camera; encrypted-media; geolocation; gyroscope; microphone; midi';
614
  iframe.setAttribute('allowfullscreen', '');