Ronaldo1111 commited on
Commit
50d2d01
·
verified ·
1 Parent(s): 14e3883

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -22
app.py CHANGED
@@ -184,7 +184,7 @@ popup2_url = "https://huggingface.co/spaces/Ronaldo1111/Sophia/resolve/main/srkl
184
  music1 = "https://huggingface.co/spaces/Ronaldo1111/Sophia/resolve/main/FNG.mp3"
185
  music2 = "https://huggingface.co/spaces/Ronaldo1111/Sophia/resolve/main/PGY.mp3"
186
  bark_sound = "https://huggingface.co/spaces/Ronaldo1111/Sophia/resolve/main/voice.mp3"
187
- # ==== HTML / CSS / JS ====
188
  html_template = '''
189
  <style>
190
  body {
@@ -240,10 +240,13 @@ html_template = '''
240
  }
241
  #gift {
242
  position: fixed;
 
 
243
  width: 60px;
244
  cursor: pointer;
245
  z-index: 9998;
246
  transition: transform 0.5s;
 
247
  }
248
  #popup, #popup2 {
249
  display: none;
@@ -306,6 +309,17 @@ html_template = '''
306
  cursor: pointer;
307
  z-index: 10000;
308
  }
 
 
 
 
 
 
 
 
 
 
 
309
  </style>
310
  <img id="sophia-avatar" src="{avatar_url}" />
311
  <img id="birthday-cake" src="{cake_url}" />
@@ -314,25 +328,24 @@ html_template = '''
314
  <img id="popup2" />
315
  <div id="popup-close">×</div>
316
  <div id="music-toggle">⏸️音乐</div>
 
317
  <div id="balloon"></div>
318
  <audio id="bg-music" autoplay loop>
319
  <source src="{music1}" type="audio/mpeg" />
320
- <source src="{music2}" type="audio/mpeg" />
321
  </audio>
322
  <audio id="bark" src="{bark_sound}"></audio>
323
  <script>
324
- // 背景音乐轮播
325
  const tracks = ["{music1}", "{music2}"];
326
  const audio = document.getElementById("bg-music");
327
  let current = 0;
328
  audio.addEventListener("ended", () => {
329
  current = (current + 1) % tracks.length;
330
- audio.src = tracks[current]; audio.load(); audio.play();
 
 
331
  });
332
 
333
- // 音乐开关
334
- const toggleBtn = document.getElementById("music-toggle");
335
- toggleBtn.addEventListener("click", () => {
336
  if (audio.paused) {
337
  audio.play();
338
  toggleBtn.textContent = "⏸️音乐";
@@ -342,7 +355,13 @@ html_template = '''
342
  }
343
  });
344
 
345
- // 拖拽头像 + 狗叫 + 烟花
 
 
 
 
 
 
346
  const avatar = document.getElementById("sophia-avatar");
347
  const bark = document.getElementById("bark");
348
  avatar.onmousedown = function(e) {
@@ -364,7 +383,6 @@ html_template = '''
364
  setTimeout(() => fw.remove(), 1200);
365
  });
366
 
367
- // 礼物弹窗:srkl.jpg -> 2s 后弹 srkl1.jpg -> 1s 后全部关闭
368
  const gift = document.getElementById("gift");
369
  const popup = document.getElementById("popup");
370
  const popup2 = document.getElementById("popup2");
@@ -378,22 +396,14 @@ html_template = '''
378
  setTimeout(() => {
379
  popup2.src = "{popup2_url}";
380
  popup2.style.display = "block";
381
- popup2.style.position = "fixed";
382
- popup2.style.top = "calc(50% + 180px)";
383
- popup2.style.left = "50%";
384
- popup2.style.transform = "translate(-50%, 0)";
385
- popup2.style.maxWidth = "80vw";
386
- popup2.style.maxHeight = "80vh";
387
- popup2.style.zIndex = "10000";
388
  }, 2000);
389
 
390
  setTimeout(() => {
391
  popup.style.display = "none";
392
  popup2.style.display = "none";
393
  closeBtn.style.display = "none";
394
- }, 3000);
395
  });
396
-
397
  closeBtn.addEventListener("click", () => {
398
  popup.style.display = "none";
399
  popup2.style.display = "none";
@@ -402,7 +412,6 @@ html_template = '''
402
  </script>
403
  '''
404
 
405
- # 插值填充
406
  html_content = html_template.replace("{background_css}", background_css) \
407
  .replace("{avatar_url}", avatar_url) \
408
  .replace("{cake_url}", cake_url) \
@@ -410,9 +419,9 @@ html_content = html_template.replace("{background_css}", background_css) \
410
  .replace("{music2}", music2) \
411
  .replace("{bark_sound}", bark_sound) \
412
  .replace("{gift_url}", gift_url) \
413
- .replace("{popup_url}", popup_url)
 
414
 
415
- # ==== Gradio UI ====
416
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
417
  gr.HTML(html_content)
418
  gr.Markdown("## 🌸 Horse and 7 Agent:欢迎进入豌豆的世界 🌸")
@@ -422,6 +431,5 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
422
  btn = gr.Button("投喂")
423
  btn.click(chat, inputs=[msg, state], outputs=[chatbot, state])
424
  msg.submit(chat, inputs=[msg, state], outputs=[chatbot, state])
425
-
426
  if __name__ == "__main__":
427
  demo.launch()
 
184
  music1 = "https://huggingface.co/spaces/Ronaldo1111/Sophia/resolve/main/FNG.mp3"
185
  music2 = "https://huggingface.co/spaces/Ronaldo1111/Sophia/resolve/main/PGY.mp3"
186
  bark_sound = "https://huggingface.co/spaces/Ronaldo1111/Sophia/resolve/main/voice.mp3"
187
+
188
  html_template = '''
189
  <style>
190
  body {
 
240
  }
241
  #gift {
242
  position: fixed;
243
+ bottom: 100px;
244
+ right: 20px;
245
  width: 60px;
246
  cursor: pointer;
247
  z-index: 9998;
248
  transition: transform 0.5s;
249
+ animation: bounce 1.2s infinite;
250
  }
251
  #popup, #popup2 {
252
  display: none;
 
309
  cursor: pointer;
310
  z-index: 10000;
311
  }
312
+ #next-track {
313
+ position: fixed;
314
+ bottom: 60px;
315
+ left: 20px;
316
+ padding: 8px 12px;
317
+ font-size: 14px;
318
+ background: rgba(255,255,255,0.7);
319
+ border-radius: 8px;
320
+ cursor: pointer;
321
+ z-index: 10000;
322
+ }
323
  </style>
324
  <img id="sophia-avatar" src="{avatar_url}" />
325
  <img id="birthday-cake" src="{cake_url}" />
 
328
  <img id="popup2" />
329
  <div id="popup-close">×</div>
330
  <div id="music-toggle">⏸️音乐</div>
331
+ <div id="next-track">🎵切歌</div>
332
  <div id="balloon"></div>
333
  <audio id="bg-music" autoplay loop>
334
  <source src="{music1}" type="audio/mpeg" />
 
335
  </audio>
336
  <audio id="bark" src="{bark_sound}"></audio>
337
  <script>
 
338
  const tracks = ["{music1}", "{music2}"];
339
  const audio = document.getElementById("bg-music");
340
  let current = 0;
341
  audio.addEventListener("ended", () => {
342
  current = (current + 1) % tracks.length;
343
+ audio.src = tracks[current];
344
+ audio.load();
345
+ audio.play();
346
  });
347
 
348
+ document.getElementById("music-toggle").addEventListener("click", () => {
 
 
349
  if (audio.paused) {
350
  audio.play();
351
  toggleBtn.textContent = "⏸️音乐";
 
355
  }
356
  });
357
 
358
+ document.getElementById("next-track").addEventListener("click", () => {
359
+ current = (current + 1) % tracks.length;
360
+ audio.src = tracks[current];
361
+ audio.load();
362
+ audio.play();
363
+ });
364
+
365
  const avatar = document.getElementById("sophia-avatar");
366
  const bark = document.getElementById("bark");
367
  avatar.onmousedown = function(e) {
 
383
  setTimeout(() => fw.remove(), 1200);
384
  });
385
 
 
386
  const gift = document.getElementById("gift");
387
  const popup = document.getElementById("popup");
388
  const popup2 = document.getElementById("popup2");
 
396
  setTimeout(() => {
397
  popup2.src = "{popup2_url}";
398
  popup2.style.display = "block";
 
 
 
 
 
 
 
399
  }, 2000);
400
 
401
  setTimeout(() => {
402
  popup.style.display = "none";
403
  popup2.style.display = "none";
404
  closeBtn.style.display = "none";
405
+ }, 5000);
406
  });
 
407
  closeBtn.addEventListener("click", () => {
408
  popup.style.display = "none";
409
  popup2.style.display = "none";
 
412
  </script>
413
  '''
414
 
 
415
  html_content = html_template.replace("{background_css}", background_css) \
416
  .replace("{avatar_url}", avatar_url) \
417
  .replace("{cake_url}", cake_url) \
 
419
  .replace("{music2}", music2) \
420
  .replace("{bark_sound}", bark_sound) \
421
  .replace("{gift_url}", gift_url) \
422
+ .replace("{popup_url}", popup_url) \
423
+ .replace("{popup2_url}", popup2_url)
424
 
 
425
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
426
  gr.HTML(html_content)
427
  gr.Markdown("## 🌸 Horse and 7 Agent:欢迎进入豌豆的世界 🌸")
 
431
  btn = gr.Button("投喂")
432
  btn.click(chat, inputs=[msg, state], outputs=[chatbot, state])
433
  msg.submit(chat, inputs=[msg, state], outputs=[chatbot, state])
 
434
  if __name__ == "__main__":
435
  demo.launch()