Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/command_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ def create_parser(self):
parser_list = subparsers.add_parser('list', help='List all subscriptions')
parser_list.set_defaults(func=self.list_subscriptions)

parser_fetch = subparsers.add_parser('fetch', help='Fetch updates immediately')
parser_fetch = subparsers.add_parser('fetch', help='Fetch updates for subscribed repositories')
parser_fetch.add_argument('repo', type=str, help='Repository name in format owner/repo')
parser_fetch.set_defaults(func=self.fetch_updates)

parser_export = subparsers.add_parser('export', help='Export daily progress')
Expand Down Expand Up @@ -58,7 +59,7 @@ def list_subscriptions(self, args):
print(f" - {sub}")

def fetch_updates(self, args):
updates = self.github_client.fetch_updates()
updates = self.github_client.fetch_updates(args.repo)
for update in updates:
print(update)

Expand Down
9 changes: 9 additions & 0 deletions src/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"github_token": "123312********",
"notification_settings": {
"email": "your_email@example.com",
"slack_webhook_url": "your_slack_webhook_url"
},
"subscriptions_file": "subscriptions.json",
"update_interval": 86400
}
11 changes: 10 additions & 1 deletion src/github_client.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
# src/github_client.py
from pprint import pprint

import requests
import datetime

class GitHubClient:
def __init__(self, token):
self.token = token
self.headers = {'Authorization': f'token {self.token}'}
self.headers = {
'Authorization': f'token {self.token}',
'Accept': 'application/vnd.github.v3+json'
}

def fetch_updates(self, repo):
# 获取特定 repo 的更新(commits, issues, pull requests)
pprint(f"repo:{repo}")
updates = {
'commits': self.fetch_commits(repo),
'issues': self.fetch_issues(repo),
Expand All @@ -19,18 +24,22 @@ def fetch_updates(self, repo):

def fetch_commits(self, repo):
url = f'https://api.github.com/repos/{repo}/commits'
pprint(f"repo:{repo}")
pprint(f"repo--url:{url}")
response = requests.get(url, headers=self.headers)
response.raise_for_status()
return response.json()

def fetch_issues(self, repo):
url = f'https://api.github.com/repos/{repo}/issues'
print(f"url:{url}")
response = requests.get(url, headers=self.headers)
response.raise_for_status()
return response.json()

def fetch_pull_requests(self, repo):
url = f'https://api.github.com/repos/{repo}/pulls'
print(f"url:{url}")
response = requests.get(url, headers=self.headers)
response.raise_for_status()
return response.json()
Expand Down
36 changes: 24 additions & 12 deletions src/llm.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
# src/llm.py

import os
from openai import OpenAI
import logging
from openai import OpenAI, APIConnectionError, RateLimitError

class LLM:
def __init__(self):
self.client = OpenAI()
if not os.getenv("OPENAI_API_KEY"):
raise ValueError("OPENAI_API_KEY environment variable not set")
self.client = OpenAI(timeout=300)

def generate_daily_report(self, markdown_content, dry_run=False):
prompt = f"以下是项目的最新进展,根据功能合并同类项,形成一份简报,至少包含:1)新增功能;2)主要改进;3)修复问题;:\n\n{markdown_content}"
Expand All @@ -14,13 +17,22 @@ def generate_daily_report(self, markdown_content, dry_run=False):
f.write(prompt)
return "DRY RUN"

print("Before call GPT")
response = self.client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": prompt}
]
)
print("After call GPT")
print(response)
return response.choices[0].message.content
logging.info("Calling GPT API")
try:
response = self.client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": prompt}
],
timeout=30
)
return response.choices[0].message.content
except APIConnectionError as e:
logging.error(f"API connection error: {e}")
raise
except RateLimitError as e:
logging.error(f"Rate limit exceeded: {e}")
raise
except Exception as e:
logging.error(f"Unexpected error: {e}")
raise
3 changes: 3 additions & 0 deletions src/subscription_manager.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import json
from pprint import pprint


class SubscriptionManager:
def __init__(self, subscriptions_file):
Expand All @@ -17,6 +19,7 @@ def list_subscriptions(self):
return self.subscriptions

def add_subscription(self, repo):
pprint(f"repo:{repo}")
if repo not in self.subscriptions:
self.subscriptions.append(repo)
self.save_subscriptions()
Expand Down
4 changes: 4 additions & 0 deletions src/subscriptions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[
"langchain-ai/langchain",
"DjangoPeng/openai-quickstart"
]