Spaces:
Running
Running
Upload 8 files
Browse files- .gitattributes +1 -0
- images.csv +3 -0
- static/style.css +51 -0
- templates/all_designers.html +56 -0
- templates/designer.html +25 -0
- templates/gallery.html +55 -0
- templates/home.html +81 -0
- templates/random_designers.html +56 -0
- templates/random_shows.html +56 -0
.gitattributes
CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
images.csv filter=lfs diff=lfs merge=lfs -text
|
images.csv
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:8f9f6d2a352b57960d606d5c46e66a6b0a81a1888db940b338e199f5b35345ae
|
3 |
+
size 133731747
|
static/style.css
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
body {
|
2 |
+
font-family: Arial, sans-serif;
|
3 |
+
margin: 20px;
|
4 |
+
background-color: #fdfdfd;
|
5 |
+
color: #333;
|
6 |
+
}
|
7 |
+
|
8 |
+
h1 {
|
9 |
+
text-align: center;
|
10 |
+
margin-bottom: 10px;
|
11 |
+
font-size: 28px;
|
12 |
+
}
|
13 |
+
|
14 |
+
.grid {
|
15 |
+
display: grid;
|
16 |
+
grid-template-columns: repeat(4, 1fr);
|
17 |
+
gap: 15px;
|
18 |
+
padding: 0 20px;
|
19 |
+
}
|
20 |
+
|
21 |
+
.grid img {
|
22 |
+
width: 100%;
|
23 |
+
height: auto;
|
24 |
+
border-radius: 8px;
|
25 |
+
transition: transform 0.2s ease;
|
26 |
+
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
27 |
+
}
|
28 |
+
|
29 |
+
.grid img:hover {
|
30 |
+
transform: scale(1.03);
|
31 |
+
box-shadow: 0 4px 12px rgba(0,0,0,0.2);
|
32 |
+
}
|
33 |
+
|
34 |
+
.modal {
|
35 |
+
display: none;
|
36 |
+
position: fixed;
|
37 |
+
z-index: 999;
|
38 |
+
left: 0;
|
39 |
+
top: 0;
|
40 |
+
width: 100%;
|
41 |
+
height: 100%;
|
42 |
+
background-color: rgba(0,0,0,0.9);
|
43 |
+
}
|
44 |
+
|
45 |
+
.modal img {
|
46 |
+
display: block;
|
47 |
+
max-width: 90%;
|
48 |
+
max-height: 90%;
|
49 |
+
margin: 5vh auto 0;
|
50 |
+
border-radius: 10px;
|
51 |
+
}
|
templates/all_designers.html
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<title>All Designers</title>
|
5 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
6 |
+
<style>
|
7 |
+
body { font-family: Arial, sans-serif; margin: 60px auto; }
|
8 |
+
h1 { text-align: center; margin-bottom: 30px; }
|
9 |
+
.grid {
|
10 |
+
display: grid;
|
11 |
+
grid-template-columns: repeat(4, 1fr);
|
12 |
+
gap: 20px;
|
13 |
+
padding: 0 20px;
|
14 |
+
}
|
15 |
+
.card {
|
16 |
+
text-align: center;
|
17 |
+
cursor: pointer;
|
18 |
+
}
|
19 |
+
.card img {
|
20 |
+
width: 100%;
|
21 |
+
border-radius: 8px;
|
22 |
+
box-shadow: 0 2px 6px rgba(0,0,0,0.1);
|
23 |
+
}
|
24 |
+
.card span {
|
25 |
+
display: block;
|
26 |
+
margin-top: 8px;
|
27 |
+
font-weight: 600;
|
28 |
+
font-size: 14px;
|
29 |
+
}
|
30 |
+
.home-btn {
|
31 |
+
position: fixed;
|
32 |
+
top: 20px;
|
33 |
+
left: 20px;
|
34 |
+
background: black;
|
35 |
+
color: white;
|
36 |
+
padding: 8px 14px;
|
37 |
+
border-radius: 6px;
|
38 |
+
text-decoration: none;
|
39 |
+
font-weight: bold;
|
40 |
+
z-index: 1000;
|
41 |
+
}
|
42 |
+
</style>
|
43 |
+
</head>
|
44 |
+
<body>
|
45 |
+
<a class="home-btn" href="/">Home</a>
|
46 |
+
<h1>All Designers</h1>
|
47 |
+
<div class="grid">
|
48 |
+
{% for card in cards %}
|
49 |
+
<div class="card" onclick="window.location.href='/{{ card.slug }}'">
|
50 |
+
<img src="{{ card.image_url }}">
|
51 |
+
<span>{{ card.name }}</span>
|
52 |
+
</div>
|
53 |
+
{% endfor %}
|
54 |
+
</div>
|
55 |
+
</body>
|
56 |
+
</html>
|
templates/designer.html
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<title>{{ designer }}</title>
|
5 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
6 |
+
<style>
|
7 |
+
.grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 15px; padding: 0 20px; }
|
8 |
+
.card { text-align: center; cursor: pointer; }
|
9 |
+
.card img { width: 100%; border-radius: 8px; }
|
10 |
+
.card span { display: block; margin-top: 8px; font-weight: 500; font-size: 14px; color: #333; }
|
11 |
+
</style>
|
12 |
+
</head>
|
13 |
+
<body>
|
14 |
+
<a href="/" style="position: fixed; top: 20px; left: 20px; background: black; color: white; padding: 8px 14px; border-radius: 6px; text-decoration: none; font-weight: bold; z-index: 1000;">Home</a>
|
15 |
+
<h1>{{ designer }}</h1>
|
16 |
+
<div class="grid">
|
17 |
+
{% for show in show_cards %}
|
18 |
+
<div class="card" onclick="window.location.href='/{{ designer|replace(' ', '-') }}/{{ show.slug }}'">
|
19 |
+
<img src="{{ show.image_url }}">
|
20 |
+
<span>{{ show.name }}</span>
|
21 |
+
</div>
|
22 |
+
{% endfor %}
|
23 |
+
</div>
|
24 |
+
</body>
|
25 |
+
</html>
|
templates/gallery.html
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<title>{{ designer }} - {{ show }}</title>
|
5 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
6 |
+
<style>
|
7 |
+
.grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
|
8 |
+
.grid img { width: 100%; cursor: pointer; }
|
9 |
+
.modal { display: none; position: fixed; z-index: 10; left: 0; top: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.8); }
|
10 |
+
.modal img { margin: auto; display: block; max-width: 90%; max-height: 90%; margin-top: 5vh; }
|
11 |
+
</style>
|
12 |
+
</head>
|
13 |
+
<body>
|
14 |
+
<a href="/" style="position: fixed; top: 20px; left: 20px; background: black; color: white; padding: 8px 14px; border-radius: 6px; text-decoration: none; font-weight: bold; z-index: 1000;">Home</a>
|
15 |
+
<h1>{{ designer }} - {{ show }}</h1>
|
16 |
+
<div class="grid">
|
17 |
+
{% for img in images %}
|
18 |
+
<img src="{{ img }}" onclick="openModal({{ loop.index0 }})">
|
19 |
+
{% endfor %}
|
20 |
+
</div>
|
21 |
+
|
22 |
+
<div id="modal" class="modal" onclick="closeModal()">
|
23 |
+
<img id="modalImage">
|
24 |
+
</div>
|
25 |
+
|
26 |
+
|
27 |
+
<script>
|
28 |
+
const images = {{ images | tojson }};
|
29 |
+
let modal = document.getElementById("modal");
|
30 |
+
let modalImg = document.getElementById("modalImage");
|
31 |
+
|
32 |
+
function openModal(index) {
|
33 |
+
modal.style.display = "block";
|
34 |
+
modalImg.src = images[index];
|
35 |
+
}
|
36 |
+
|
37 |
+
function closeModal() {
|
38 |
+
modal.style.display = "none";
|
39 |
+
}
|
40 |
+
|
41 |
+
document.addEventListener("keydown", function(e) {
|
42 |
+
if (modal.style.display === "block") {
|
43 |
+
let currentIndex = images.indexOf(modalImg.src);
|
44 |
+
if (e.key === "ArrowRight") {
|
45 |
+
modalImg.src = images[(currentIndex + 1) % images.length];
|
46 |
+
} else if (e.key === "ArrowLeft") {
|
47 |
+
modalImg.src = images[(currentIndex - 1 + images.length) % images.length];
|
48 |
+
} else if (e.key === "Escape") {
|
49 |
+
closeModal();
|
50 |
+
}
|
51 |
+
}
|
52 |
+
});
|
53 |
+
</script>
|
54 |
+
</body>
|
55 |
+
</html>
|
templates/home.html
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<title>Fashion Library</title>
|
5 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
6 |
+
<style>
|
7 |
+
body { text-align: center; margin: 60px auto; font-family: Arial; }
|
8 |
+
h1 { font-size: 36px; margin-bottom: 20px; }
|
9 |
+
form { margin-bottom: 20px; }
|
10 |
+
input[type="text"] {
|
11 |
+
padding: 10px;
|
12 |
+
width: 300px;
|
13 |
+
font-size: 16px;
|
14 |
+
border-radius: 6px;
|
15 |
+
border: 1px solid #ccc;
|
16 |
+
}
|
17 |
+
button {
|
18 |
+
padding: 10px 20px;
|
19 |
+
font-size: 16px;
|
20 |
+
border: none;
|
21 |
+
background-color: black;
|
22 |
+
color: white;
|
23 |
+
border-radius: 6px;
|
24 |
+
cursor: pointer;
|
25 |
+
margin-left: 10px;
|
26 |
+
}
|
27 |
+
.suggestions { margin-top: 20px; }
|
28 |
+
.suggestions p { font-size: 18px; }
|
29 |
+
.suggestions ul { list-style: none; padding: 0; }
|
30 |
+
.suggestions li { margin: 5px 0; }
|
31 |
+
</style>
|
32 |
+
</head>
|
33 |
+
<body>
|
34 |
+
<h1>Fashion Library</h1>
|
35 |
+
<p style="font-style: italic; color: #666;">1,749 Designers | 25,876 Collections | 934,735 Images</p>
|
36 |
+
<form method="GET">
|
37 |
+
<input type="text" name="designer" placeholder="Search for a designer..." value="{{ query }}">
|
38 |
+
<button type="submit">Search</button>
|
39 |
+
</form>
|
40 |
+
|
41 |
+
{% if suggestions %}
|
42 |
+
<div class="suggestions">
|
43 |
+
<p>No exact match. Did you mean:</p>
|
44 |
+
<ul>
|
45 |
+
{% for name in suggestions %}
|
46 |
+
<li><a href="/{{ name | replace(' ', '-') }}">{{ name }}</a></li>
|
47 |
+
{% endfor %}
|
48 |
+
</ul>
|
49 |
+
</div>
|
50 |
+
{% endif %}
|
51 |
+
|
52 |
+
|
53 |
+
<div style="margin-top: 40px; margin-bottom: 40px;">
|
54 |
+
<a href="/all-designers" style="background: black; color: white; padding: 10px 20px; border-radius: 6px; text-decoration: none; font-size: 16px; font-weight: bold; margin-right: 10px;">All Designers</a>
|
55 |
+
<a href="/random-designers" style="background: black; color: white; padding: 10px 20px; border-radius: 6px; text-decoration: none; font-size: 16px; font-weight: bold; margin-right: 10px;">Explore Random Designers</a>
|
56 |
+
<a href="/random-shows" style="background: black; color: white; padding: 10px 20px; border-radius: 6px; text-decoration: none; font-size: 16px; font-weight: bold;">Explore Random Shows</a>
|
57 |
+
</div>
|
58 |
+
|
59 |
+
|
60 |
+
<div class="grid" style="padding: 0 20px; margin-bottom: 40px;">
|
61 |
+
{% for d in designer_cards %}
|
62 |
+
<div class="card" onclick="window.location.href='/{{ d.slug }}'" style="cursor:pointer; text-align:center;">
|
63 |
+
<img src="{{ d.image_url }}" style="width:100%; border-radius:8px;">
|
64 |
+
<div style="margin-top: 8px; font-weight: 500;">{{ d.name }}</div>
|
65 |
+
</div>
|
66 |
+
{% endfor %}
|
67 |
+
</div>
|
68 |
+
|
69 |
+
<div class="grid" style="padding: 0 20px;">
|
70 |
+
{% for show in show_cards %}
|
71 |
+
<div class="card" onclick="window.location.href='{{ show.link }}'" style="cursor:pointer; text-align:center;">
|
72 |
+
<img src="{{ show.image_url }}" style="width:100%; border-radius:8px;">
|
73 |
+
<div style="margin-top: 8px; font-weight: 500;">{{ show.designer }}<br><span style="font-weight: 400;">{{ show.show }}</span></div>
|
74 |
+
</div>
|
75 |
+
{% endfor %}
|
76 |
+
</div>
|
77 |
+
|
78 |
+
|
79 |
+
|
80 |
+
</body>
|
81 |
+
</html>
|
templates/random_designers.html
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<title>Random Designers</title>
|
5 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
6 |
+
<style>
|
7 |
+
body { font-family: Arial, sans-serif; margin: 60px auto; }
|
8 |
+
h1 { text-align: center; margin-bottom: 30px; }
|
9 |
+
.grid {
|
10 |
+
display: grid;
|
11 |
+
grid-template-columns: repeat(4, 1fr);
|
12 |
+
gap: 20px;
|
13 |
+
padding: 0 20px;
|
14 |
+
}
|
15 |
+
.card {
|
16 |
+
text-align: center;
|
17 |
+
cursor: pointer;
|
18 |
+
}
|
19 |
+
.card img {
|
20 |
+
width: 100%;
|
21 |
+
border-radius: 8px;
|
22 |
+
box-shadow: 0 2px 6px rgba(0,0,0,0.1);
|
23 |
+
}
|
24 |
+
.card span {
|
25 |
+
display: block;
|
26 |
+
margin-top: 8px;
|
27 |
+
font-weight: 500;
|
28 |
+
font-size: 14px;
|
29 |
+
}
|
30 |
+
.home-btn {
|
31 |
+
position: fixed;
|
32 |
+
top: 20px;
|
33 |
+
left: 20px;
|
34 |
+
background: black;
|
35 |
+
color: white;
|
36 |
+
padding: 8px 14px;
|
37 |
+
border-radius: 6px;
|
38 |
+
text-decoration: none;
|
39 |
+
font-weight: bold;
|
40 |
+
z-index: 1000;
|
41 |
+
}
|
42 |
+
</style>
|
43 |
+
</head>
|
44 |
+
<body>
|
45 |
+
<a class="home-btn" href="/">Home</a>
|
46 |
+
<h1>Random Designers</h1>
|
47 |
+
<div class="grid">
|
48 |
+
{% for d in designer_cards %}
|
49 |
+
<div class="card" onclick="window.location.href='/{{ d.slug }}'">
|
50 |
+
<img src="{{ d.image_url }}">
|
51 |
+
<span>{{ d.name }}</span>
|
52 |
+
</div>
|
53 |
+
{% endfor %}
|
54 |
+
</div>
|
55 |
+
</body>
|
56 |
+
</html>
|
templates/random_shows.html
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<title>Random Shows</title>
|
5 |
+
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
6 |
+
<style>
|
7 |
+
body { font-family: Arial, sans-serif; margin: 60px auto; }
|
8 |
+
h1 { text-align: center; margin-bottom: 30px; }
|
9 |
+
.grid {
|
10 |
+
display: grid;
|
11 |
+
grid-template-columns: repeat(4, 1fr);
|
12 |
+
gap: 20px;
|
13 |
+
padding: 0 20px;
|
14 |
+
}
|
15 |
+
.card {
|
16 |
+
text-align: center;
|
17 |
+
cursor: pointer;
|
18 |
+
}
|
19 |
+
.card img {
|
20 |
+
width: 100%;
|
21 |
+
border-radius: 8px;
|
22 |
+
box-shadow: 0 2px 6px rgba(0,0,0,0.1);
|
23 |
+
}
|
24 |
+
.card span {
|
25 |
+
display: block;
|
26 |
+
margin-top: 8px;
|
27 |
+
font-weight: 500;
|
28 |
+
font-size: 14px;
|
29 |
+
}
|
30 |
+
.home-btn {
|
31 |
+
position: fixed;
|
32 |
+
top: 20px;
|
33 |
+
left: 20px;
|
34 |
+
background: black;
|
35 |
+
color: white;
|
36 |
+
padding: 8px 14px;
|
37 |
+
border-radius: 6px;
|
38 |
+
text-decoration: none;
|
39 |
+
font-weight: bold;
|
40 |
+
z-index: 1000;
|
41 |
+
}
|
42 |
+
</style>
|
43 |
+
</head>
|
44 |
+
<body>
|
45 |
+
<a class="home-btn" href="/">Home</a>
|
46 |
+
<h1>Random Shows</h1>
|
47 |
+
<div class="grid">
|
48 |
+
{% for show in show_cards %}
|
49 |
+
<div class="card" onclick="window.location.href='{{ show.link }}'">
|
50 |
+
<img src="{{ show.image_url }}">
|
51 |
+
<span>{{ show.designer }}<br>{{ show.show }}</span>
|
52 |
+
</div>
|
53 |
+
{% endfor %}
|
54 |
+
</div>
|
55 |
+
</body>
|
56 |
+
</html>
|