davanstrien HF staff commited on
Commit
d0eeb69
1 Parent(s): 565f2f2

chore: Refactor comment posting functionality and improve performance

Browse files
Files changed (1) hide show
  1. app.py +37 -26
app.py CHANGED
@@ -96,9 +96,6 @@ def format_comment(result: str):
96
  return result
97
 
98
 
99
- from typing import Tuple
100
-
101
-
102
  def post_comment(
103
  paper_url: str, comment: str, comment_id: str | None = None, token: str = HF_TOKEN
104
  ) -> Tuple[bool, str]:
@@ -123,9 +120,12 @@ def post_comment(
123
  paper_id = paper_url.split("/")[-1]
124
  if comment_id:
125
  url = f"https://huggingface.co/api/papers/{paper_id}/comment/{comment_id}/reply"
 
 
126
  else:
127
  url = f"https://huggingface.co/api/papers/{paper_id}/comment"
128
-
 
129
  headers = {
130
  "Authorization": f"Bearer {token}",
131
  "Content-Type": "application/json",
@@ -240,36 +240,47 @@ def log_comments(paper_url: str, comment: str):
240
 
241
 
242
  def return_recommendations(
243
- url: str, comment_id: str | None = None, post_to_paper: bool = True
244
  ) -> str:
245
  arxiv_id = parse_arxiv_id_from_paper_url(url)
246
  recommendations = get_recommendations_from_semantic_scholar(f"ArXiv:{arxiv_id}")
247
  filtered_recommendations = filter_recommendations(recommendations)
 
248
  if post_to_paper:
249
- existing_comments, comment_id = check_if_lib_bot_comment_exists(url)
 
 
 
 
 
 
250
  if existing_comments:
251
- gr.Info(f"Existing comment: {comment_id}...skipping posting comment")
 
 
 
 
 
 
 
 
 
 
 
 
252
  else:
253
- comment = format_comment(
254
- format_recommendation_into_markdown(arxiv_id, filtered_recommendations)
 
255
  )
256
- if comment_id:
257
- comment_status, posted_comment_id = post_comment(
258
- url, comment, comment_id, token=HF_TOKEN
259
- )
260
- if comment_status:
261
- log_comments(url, comment)
262
- gr.Info(f"Posted reply to comment {posted_comment_id}")
263
- if not comment_id:
264
- comment_status, posted_comment_id = post_comment(
265
- url, comment, token=HF_TOKEN
266
- )
267
- if comment_status:
268
- log_comments(url, comment)
269
- gr.Info(f"Posted comment {posted_comment_id}")
270
- else:
271
- gr.Info("Failed to post comment")
272
- return format_recommendation_into_markdown(arxiv_id, filtered_recommendations)
273
 
274
 
275
  title = "Semantic Scholar Paper Recommender"
 
96
  return result
97
 
98
 
 
 
 
99
  def post_comment(
100
  paper_url: str, comment: str, comment_id: str | None = None, token: str = HF_TOKEN
101
  ) -> Tuple[bool, str]:
 
120
  paper_id = paper_url.split("/")[-1]
121
  if comment_id:
122
  url = f"https://huggingface.co/api/papers/{paper_id}/comment/{comment_id}/reply"
123
+ gr.Info(f"Replying to comment {comment_id}")
124
+ print(f"Replying to comment {comment_id}")
125
  else:
126
  url = f"https://huggingface.co/api/papers/{paper_id}/comment"
127
+ print(f"Posting comment for {paper_url}")
128
+ gr.Info(f"Posting comment for {paper_url}")
129
  headers = {
130
  "Authorization": f"Bearer {token}",
131
  "Content-Type": "application/json",
 
240
 
241
 
242
  def return_recommendations(
243
+ url: str, comment_id: str | None, post_to_paper: bool = True
244
  ) -> str:
245
  arxiv_id = parse_arxiv_id_from_paper_url(url)
246
  recommendations = get_recommendations_from_semantic_scholar(f"ArXiv:{arxiv_id}")
247
  filtered_recommendations = filter_recommendations(recommendations)
248
+
249
  if post_to_paper:
250
+ formatted_recommendation = format_recommendation_into_markdown(
251
+ arxiv_id, filtered_recommendations
252
+ )
253
+ comment = format_comment(formatted_recommendation)
254
+
255
+ # Check if a librarian-bot comment already exists.
256
+ existing_comments, existing_comment_id = check_if_lib_bot_comment_exists(url)
257
  if existing_comments:
258
+ gr.Info(
259
+ f"Librarian-bot already commented on this paper. Comment ID: {existing_comment_id}. No further action will be taken."
260
+ )
261
+ return formatted_recommendation # Return formatted recommendation without posting.
262
+
263
+ # If no existing librarian-bot comment, check if a specific comment_id is provided for replying.
264
+ if comment_id:
265
+ comment_status, posted_comment_id = post_comment(
266
+ url, comment, comment_id, token=HF_TOKEN
267
+ )
268
+ if comment_status:
269
+ log_comments(url, comment)
270
+ gr.Info(f"Posted reply to comment {posted_comment_id}")
271
  else:
272
+ # If no comment_id is provided, post a new comment.
273
+ comment_status, posted_comment_id = post_comment(
274
+ url, comment, token=HF_TOKEN
275
  )
276
+ if comment_status:
277
+ log_comments(url, comment)
278
+ gr.Info(f"Posted new comment {posted_comment_id}")
279
+
280
+ if not comment_status:
281
+ gr.Info("Failed to post comment")
282
+
283
+ return formatted_recommendation
 
 
 
 
 
 
 
 
 
284
 
285
 
286
  title = "Semantic Scholar Paper Recommender"