File size: 3,767 Bytes
d82d9bc
 
 
672a01e
d82d9bc
 
 
353e6b2
d82d9bc
 
 
 
943ba68
d82d9bc
 
 
 
 
 
 
 
 
 
 
 
 
 
f4eb7a2
4c413f1
 
 
4b08d28
72c7a0a
6440752
 
 
 
72c7a0a
 
 
 
6440752
 
 
 
72c7a0a
6440752
72c7a0a
64e2bcf
7880100
4b08d28
 
 
d82d9bc
 
 
 
 
7880100
d82d9bc
 
 
 
 
 
 
22c0846
d82d9bc
 
 
ea7c078
 
353e6b2
ea7c078
 
 
 
 
b813dda
64e2bcf
 
 
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import json
import os
import dotenv
import html
from summarize_paper import summarize_paper
from fetch_data import fetch_paper_data_with_category
from post_blog import post_blog
from send_mail import send_email

dotenv.load_dotenv()
access_key = os.getenv("ACCESS_KEY")

def paper_data(paper_data, wait_time=5):
    data = {"status": "success"}
    data['data'] = {}
    paper_data = json.loads(paper_data)
    for category, papers in paper_data.items():
            print(f"Processing category: {category}")
            data['data'][category] = {}
            for paper_id, details in papers.items():
                doi = details.get("doi")
                pdf_url = details.get("pdf_url")
                title = details.get("title")
                citation = details.get("citation")
                if not all([paper_id, doi, pdf_url, title, citation]):
                    print(f"Skipping paper with ID: {paper_id} (missing details)")
                    continue
                summary, mindmap = summarize_paper(pdf_url, paper_id, access_key)
                if not summary or not mindmap:
                    print(f"Skipping paper with ID: {paper_id} (summary/mindmap not found)")
                    continue
                try:
                    try:
                        try:
                            escaped_title = repr(title.encode('latin1').decode('unicode-escape', errors='replace')).strip()
                        except:
                            escaped_title = repr(title).strip().encode('latin1', errors='replace').decode('utf-8', errors='replace')
                    except:
                        escaped_title = repr(title).strip()
                    title = html.escape(str(escaped_title).strip()[1:-1])
                    try:
                        try:
                            encoded_bytes = citation.encode('latin1').decode('unicode-escape', errors='replace')
                        except:
                            encoded_bytes = repr(citation).strip().encode('latin1').decode('utf-8', errors='replace')
                    except:
                        encoded_bytes = repr(citation).strip()
                    citation = html.unescape(encoded_bytes)
                    print(f"Posting blog '{title}'")
                    status = post_blog(doi, title, category, summary, mindmap, citation, access_key, wait_time)
                except Exception as e:
                    print(f"Error posting blog '{title}': {e}")
                    continue
                data['data'][category][paper_id] = {
                    "id": paper_id,
                    "doi": doi,
                    "title": title,
                    "category": category,
                    "posted": status,
                    "citation": citation,
                    "summary": summary,
                    "mindmap": mindmap,
                }
    data = json.dumps(data, indent=4, ensure_ascii=False)
    return data

def post_blogpost(uaccess_key, wait_time=5):
    if uaccess_key != access_key:
        return False
    data = fetch_paper_data_with_category(uaccess_key)
    pdata = paper_data(data, wait_time)
    try:
        send_email(pdata)
        print("\n-------------------------------------------------------\nMail Sent\n-------------------------------------------------------\n")
    except Exception as e:
        print(f"\n-------------------------------------------------------\nError sending mail: {e}\n-------------------------------------------------------\n")
    finally:
        print("\n-------------------------------------------------------\nProcess Completed\n-------------------------------------------------------\n")
    return pdata

if __name__ == "__main__":
    post_blogpost(access_key)