File size: 2,096 Bytes
424c175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

import logging
import os
from supabase import create_client, Client
from fuzzywuzzy import fuzz
from config import SUPABASE_URL, SUPABASE_KEY
import json
import logging

url: str = SUPABASE_URL
key: str = SUPABASE_KEY
supabase: Client = create_client(url, key)

def insert_papers_data(data,author_name ,table_name: str = 'papers'):
    if data == []:
        print("No data to insert")
        return
    formatted_data = []
    for entry in data:
        entry = json.loads(entry)
        data_db = {
            'doi_no': entry.get('doi'),
            'title': entry.get('title'),
            'summary': entry.get('summary'),
            'authors': ", ".join(entry.get('authors',[])),
            'year': entry.get('year'),
            'pdf_link': entry.get('pdf_link'),
            'references': ", ".join(entry.get('references')),
            'categories': ", ".join(entry.get('categories')),
            'comment': entry.get('comment'),
            'journal_ref': entry.get('journal_ref'),
            'source': entry.get('source'),
            'primary_category': entry.get('primary_category'),
            'published': entry.get('published'),
            'author_name' : author_name,
        }
        formatted_data.append(data_db)
    data, count = supabase.table(table_name).insert(formatted_data).execute()


def get_correct_author_name(user_input_author):
    authors_name_data = supabase.table('papers').select('author_name').execute()
    unique_authors = set(author_dict['author_name'] for author_dict in authors_name_data.data)
    unique_authors_list = list(unique_authors)
    similar_authors = [author for author in unique_authors_list if fuzz.ratio(user_input_author, author) > 60]
    if similar_authors:
        return similar_authors[0]
    else:
        print(f"No similar author found for '{user_input_author}'")
        return None
    

def fetch_papers_data(author_name, fields_to_query = ["doi_no"],table_name: str = 'papers'):
    data, count = supabase.table(table_name).select(",".join(fields_to_query)).eq('author_name', author_name).execute()
    return data[1]