panditamey/generateTextAPI
0
1import io2import os3import re4from fpdf import FPDF5import google.generativeai as palm6from gtts import gTTS7import requests8import w3storage9import uvicorn10from pydantic import BaseModel11from fastapi import FastAPI, File, UploadFile12from fastapi.middleware.cors import CORSMiddleware13 14 15 16class Prompt(BaseModel):17 prompt : str18 19app = FastAPI()20# origins = [21# "http://localhost",22# "http://localhost:8000",23# ]24app.add_middleware(25 CORSMiddleware,26 allow_origins=["*"],27 allow_credentials=True,28 allow_methods=["*"],29 allow_headers=["*"],30)31 32def generate(p):33 TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6ZXRocjoweDhjOTIwNjVDNTgxMDUyNDI0NjNmOUFDNDYxREJkNkMwNTlkMDRlOWUiLCJpc3MiOiJ3ZWIzLXN0b3JhZ2UiLCJpYXQiOjE2OTcxMjgwODY3MjEsIm5hbWUiOiJST1NQTCJ9.eq5f2IsDCV7AJ5A5uY5ks1vDGVUBrlXt3bClzOq3I4A"34 w3 = w3storage.API(token=TOKEN)35 symbol_pattern = r'[^\w\s]' 36 palm.configure(api_key="AIzaSyAUfPsa_F6RlaXH3-z3Nkd46R8fFvYzu1o")37 response = palm.generate_text(prompt=p+"(write only text without any * # @ ! symbols))")38 text = re.sub(symbol_pattern, '', response.result)39 40 summary = palm.generate_text(prompt="Summarize in 20 words: "+text)41 summary = re.sub(symbol_pattern, '', summary.result)42 43 bookName = palm.generate_text(prompt="Give one book name for below book: "+text)44 bookName = re.sub(symbol_pattern, '', bookName.result)45 46 API_URL = "https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-xl-base-1.0"47 headers = {"Authorization": "Bearer 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"}48 49 def query(payload):50 response = requests.post(API_URL, headers=headers, json=payload)51 return response.content52 image_bytes = query({53 "inputs": bookName,54 })55 imagecid = w3.post_upload(io.BytesIO(image_bytes))56 imagecid_url = "https://"+imagecid+".ipfs.w3s.link"57 58 print(f"Uploaded IMAGE with CID: {imagecid_url}")59 60 pdf = FPDF()61 pdf.add_page()62 pdf.set_font("Arial", size = 15)63 64 pdf.multi_cell(0, 10, txt=text)65 pdf_buffer = io.BytesIO()66 pdf_buffer.write(pdf.output(dest='S').encode('latin1'))67 pdf_buffer.seek(0)68 pdfcid = w3.post_upload(pdf_buffer)69 pdfcid_url = "https://"+pdfcid+".ipfs.w3s.link"70 print(f"Uploaded PDF with CID: {pdfcid_url}")71 72 myobj = gTTS(text=text, lang='en', slow=False)73 mp3_buffer = io.BytesIO()74 myobj.write_to_fp(mp3_buffer)75 mp3_buffer.seek(0)76 mp3cid = w3.post_upload(mp3_buffer)77 mp3cid_url = "https://"+mp3cid+".ipfs.w3s.link"78 print(f"Uploaded MP3 with CID: {mp3cid_url}")79 return pdfcid_url, mp3cid_url,imagecid_url, summary,bookName80 81 82@app.post('/generatebook')83async def generatebook(prompt: Prompt):84 pdf,audio,imagecid_url,summary,bookName = generate(prompt.prompt)85 # palm.configure(api_key="AIzaSyAUfPsa_F6RlaXH3-z3Nkd46R8fFvYzu1o")86 # response = palm.generate_text(prompt="Write a book on india in 1000 words with 5 chapters.")87 # response = palm.generate_text(prompt=prompt.prompt)88 # text = response.result89 # print(response.result)90 return {91 "status": "success",92 "prompt": prompt.prompt,93 "pdf": pdf,94 "audio": audio,95 "description": summary,96 "name":bookName,97 "poster":imagecid_url98 }99 100 101 102 103 104 105 106 107 108 