from gradio_client import Client import gradio as gr import os import random def check_password(username, password): if password == os.environ["ACCESS"]: return True else: return False def remove_latex_tags(input_string): if input_string.startswith("```latex") and input_string.endswith("```"): # Remove the ```latex at the beginning and ``` at the end result_string = input_string[len("```latex"):-len("```")] return result_string else: # If the input string doesn't have the expected tags, return it unchanged return input_string def func(file, number_of_pages, secret): if secret != os.environ["ACCESS"]: return "Wrong password, please try again" text = client.predict(file, number_of_pages) text = remove_latex_tags(text) # generate a random sequence of numbers # s = "".join([str(random.randint(0, 9)) for i in range(10)]) # with open(f"{s}.tex", "w", encoding="utf-8") as f: # f.write(text) return text def upload_file(file): return file.name description = r"""

Scideck is a tool that allows you to convert your PDF files into a presentation deck.


❗️❗️❗️[Important] Instructions:
1️⃣ Upload the PDF document: Select the PDF file you want to convert into slides.
2️⃣ Specify the number of pages: Indicate the range of pages you'd like to include in the slide generation. Set it to 0 if you want to include all pages.
3️⃣ Enter the password provided in the invite email. 3️⃣ Click the Generate button: Initiate the slide generation process by clicking the designated "Generate" button.
4️⃣ Be patient 🙂: Generating the slides could take between 1 minute and 5 minutes.
📝 If you get an error message, you can send me email with the PDF file attached to this email address: nkoisheke [at] ethz [dot] ch, and I will generate the slides for you. If there are any other issues or questions, please do not hesitate to contact me 🤗
""" read_key = os.environ.get("HF_TOKEN", None) if __name__ == "__main__": client = Client.duplicate("Nauryzbay/deckify_private", hf_token=read_key) temp = "

SCIDECK: Generate slides (LaTeX Beamer) from PDF

" with gr.Blocks() as demo: gr.Markdown(temp) gr.Image("demo.png", width=600, show_download_button=False, show_label=False) gr.Markdown(description) file_output = gr.File() upload_button = gr.UploadButton("Click to Upload a PDF File", file_types=["file"], file_count="single", size="sm") upload_button.upload(upload_file, upload_button, file_output) number_of_pages = gr.Number(label="Number of pages") secret = gr.Textbox(label="Password", type="password") output = gr.Textbox(label="Output") greet_btn = gr.Button("Generate slides") greet_btn.click(fn=func, inputs=[upload_button, number_of_pages, secret], outputs=output, api_name="greet") demo.queue(max_size=5) demo.launch()