Spaces:
Running
Running
Update html_helper.py
Browse files- html_helper.py +19 -24
html_helper.py
CHANGED
|
@@ -16,6 +16,7 @@ def to_youtube_embed_url(video_url):
|
|
| 16 |
return re.sub(regex, r"https://www.youtube.com/embed/\1",video_url)
|
| 17 |
|
| 18 |
|
|
|
|
| 19 |
def create_html_from_midi(midifile):
|
| 20 |
html_template = """
|
| 21 |
<!DOCTYPE html>
|
|
@@ -27,21 +28,20 @@ def create_html_from_midi(midifile):
|
|
| 27 |
<style>
|
| 28 |
/* Background color for the section */
|
| 29 |
#proll {{background-color:transparent}}
|
| 30 |
-
|
| 31 |
/* Custom player style */
|
| 32 |
#proll midi-player {{
|
| 33 |
display: block;
|
| 34 |
width: inherit;
|
| 35 |
margin: 4px;
|
| 36 |
margin-bottom: 0;
|
|
|
|
|
|
|
| 37 |
}}
|
| 38 |
-
|
| 39 |
#proll midi-player::part(control-panel) {{
|
| 40 |
background: #d8dae880;
|
| 41 |
border-radius: 8px 8px 0 0;
|
| 42 |
border: 1px solid #A0A0A0;
|
| 43 |
}}
|
| 44 |
-
|
| 45 |
/* Custom visualizer style */
|
| 46 |
#proll midi-visualizer .piano-roll-visualizer {{
|
| 47 |
background: #45507328;
|
|
@@ -49,62 +49,57 @@ def create_html_from_midi(midifile):
|
|
| 49 |
border: 1px solid #A0A0A0;
|
| 50 |
margin: 4px;
|
| 51 |
margin-top: 2;
|
| 52 |
-
overflow:
|
|
|
|
| 53 |
}}
|
| 54 |
-
|
| 55 |
#proll midi-visualizer svg rect.note {{
|
| 56 |
opacity: 0.6;
|
| 57 |
stroke-width: 2;
|
| 58 |
}}
|
| 59 |
-
|
| 60 |
#proll midi-visualizer svg rect.note[data-instrument="0"] {{
|
| 61 |
fill: #e22;
|
| 62 |
stroke: #055;
|
| 63 |
}}
|
| 64 |
-
|
| 65 |
#proll midi-visualizer svg rect.note[data-instrument="2"] {{
|
| 66 |
fill: #2ee;
|
| 67 |
stroke: #055;
|
| 68 |
}}
|
| 69 |
-
|
| 70 |
#proll midi-visualizer svg rect.note[data-is-drum="true"] {{
|
| 71 |
fill: #888;
|
| 72 |
stroke: #888;
|
| 73 |
}}
|
| 74 |
-
|
| 75 |
#proll midi-visualizer svg rect.note.active {{
|
| 76 |
opacity: 0.9;
|
| 77 |
stroke: #34384F;
|
| 78 |
}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
</style>
|
| 80 |
</head>
|
| 81 |
<body>
|
| 82 |
<div>
|
| 83 |
<a href="{midifile}" target="_blank" style="font-size: 14px;">Download MIDI</a> <br>
|
| 84 |
</div>
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
<
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
@media (max-width: 350px) {{ #proll {{ transform: scaleY(0.4); }} }}
|
| 93 |
-
@media (max-width: 300px) {{ #proll {{ transform: scaleY(0.3); }} }}
|
| 94 |
-
</style>
|
| 95 |
-
<section id="proll">
|
| 96 |
-
<midi-player src="{midifile}" sound-font="https://storage.googleapis.com/magentadata/js/soundfonts/sgm_plus" visualizer="#proll midi-visualizer"></midi-player>
|
| 97 |
-
<midi-visualizer src="{midifile}"></midi-visualizer>
|
| 98 |
-
</section>
|
| 99 |
</div>
|
| 100 |
</body>
|
| 101 |
</html>
|
| 102 |
""".format(midifile=midifile)
|
| 103 |
html = f"""<div style="display: flex; justify-content: center; align-items: center;">
|
| 104 |
-
<iframe style="width: 100%; height: 500px; overflow:
|
| 105 |
</div>"""
|
| 106 |
return html
|
| 107 |
|
|
|
|
| 108 |
def create_html_youtube_player(youtube_url):
|
| 109 |
youtube_url = to_youtube_embed_url(youtube_url)
|
| 110 |
html = f"""
|
|
|
|
| 16 |
return re.sub(regex, r"https://www.youtube.com/embed/\1",video_url)
|
| 17 |
|
| 18 |
|
| 19 |
+
|
| 20 |
def create_html_from_midi(midifile):
|
| 21 |
html_template = """
|
| 22 |
<!DOCTYPE html>
|
|
|
|
| 28 |
<style>
|
| 29 |
/* Background color for the section */
|
| 30 |
#proll {{background-color:transparent}}
|
|
|
|
| 31 |
/* Custom player style */
|
| 32 |
#proll midi-player {{
|
| 33 |
display: block;
|
| 34 |
width: inherit;
|
| 35 |
margin: 4px;
|
| 36 |
margin-bottom: 0;
|
| 37 |
+
transform-origin: top;
|
| 38 |
+
transform: scaleY(0.8); /* Added scaleY */
|
| 39 |
}}
|
|
|
|
| 40 |
#proll midi-player::part(control-panel) {{
|
| 41 |
background: #d8dae880;
|
| 42 |
border-radius: 8px 8px 0 0;
|
| 43 |
border: 1px solid #A0A0A0;
|
| 44 |
}}
|
|
|
|
| 45 |
/* Custom visualizer style */
|
| 46 |
#proll midi-visualizer .piano-roll-visualizer {{
|
| 47 |
background: #45507328;
|
|
|
|
| 49 |
border: 1px solid #A0A0A0;
|
| 50 |
margin: 4px;
|
| 51 |
margin-top: 2;
|
| 52 |
+
overflow: auto;
|
| 53 |
+
transform: scaleY(0.8); /* Added scaleY */
|
| 54 |
}}
|
|
|
|
| 55 |
#proll midi-visualizer svg rect.note {{
|
| 56 |
opacity: 0.6;
|
| 57 |
stroke-width: 2;
|
| 58 |
}}
|
|
|
|
| 59 |
#proll midi-visualizer svg rect.note[data-instrument="0"] {{
|
| 60 |
fill: #e22;
|
| 61 |
stroke: #055;
|
| 62 |
}}
|
|
|
|
| 63 |
#proll midi-visualizer svg rect.note[data-instrument="2"] {{
|
| 64 |
fill: #2ee;
|
| 65 |
stroke: #055;
|
| 66 |
}}
|
|
|
|
| 67 |
#proll midi-visualizer svg rect.note[data-is-drum="true"] {{
|
| 68 |
fill: #888;
|
| 69 |
stroke: #888;
|
| 70 |
}}
|
|
|
|
| 71 |
#proll midi-visualizer svg rect.note.active {{
|
| 72 |
opacity: 0.9;
|
| 73 |
stroke: #34384F;
|
| 74 |
}}
|
| 75 |
+
/* Media queries for responsive scaling */
|
| 76 |
+
@media (max-width: 700px) {{ #proll midi-visualizer .piano-roll-visualizer {{transform-origin: top; transform: scaleY(0.75);}} }}
|
| 77 |
+
@media (max-width: 500px) {{ #proll midi-visualizer .piano-roll-visualizer {{transform-origin: top; transform: scaleY(0.7);}} }}
|
| 78 |
+
@media (max-width: 400px) {{ #proll midi-visualizer .piano-roll-visualizer {{transform-origin: top; transform: scaleY(0.6);}} }}
|
| 79 |
+
@media (max-width: 300px) {{ #proll midi-visualizer .piano-roll-visualizer {{transform-origin: top; transform: scaleY(0.5);}} }}
|
| 80 |
</style>
|
| 81 |
</head>
|
| 82 |
<body>
|
| 83 |
<div>
|
| 84 |
<a href="{midifile}" target="_blank" style="font-size: 14px;">Download MIDI</a> <br>
|
| 85 |
</div>
|
| 86 |
+
<div>
|
| 87 |
+
<section id="proll">
|
| 88 |
+
<midi-player src="{midifile}" sound-font="https://storage.googleapis.com/magentadata/js/soundfonts/sgm_plus" visualizer="#proll midi-visualizer">
|
| 89 |
+
</midi-player>
|
| 90 |
+
<midi-visualizer src="{midifile}">
|
| 91 |
+
</midi-visualizer>
|
| 92 |
+
</section>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 93 |
</div>
|
| 94 |
</body>
|
| 95 |
</html>
|
| 96 |
""".format(midifile=midifile)
|
| 97 |
html = f"""<div style="display: flex; justify-content: center; align-items: center;">
|
| 98 |
+
<iframe style="width: 100%; height: 500px; overflow:auto" srcdoc='{html_template}'></iframe>
|
| 99 |
</div>"""
|
| 100 |
return html
|
| 101 |
|
| 102 |
+
|
| 103 |
def create_html_youtube_player(youtube_url):
|
| 104 |
youtube_url = to_youtube_embed_url(youtube_url)
|
| 105 |
html = f"""
|