Skip to content

Commit

Permalink
update: optimize params and retrival with kwargs
Browse files Browse the repository at this point in the history
  • Loading branch information
Hk669 committed Jul 2, 2024
1 parent 47e27cd commit 12628d1
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 12 deletions.
8 changes: 5 additions & 3 deletions src/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,23 @@

class User(BaseModel):
username:str
extra_topics: list = []


@app.post('/recommendations/')
async def get_recommendations(user: User) -> dict:
username = user.username
extra_topics = user.extra_topics or []

try:
print(f'Fetching recommendations for {username}')
user_details, language_topics = await get_repos(username)
print(f'--------\n{user_details}')
print(f'--------\n{language_topics}')
unique_repos = await main(language_topics)
unique_repos = await main(language_topics, extra_topics)
print(f'--------\n{unique_repos}')
urls = recommend(user_details,unique_repos)
return {'recommendations': urls}
# urls = recommend(user_details,unique_repos)
return {'recommendations': unique_repos}
except Exception as e:
print(e)
raise HTTPException(status_code=500, detail = 'Error generating recommendatoins')
Expand Down
20 changes: 11 additions & 9 deletions src/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import asyncio
from datetime import datetime
from aiohttp import ClientSession
from typing import Literal, Union, Optional
from typing import Optional, List
from dotenv import load_dotenv
load_dotenv()

Expand Down Expand Up @@ -38,7 +38,7 @@ async def search_repositories(octokit: Octokit, params: Optional[dict]):
response = await octokit.request('GET', '/search/repositories', params)
unique_repos = {}

while len(response['items']) > 0 and params['page'] <= 10:
while len(response['items']) > 0 and params['page'] <= 3:
for item in response['items']:
if item['id'] not in unique_repos:
unique_repos[item['id']] = {
Expand All @@ -52,24 +52,26 @@ async def search_repositories(octokit: Octokit, params: Optional[dict]):
return unique_repos

# Define the main function
async def main(language_topics):
async def main(language_topics,
extra_topics: List = None,
extra_languages: List = None):
unique_repos = {}

async with ClientSession() as session:
octokit = Octokit(GPAT, session)

languages = language_topics['languages']
topics = language_topics['topics']
languages = extra_languages + language_topics['languages'] if extra_languages else language_topics['languages']
topics = extra_topics + language_topics['topics'] if extra_topics else language_topics['topics']

tasks = []

for language in languages:
for language in languages[:5]:
print(f"Searching for {language} repositories")
base_params = {
'q': f'stars:>=2000 forks:>=500 language:{language} pushed:>=2024-01-01',
'sort': 'stars',
'order': 'desc',
'per_page': 30,
'per_page': 7,
'page': 1,
}

Expand All @@ -81,13 +83,13 @@ async def main(language_topics):
good_first_issues_params['q'] += ' good-first-issues:>=1'
tasks.append(asyncio.create_task(search_repositories(octokit, good_first_issues_params)))

for topic in topics:
for topic in topics[:7]:
print(f"Searching for {topic} repositories")
base_params = {
'q': f'stars:>=2000 forks:>=500 topic:{topic} pushed:>=2024-01-01',
'sort': 'stars',
'order': 'desc',
'per_page': 30,
'per_page': 7,
'page': 1,
}

Expand Down

0 comments on commit 12628d1

Please sign in to comment.