{"repo": "aurumz-rgb/reviewaid", "files": {"utils.py": {"26972ab32c8156da585b28d981b5e8ef23721a6e": {"t": 1785674174.9680982, "n": 33646, "h": "8f9300f0daddf937", "c": "import streamlit as st\nimport fitz \nimport time\nimport os \nimport re\nimport json\nimport json5\nimport pandas as pd\nimport io\nimport html\nimport hashlib\nimport gc\nfrom abc import ABC, abstractmethod\nfrom typing import List, Dict, Any\nfrom datetime import datetime\nfrom dotenv import load_dotenv\nimport firebase_admin\nfrom firebase_admin import credentials, firestore\nfrom cryptography.fernet import Fernet\nfrom fpdf import FPDF\nfrom streamlit_lottie import st_lottie\nimport streamlit.components.v1 as components\nimport base64\nimport pytesseract\nfrom PIL import Image\n\ntry:\n from openai import OpenAI\nexcept ImportError:\n OpenAI = None\n\ntry:\n from anthropic import Anthropic\nexcept ImportError:\n Anthropic = None\n\ntry:\n import cohere\nexcept ImportError:\n cohere = None\n\ntry:\n import ollama\nexcept ImportError:\n ollama = None\n\ntry:\n from zai import ZaiClient\nexcept ImportError:\n ZaiClient = None\n\nload_dotenv()\n\n\ndb = None \n\ntry:\n if not firebase_admin._apps:\n firebase_key_str = os.getenv(\"FIREBASE_KEY\")\n if firebase_key_str:\n cred_dict = json.loads(firebase_key_str)\n cred = credentials.Certificate(cred_dict)\n firebase_admin.initialize_app(cred)\n \n if firebase_admin._apps:\n db = firestore.client()\nexcept Exception as e:\n \n try:\n st.warning(f\"Error initializing Firebase: {e}\")\n except:\n print(f\"Error initializing Firebase: {e}\")\n\nMAX_LOG_ENTRIES = 200\nMAX_INPUT_TOKENS_SCREENER = 128000 \nMAX_INPUT_TOKENS_EXTRACTOR = 128000 \nMAX_OUTPUT_TOKENS = 8192\n\n\ndef get_firebase_stats():\n if db is None:\n return {\"papers_screened\": 0, \"papers_extracted\": 0}\n try:\n doc_ref = db.collection(\"ReviewAidAnalytics\").document(\"counters\")\n doc = doc_ref.get()\n \n if doc:\n return {\n \"papers_screened\": doc.to_dict().get(\"papers_screened\", 0),\n \"papers_extracted\": doc.to_dict().get(\"papers_extracted\", 0),\n \n }\n else:\n \n return {\"papers_screened\": 0, \"papers_extracted\": 0}\n except Exception:\n \n return {\"papers_screened\": 0, \"papers_extracted\": 0}\n\ndef display_citation_section():\n \"\"\"\n Displays the citation section.\n Checks session state to prevent duplicate element IDs on re-runs.\n \"\"\"\n\n\n st.markdown(\"---\")\n st.markdown(\"## Citation\")\n st.markdown(\"You can check ReviewAid's journal paper here: [Journal of Open Research Software](https://doi.org/10.5334/jors.672). If you are to use ReviewAid, please don't forget to cite the tool:\")\n\n apa_citation = (\n \"Sahu, V., & Balakrishnan, M. (2026). ReviewAid: An Open-Source Tool for Efficient PICO-Based Screening and Data Extraction in Systematic Reviews. \"\n \"Journal of Open Research Software, 14(1), 21. https://doi.org/10.5334/jors.672\"\n )\n\n harvard_citation = (\n \"Sahu, V. and Balakrishnan, M., 2026. ReviewAid: An Open-Source Tool for Efficient PICO-Based Screening and Data Extraction in Systematic Reviews. \"\n \"Journal of Open Research Software, 14(1), p. 21. Available at: https://doi.org/10.5334/jors.672\"\n )\n\n mla_citation = (\n \"Sahu, Vihaan, and Mohith Balakrishnan. \\\"ReviewAid: An Open-Source Tool for Efficient PICO-Based Screening and Data Extraction in Systematic Reviews.\\\" \"\n \"Journal of Open Research Software, vol. 14, no. 1, 2026, p. 21.\"\n )\n\n chicago_citation = (\n \"Sahu, Vihaan, and Mohith Balakrishnan. 2026. \\\"ReviewAid: An Open-Source Tool for Efficient PICO-Based Screening and Data Extraction in Systematic Reviews.\\\" \"\n \"Journal of Open Research Software 14 (1): 21. https://doi.org/10.5334/jors.672.\"\n )\n\n ieee_citation = (\n \"V. Sahu and M. Balakrishnan, \\\"ReviewAid: An Open-Source Tool for Efficient PICO-Based Screening and Data Extraction in Systematic Reviews,\\\" \"\n \"Journal of Open Research Software, vol. 14, no. 1, p. 21, 2026. doi: 10.5334/jors.672.\"\n )\n\n vancouver_citation = (\n \"Sahu V, Balakrishnan M. ReviewAid: An Open-Source Tool for Efficient PICO-Based Screening and Data Extraction in Systematic Reviews. \"\n \"J Open Res Softw. 2026;14(1):21. doi:10.5334/jors.672\"\n )\n\n ris_data = \"\"\"TY - JOUR\nAU - Sahu, V.\nAU - Balakrishnan, M.\nTI - ReviewAid: An Open-Source Tool for Efficient PICO-Based Screening and Data Extraction in Systematic Reviews\nJO - Journal of Open Research Software\nPY - 2026\nVL - 14\nIS - 1\nSP - 21\nDO - 10.5334/jors.672\nER -\"\"\"\n\n bib_data = \"\"\"@article{Sahu2026,\n author = {Sahu, V. and Balakrishnan, M.},\n title = {ReviewAid: An Open-Source Tool for Efficient PICO-Based Screening and Data Extraction in Systematic Reviews},\n journal = {Journal of Open Research Software},\n year = {2026},\n volume = {14},\n number = {1},\n pages = {21},\n doi = {10.5334/jors.672}\n}\"\"\"\n \n try:\n citation_style = st.selectbox(\n \"Select citation style\",\n [\"APA\", \"Harvard\", \"MLA\", \"Chicago\", \"IEEE\", \"Vancouver\"]\n )\n except st.errors.StreamlitDuplicateElementId as e:\n st.warning(f\"Citation section skipped (Duplicate ID): {e}\")\n \n return\n\n if citation_style == \"APA\":\n citation_text = apa_citation\n elif citation_style == \"Harvard\":\n citation_text = harvard_citation\n elif citation_style == \"MLA\":\n citation_text = mla_citation\n elif citation_style == \"Chicago\":\n citation_text = chicago_citation\n elif citation_style == \"IEEE\":\n citation_text = ieee_citation\n elif citation_style == \"Vancouver\":\n citation_text = vancouver_citation\n\n escaped_citation = html.escape(citation_text)\n \n st.markdown(f'
{escaped_citation}
{escaped_citation}