diff --git a/frontend/public/index.html b/frontend/public/index.html index d43b2b972f..5b60af6df9 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -7,7 +7,7 @@ - +
Related Spaces:
") .replace("```bash\n", "") .replace("```directory\n", "") @@ -208,8 +121,10 @@ def render_guides(): ) for demo_name in demo_names: - demos[demo_name] = "" - guide_template = Template(guide_text) + demos[demo_name] = ( + "" + ) + guide_template = Template(guide["content"]) guide_output = guide_template.render(code=code, demos=demos) # Escape HTML tags inside python code blocks so they show up properly @@ -222,8 +137,7 @@ def render_guides(): guide_output, ) - output_html = markdown2.markdown(guide_output) - output_html = output_html.replace("([A-Za-z0-9 ]*)<\/h3>", output_html): output_html = output_html.replace( @@ -232,20 +146,25 @@ def render_guides(): ) os.makedirs("generated", exist_ok=True) - guide = guide[:-3] - os.makedirs(os.path.join("generated", guide), exist_ok=True) + os.makedirs(os.path.join("generated", guide["name"]), exist_ok=True) with open( "src/guides_template.html", encoding="utf-8" ) as general_template_file: general_template = Template(general_template_file.read()) with open( - os.path.join("generated", guide, "index.html"), "w", encoding="utf-8" + os.path.join("generated", guide["name"], "index.html"), + "w", + encoding="utf-8", ) as generated_template: output_html = general_template.render( template_html=output_html, demo_names=demo_names, - meta_tags=meta_tags, navbar_html=navbar_html, + title=guide["pretty_name"], + url=guide["url"], + guide_name=guide["name"], + spaces=guide["spaces"], + tags=guide["tags"], ) generated_template.write(output_html) diff --git a/website/homepage/render_html_helpers.py b/website/homepage/render_html_helpers.py new file mode 100644 index 0000000000..a84a92a28b --- /dev/null +++ b/website/homepage/render_html_helpers.py @@ -0,0 +1,59 @@ +import cairo +import os + +def add_line_breaks(text, num_char): + if len(text) > num_char: + text_list = text.split() + text = "" + total_count = 0 + count = 0 + for word in text_list: + if total_count > num_char*5: + text = text[:-1] + text += "..." + break + count += len(word) + if count > num_char: + text += word + "\n" + total_count += count + count = 0 + else: + text += word + " " + total_count += len(word+" ") + return text + return text + +def generate_meta_image(guide): + IMG_GUIDE_LOCATION = "dist/assets/img/guides" + title, tags, guide_name = guide["pretty_name"], guide["tags"], guide["name"] + surface = cairo.ImageSurface.create_from_png("src/assets/img/guides/base-image.png") + ctx = cairo.Context(surface) + ctx.scale(500, 500) + ctx.set_source_rgba(0.611764706,0.639215686,0.6862745098,1) + ctx.select_font_face("Arial", cairo.FONT_SLANT_NORMAL, + cairo.FONT_WEIGHT_NORMAL) + ctx.set_font_size(0.15) + ctx.move_to(0.3, 0.55) + ctx.show_text("gradio.app/guides") + if tags: + if len(tags) > 5: + tags = tags[:5] + tags = " | ".join(tags) + ctx.move_to(0.3, 2.2) + ctx.show_text(tags) + ctx.set_source_rgba(0.352941176,0.352941176,0.352941176,1) + ctx.set_font_size(0.28) + title_breaked = add_line_breaks(title, 10) + + if "\n" in title_breaked: + for i, t in enumerate(title_breaked.split("\n")): + ctx.move_to(0.3, 0.9+i*0.4) + ctx.show_text(t) + else: + ctx.move_to(0.3, 1.0) + ctx.show_text(title_breaked) + + + os.makedirs(IMG_GUIDE_LOCATION, exist_ok=True ) + image_path = f"{IMG_GUIDE_LOCATION}/{guide_name}.png" + surface.write_to_png(image_path) diff --git a/website/homepage/src/assets/img/guides/building_a_pictionary_app.png b/website/homepage/src/assets/img/guides/building_a_pictionary_app.png deleted file mode 100644 index 7b5a40d509..0000000000 Binary files a/website/homepage/src/assets/img/guides/building_a_pictionary_app.png and /dev/null differ diff --git a/website/homepage/src/assets/img/guides/creating_a_chatbot.png b/website/homepage/src/assets/img/guides/creating_a_chatbot.png deleted file mode 100644 index 48a9a8146a..0000000000 Binary files a/website/homepage/src/assets/img/guides/creating_a_chatbot.png and /dev/null differ diff --git a/website/homepage/src/assets/img/guides/getting_started.png b/website/homepage/src/assets/img/guides/getting_started.png deleted file mode 100644 index 91c972a2cb..0000000000 Binary files a/website/homepage/src/assets/img/guides/getting_started.png and /dev/null differ diff --git a/website/homepage/src/assets/img/guides/using_flagging.png b/website/homepage/src/assets/img/guides/using_flagging.png deleted file mode 100644 index e6918a644e..0000000000 Binary files a/website/homepage/src/assets/img/guides/using_flagging.png and /dev/null differ diff --git a/website/homepage/src/guides_main_template.html b/website/homepage/src/guides_main_template.html index 771ed3e841..818d7fa603 100644 --- a/website/homepage/src/guides_main_template.html +++ b/website/homepage/src/guides_main_template.html @@ -28,45 +28,11 @@ html { font-size: 16px !important; } - header { - flex - } - .prose p > img { - margin: 0 auto; - width: 600px; - max-width: 100%; - } - .prose { - max-width: none !important; - } - .gradio_page .footer { - display: none !important; - } - .prose .code, .prose pre { - background-color: whitesmoke; - color: black; - } - .prose table { - width: auto; - } - h3 a { - display: inline-block; - } - h3 a img { - height: 14px; - margin: 0 4px !important; - } - - ul { - text-align: center !important; - } - .search-for-tags { width: 100%; position: relative; display: flex; } - .searchTerm { width: 100%; border: 1px solid #bebfc3; @@ -157,14 +123,17 @@ {% for guide in guides %} - + - {{ guide.pretty_guide_name }} + {{ guide.pretty_name }} - {{ guide.tags }} + {% for tag in guide.tags %} + {{ tag }}{% if not loop.last %}, {% endif %} + {% endfor %} @@ -247,7 +216,7 @@ var counter = 0 {% for guide in guides %} txtValue = a[{{ loop.index - 1 }}].innerText; - guideContent = {{ guide.guide_content|tojson|safe }} + guideContent = {{ guide.content|tojson|safe }} if (txtValue.toUpperCase().indexOf(filter) > -1 || guideContent.toUpperCase().indexOf(filter) > -1) { a[{{ loop.index - 1}}].style.display = ""; } else { diff --git a/website/homepage/src/guides_template.html b/website/homepage/src/guides_template.html index be7a818818..88a1e0d685 100644 --- a/website/homepage/src/guides_template.html +++ b/website/homepage/src/guides_template.html @@ -5,92 +5,90 @@ - {{ meta_tags|safe }} + + + + + + + + - + {{navbar_html|safe}} - - + + {% if spaces is not none %} + + Related Spaces: + {% for space in spaces %} + {{ space[30:] }} + {% if not loop.last %}, {% endif %} + {% endfor %} + + {% endif %} + + {% if tags is not none %} + + Tags: + {% for tag in tags %} + {{ tag }}{% if not loop.last %}, {% endif %} + {% endfor %} + + {% endif %} + + {{ template_html|safe }} @@ -112,49 +110,19 @@ -
") .replace("```directory\n", "") @@ -208,8 +121,10 @@ def render_guides(): ) for demo_name in demo_names: - demos[demo_name] = "" - guide_template = Template(guide_text) + demos[demo_name] = ( + "" + ) + guide_template = Template(guide["content"]) guide_output = guide_template.render(code=code, demos=demos) # Escape HTML tags inside python code blocks so they show up properly @@ -222,8 +137,7 @@ def render_guides(): guide_output, ) - output_html = markdown2.markdown(guide_output) - output_html = output_html.replace("([A-Za-z0-9 ]*)<\/h3>", output_html): output_html = output_html.replace( @@ -232,20 +146,25 @@ def render_guides(): ) os.makedirs("generated", exist_ok=True) - guide = guide[:-3] - os.makedirs(os.path.join("generated", guide), exist_ok=True) + os.makedirs(os.path.join("generated", guide["name"]), exist_ok=True) with open( "src/guides_template.html", encoding="utf-8" ) as general_template_file: general_template = Template(general_template_file.read()) with open( - os.path.join("generated", guide, "index.html"), "w", encoding="utf-8" + os.path.join("generated", guide["name"], "index.html"), + "w", + encoding="utf-8", ) as generated_template: output_html = general_template.render( template_html=output_html, demo_names=demo_names, - meta_tags=meta_tags, navbar_html=navbar_html, + title=guide["pretty_name"], + url=guide["url"], + guide_name=guide["name"], + spaces=guide["spaces"], + tags=guide["tags"], ) generated_template.write(output_html) diff --git a/website/homepage/render_html_helpers.py b/website/homepage/render_html_helpers.py new file mode 100644 index 0000000000..a84a92a28b --- /dev/null +++ b/website/homepage/render_html_helpers.py @@ -0,0 +1,59 @@ +import cairo +import os + +def add_line_breaks(text, num_char): + if len(text) > num_char: + text_list = text.split() + text = "" + total_count = 0 + count = 0 + for word in text_list: + if total_count > num_char*5: + text = text[:-1] + text += "..." + break + count += len(word) + if count > num_char: + text += word + "\n" + total_count += count + count = 0 + else: + text += word + " " + total_count += len(word+" ") + return text + return text + +def generate_meta_image(guide): + IMG_GUIDE_LOCATION = "dist/assets/img/guides" + title, tags, guide_name = guide["pretty_name"], guide["tags"], guide["name"] + surface = cairo.ImageSurface.create_from_png("src/assets/img/guides/base-image.png") + ctx = cairo.Context(surface) + ctx.scale(500, 500) + ctx.set_source_rgba(0.611764706,0.639215686,0.6862745098,1) + ctx.select_font_face("Arial", cairo.FONT_SLANT_NORMAL, + cairo.FONT_WEIGHT_NORMAL) + ctx.set_font_size(0.15) + ctx.move_to(0.3, 0.55) + ctx.show_text("gradio.app/guides") + if tags: + if len(tags) > 5: + tags = tags[:5] + tags = " | ".join(tags) + ctx.move_to(0.3, 2.2) + ctx.show_text(tags) + ctx.set_source_rgba(0.352941176,0.352941176,0.352941176,1) + ctx.set_font_size(0.28) + title_breaked = add_line_breaks(title, 10) + + if "\n" in title_breaked: + for i, t in enumerate(title_breaked.split("\n")): + ctx.move_to(0.3, 0.9+i*0.4) + ctx.show_text(t) + else: + ctx.move_to(0.3, 1.0) + ctx.show_text(title_breaked) + + + os.makedirs(IMG_GUIDE_LOCATION, exist_ok=True ) + image_path = f"{IMG_GUIDE_LOCATION}/{guide_name}.png" + surface.write_to_png(image_path) diff --git a/website/homepage/src/assets/img/guides/building_a_pictionary_app.png b/website/homepage/src/assets/img/guides/building_a_pictionary_app.png deleted file mode 100644 index 7b5a40d509..0000000000 Binary files a/website/homepage/src/assets/img/guides/building_a_pictionary_app.png and /dev/null differ diff --git a/website/homepage/src/assets/img/guides/creating_a_chatbot.png b/website/homepage/src/assets/img/guides/creating_a_chatbot.png deleted file mode 100644 index 48a9a8146a..0000000000 Binary files a/website/homepage/src/assets/img/guides/creating_a_chatbot.png and /dev/null differ diff --git a/website/homepage/src/assets/img/guides/getting_started.png b/website/homepage/src/assets/img/guides/getting_started.png deleted file mode 100644 index 91c972a2cb..0000000000 Binary files a/website/homepage/src/assets/img/guides/getting_started.png and /dev/null differ diff --git a/website/homepage/src/assets/img/guides/using_flagging.png b/website/homepage/src/assets/img/guides/using_flagging.png deleted file mode 100644 index e6918a644e..0000000000 Binary files a/website/homepage/src/assets/img/guides/using_flagging.png and /dev/null differ diff --git a/website/homepage/src/guides_main_template.html b/website/homepage/src/guides_main_template.html index 771ed3e841..818d7fa603 100644 --- a/website/homepage/src/guides_main_template.html +++ b/website/homepage/src/guides_main_template.html @@ -28,45 +28,11 @@ html { font-size: 16px !important; } - header { - flex - } - .prose p > img { - margin: 0 auto; - width: 600px; - max-width: 100%; - } - .prose { - max-width: none !important; - } - .gradio_page .footer { - display: none !important; - } - .prose .code, .prose pre { - background-color: whitesmoke; - color: black; - } - .prose table { - width: auto; - } - h3 a { - display: inline-block; - } - h3 a img { - height: 14px; - margin: 0 4px !important; - } - - ul { - text-align: center !important; - } - .search-for-tags { width: 100%; position: relative; display: flex; } - .searchTerm { width: 100%; border: 1px solid #bebfc3; @@ -157,14 +123,17 @@ {% for guide in guides %} - + - {{ guide.pretty_guide_name }} + {{ guide.pretty_name }} - {{ guide.tags }} + {% for tag in guide.tags %} + {{ tag }}{% if not loop.last %}, {% endif %} + {% endfor %} @@ -247,7 +216,7 @@ var counter = 0 {% for guide in guides %} txtValue = a[{{ loop.index - 1 }}].innerText; - guideContent = {{ guide.guide_content|tojson|safe }} + guideContent = {{ guide.content|tojson|safe }} if (txtValue.toUpperCase().indexOf(filter) > -1 || guideContent.toUpperCase().indexOf(filter) > -1) { a[{{ loop.index - 1}}].style.display = ""; } else { diff --git a/website/homepage/src/guides_template.html b/website/homepage/src/guides_template.html index be7a818818..88a1e0d685 100644 --- a/website/homepage/src/guides_template.html +++ b/website/homepage/src/guides_template.html @@ -5,92 +5,90 @@ - {{ meta_tags|safe }} + + + + + + + + - + {{navbar_html|safe}} - - + + {% if spaces is not none %} + + Related Spaces: + {% for space in spaces %} + {{ space[30:] }} + {% if not loop.last %}, {% endif %} + {% endfor %} + + {% endif %} + + {% if tags is not none %} + + Tags: + {% for tag in tags %} + {{ tag }}{% if not loop.last %}, {% endif %} + {% endfor %} + + {% endif %} + + {{ template_html|safe }} @@ -112,49 +110,19 @@ -
") @@ -208,8 +121,10 @@ def render_guides(): ) for demo_name in demo_names: - demos[demo_name] = "" - guide_template = Template(guide_text) + demos[demo_name] = ( + "" + ) + guide_template = Template(guide["content"]) guide_output = guide_template.render(code=code, demos=demos) # Escape HTML tags inside python code blocks so they show up properly @@ -222,8 +137,7 @@ def render_guides(): guide_output, ) - output_html = markdown2.markdown(guide_output) - output_html = output_html.replace("([A-Za-z0-9 ]*)<\/h3>", output_html): output_html = output_html.replace( @@ -232,20 +146,25 @@ def render_guides(): ) os.makedirs("generated", exist_ok=True) - guide = guide[:-3] - os.makedirs(os.path.join("generated", guide), exist_ok=True) + os.makedirs(os.path.join("generated", guide["name"]), exist_ok=True) with open( "src/guides_template.html", encoding="utf-8" ) as general_template_file: general_template = Template(general_template_file.read()) with open( - os.path.join("generated", guide, "index.html"), "w", encoding="utf-8" + os.path.join("generated", guide["name"], "index.html"), + "w", + encoding="utf-8", ) as generated_template: output_html = general_template.render( template_html=output_html, demo_names=demo_names, - meta_tags=meta_tags, navbar_html=navbar_html, + title=guide["pretty_name"], + url=guide["url"], + guide_name=guide["name"], + spaces=guide["spaces"], + tags=guide["tags"], ) generated_template.write(output_html) diff --git a/website/homepage/render_html_helpers.py b/website/homepage/render_html_helpers.py new file mode 100644 index 0000000000..a84a92a28b --- /dev/null +++ b/website/homepage/render_html_helpers.py @@ -0,0 +1,59 @@ +import cairo +import os + +def add_line_breaks(text, num_char): + if len(text) > num_char: + text_list = text.split() + text = "" + total_count = 0 + count = 0 + for word in text_list: + if total_count > num_char*5: + text = text[:-1] + text += "..." + break + count += len(word) + if count > num_char: + text += word + "\n" + total_count += count + count = 0 + else: + text += word + " " + total_count += len(word+" ") + return text + return text + +def generate_meta_image(guide): + IMG_GUIDE_LOCATION = "dist/assets/img/guides" + title, tags, guide_name = guide["pretty_name"], guide["tags"], guide["name"] + surface = cairo.ImageSurface.create_from_png("src/assets/img/guides/base-image.png") + ctx = cairo.Context(surface) + ctx.scale(500, 500) + ctx.set_source_rgba(0.611764706,0.639215686,0.6862745098,1) + ctx.select_font_face("Arial", cairo.FONT_SLANT_NORMAL, + cairo.FONT_WEIGHT_NORMAL) + ctx.set_font_size(0.15) + ctx.move_to(0.3, 0.55) + ctx.show_text("gradio.app/guides") + if tags: + if len(tags) > 5: + tags = tags[:5] + tags = " | ".join(tags) + ctx.move_to(0.3, 2.2) + ctx.show_text(tags) + ctx.set_source_rgba(0.352941176,0.352941176,0.352941176,1) + ctx.set_font_size(0.28) + title_breaked = add_line_breaks(title, 10) + + if "\n" in title_breaked: + for i, t in enumerate(title_breaked.split("\n")): + ctx.move_to(0.3, 0.9+i*0.4) + ctx.show_text(t) + else: + ctx.move_to(0.3, 1.0) + ctx.show_text(title_breaked) + + + os.makedirs(IMG_GUIDE_LOCATION, exist_ok=True ) + image_path = f"{IMG_GUIDE_LOCATION}/{guide_name}.png" + surface.write_to_png(image_path) diff --git a/website/homepage/src/assets/img/guides/building_a_pictionary_app.png b/website/homepage/src/assets/img/guides/building_a_pictionary_app.png deleted file mode 100644 index 7b5a40d509..0000000000 Binary files a/website/homepage/src/assets/img/guides/building_a_pictionary_app.png and /dev/null differ diff --git a/website/homepage/src/assets/img/guides/creating_a_chatbot.png b/website/homepage/src/assets/img/guides/creating_a_chatbot.png deleted file mode 100644 index 48a9a8146a..0000000000 Binary files a/website/homepage/src/assets/img/guides/creating_a_chatbot.png and /dev/null differ diff --git a/website/homepage/src/assets/img/guides/getting_started.png b/website/homepage/src/assets/img/guides/getting_started.png deleted file mode 100644 index 91c972a2cb..0000000000 Binary files a/website/homepage/src/assets/img/guides/getting_started.png and /dev/null differ diff --git a/website/homepage/src/assets/img/guides/using_flagging.png b/website/homepage/src/assets/img/guides/using_flagging.png deleted file mode 100644 index e6918a644e..0000000000 Binary files a/website/homepage/src/assets/img/guides/using_flagging.png and /dev/null differ diff --git a/website/homepage/src/guides_main_template.html b/website/homepage/src/guides_main_template.html index 771ed3e841..818d7fa603 100644 --- a/website/homepage/src/guides_main_template.html +++ b/website/homepage/src/guides_main_template.html @@ -28,45 +28,11 @@ html { font-size: 16px !important; } - header { - flex - } - .prose p > img { - margin: 0 auto; - width: 600px; - max-width: 100%; - } - .prose { - max-width: none !important; - } - .gradio_page .footer { - display: none !important; - } - .prose .code, .prose pre { - background-color: whitesmoke; - color: black; - } - .prose table { - width: auto; - } - h3 a { - display: inline-block; - } - h3 a img { - height: 14px; - margin: 0 4px !important; - } - - ul { - text-align: center !important; - } - .search-for-tags { width: 100%; position: relative; display: flex; } - .searchTerm { width: 100%; border: 1px solid #bebfc3; @@ -157,14 +123,17 @@ {% for guide in guides %} - + - {{ guide.pretty_guide_name }} + {{ guide.pretty_name }} - {{ guide.tags }} + {% for tag in guide.tags %} + {{ tag }}{% if not loop.last %}, {% endif %} + {% endfor %} @@ -247,7 +216,7 @@ var counter = 0 {% for guide in guides %} txtValue = a[{{ loop.index - 1 }}].innerText; - guideContent = {{ guide.guide_content|tojson|safe }} + guideContent = {{ guide.content|tojson|safe }} if (txtValue.toUpperCase().indexOf(filter) > -1 || guideContent.toUpperCase().indexOf(filter) > -1) { a[{{ loop.index - 1}}].style.display = ""; } else { diff --git a/website/homepage/src/guides_template.html b/website/homepage/src/guides_template.html index be7a818818..88a1e0d685 100644 --- a/website/homepage/src/guides_template.html +++ b/website/homepage/src/guides_template.html @@ -5,92 +5,90 @@ - {{ meta_tags|safe }} + + + + + + + + - + {{navbar_html|safe}} - - + + {% if spaces is not none %} + + Related Spaces: + {% for space in spaces %} + {{ space[30:] }} + {% if not loop.last %}, {% endif %} + {% endfor %} + + {% endif %} + + {% if tags is not none %} + + Tags: + {% for tag in tags %} + {{ tag }}{% if not loop.last %}, {% endif %} + {% endfor %} + + {% endif %} + + {{ template_html|safe }} @@ -112,49 +110,19 @@ -
- {{ guide.tags }} + {% for tag in guide.tags %} + {{ tag }}{% if not loop.last %}, {% endif %} + {% endfor %}
+ Related Spaces: + {% for space in spaces %} + {{ space[30:] }} + {% if not loop.last %}, {% endif %} + {% endfor %} +
+ Tags: + {% for tag in tags %} + {{ tag }}{% if not loop.last %}, {% endif %} + {% endfor %} +