From e98b6b69d222950ae5195a95dbb9f383193b42a6 Mon Sep 17 00:00:00 2001 From: melviii100 Date: Mon, 18 Sep 2017 09:19:29 +0000 Subject: [PATCH] Done --- build.py | 75 +++++++++++++++++++++++++--- build.pyc | Bin 0 -> 3950 bytes tests/__init__.pyc | Bin 0 -> 162 bytes tests/test_get_user_repos_count.pyc | Bin 0 -> 3048 bytes 4 files changed, 68 insertions(+), 7 deletions(-) create mode 100644 build.pyc create mode 100644 tests/__init__.pyc create mode 100644 tests/test_get_user_repos_count.pyc diff --git a/build.py b/build.py index 0b86a28..8a120a2 100644 --- a/build.py +++ b/build.py @@ -1,22 +1,83 @@ +import pandas as pd +import numpy as np +import requests + def get_user_repos_count(username): - pass + url = "https://api.github.com/users/{}/repos?access_token=716ae4c6076c25088ba6eeabe6e2909b918beb54".format(username) + req = requests.get(url) + if req.status_code == 200: + repositories = req.json() + return len(repositories) + #if req.status_code == 404 and req.json()['message'] == "Not Found": + # return -1 + return -1 def get_user_liked_repos_count(username): - pass + url = u'https://api.github.com/users/{}/starred?access_token=716ae4c6076c25088ba6eeabe6e2909b918beb54'.format(username) + req = requests.get(url) + if req.status_code == 200: + starred_repos = req.json() + return len(starred_repos) + return -1 def get_user_liked_repos(username): - pass + url = u'https://api.github.com/users/{}/starred?access_token=716ae4c6076c25088ba6eeabe6e2909b918beb54'.format(username) + req = requests.get(url) + starred_repos = req.json() + if req.status_code == 200: + df = pd.DataFrame(starred_repos) + return df[["name", "html_url"]] + return None def get_user_liked_repos_owners(username): - pass - + url = u'https://api.github.com/users/{}/starred?access_token=716ae4c6076c25088ba6eeabe6e2909b918beb54'.format(username) + req = requests.get(url) + starred_repos = req.json() + if req.status_code == 200: + starred_list = [] + for item in starred_repos: + starred_list.append({"name" : item.get("owner").get("login"), "urls" : item.get("owner").get("html_url")}) + return pd.DataFrame(starred_list) + return None # Default return in None def get_owners_liked_repos(username): - pass + url = u'https://api.github.com/users/{}/starred?access_token=716ae4c6076c25088ba6eeabe6e2909b918beb54'.format(username) + req = requests.get(url) + starred_repos = req.json() + if req.status_code != 200: + return None + final_results = [] + for item in starred_repos: + repo_name = item.get("name") + repo_url = item.get("html_url") + owner_name = item.get("owner").get("login") + owner_profile_url = item.get("owner").get("html_url") + + owners_starred_url = 'https://api.github.com/users/{}/starred?access_token=716ae4c6076c25088ba6eeabe6e2909b918beb54'.format(owner_name) + owner_req = requests.get(owners_starred_url) + if owner_req.status_code == 200: + owner_starred_repos = owner_req.json() + for repo in owner_starred_repos: + repo_liked_by_owner = repo.get("name") + repo_url_liked_by_owner = repo.get("html_url") + final_results.append({"repo_name" :repo_name, "repo_url" : repo_url, "owner_name" : owner_name , "owner_profile_url" : owner_profile_url, "repo_liked_by_owner" : repo_liked_by_owner, "repo_url_liked_by_owner" : repo_url_liked_by_owner}) + + df = pd.DataFrame(final_results) + return df def get_owners_liked_repos_summary(username): - pass + df = get_owners_liked_repos(username) + if type(df) != pd.core.frame.DataFrame: # or df.empty: + return None + grp = df.groupby(["repo_url"], sort=True, as_index=False).size() + top_5 = grp.sort_values(ascending=False).head(5) + results = [] + for url in top_5.index: + repo_name = df.loc[df['repo_url'] == url, 'repo_name'].head(1) + results.append((repo_name.values[0], url)) + + return results diff --git a/build.pyc b/build.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a04c6ed8c01771dad1335904b058b2a04795b3c0 GIT binary patch literal 3950 zcmcgvTW=dh6h6Cl?AWoBa4WrVlR%XPYMfTB+aL<4DFIa?5*tKBs$#9ZV`rW9?q+AU zG{t@j@B9HC_$R#fSMVp0cm%$4Ca%*EE~-qN?Ae)}*_ktQzVDl}gLMf|3*}6qKb< zie*}#-#fFX46l@m40Y;^Ug{)88&mRGTr=c+{{#(=#Ttv zS83fg$)1XD-@MxL)%9*`^=7Mk?Z)b@TOGfpl;2S;b!}~Rt+RIZR!4PiTo0dMd|6GS zgpy&?OR}MF46id&`?=Can*u6*Wy}KZ+W02d?QRk%!%hx#5=)0j#p1QR%HGBPP)SRk zMRLb@rY7UUlWb3?epfYl#-`nXE1AL; z3{@Pc?210nMh%;tJdA>s^uWA~Vc=|=U1-bZz}Y;;{=#{lo}4B5t2x!e83ZwZfGPhi zh}hLEQ^8Ea=iNZY< z91qSiJ8&X6js%B&<`t}Sj~$r*!mvZ36thjp&TRXN88#>#k!)O~5t_ioBK2LmuoVzU z$8&9-QM`maLJ^L@t{Fyc@I>_GWB?_0ya$HknFgkU+g;!I8yQoKn>UkKiTfua>oH~J zwV*fqm_9?bV==veN%bO(rCLqswrJzY$m4yMc>aXKbH?*W>LbWSdh|Jm^zMUCXbc4{ z(qN842rXjma(p4ET!6~rIGCf>$%c|Nl&OVwXMcmXA%cT44}=F66&#;4Lj`Y5@@=d# z(W@xwhq1@(^mscZ)If=DFarJ_CcMXfnnEAFCGN=V@?L-unLiaG%)N;MM4>h^RS037 zJ!&pts#BFf)~(-WPhNzXf~VxvopoGY7ByZ6FHiuqjVI3opaNyLIVIRS0@3dlM864$ zj$vmE!LU^U#2Co1)wv0>1VH2YzdX17C4Jz8V4nMrtCNJFD%AxVEgX}mdr}2v0qhz* z>d~kMVBe>4oksO3p2v%ms-0s=U|*sTz9N&E2gs4fRB%HUQ^gHVEa0|CK@GPh3hGC2 z|An^q?-BmDO_>H*gB@_0M$1q`M%-E9eu{CAMa6psM*r^zrwA#h2<@jrEHzG8s_;Mn zY1mxgl~m8Idx(_=@<3R?8LFjG}1I;;zv%bj=5yOW&GKDmRss0HUZPu1cHD(2bj z+@|I@A(59OS-|PB2W@yyv;l263Lr0ioE>Arj+95?fz)aSDWSKjec&kP)(ohPcQA>oQ6*f;mW) zpiXMtBvWz*^*G6x9wAT)#3)Phv~wUGzsz#mal?+iSlN#SIMsgWNBkMVY09qh z0~yqMSiqww=?dQECBLyJsg=ir^B(W^Wo6X z4n9K<&5A`%&AH?hop)eM&a!jadBbf;^2O*&{W$Qo-CPbtoDcD(!r5G$+Dx70#^XcS wV-k9tEqfdpZw+R;GAYgKOKBcMe=tmfJW?MrC^Y8@H7um&Ru(FiN)`6vpLQT|UH||9 literal 0 HcmV?d00001 diff --git a/tests/__init__.pyc b/tests/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e332092a1c74b24dc98393bfcdd461161c3f09bd GIT binary patch literal 162 zcmZSn%*%DZeSc&!0~9acM$jzha=$~BD@2PYjot$p-TruyJG9Wr6aePtC!|#gbA48Ik;As zSt~_-9R_wPVzl#YK82XQnk2QoOdFk8$<&^o^?cjyhjY+t)*&qCb1M&{K)F1; z2;m!~&c6AS`;omm9Is~Dw>p#8O%B!adZVN5(aKV~o0udK<|BHoF1%{RI{F-j;nSt1 z)`v9PGd;hfTb(q}t)0+z^R2~9chWf4NuaYu(>GSfEemvwNUtj7C%wL1fB{ykRA7kA zGz2+w?u@j5fY@!=AG#lfdpaoZO~v_CoX_wkgdn3B8O3-g4na-vgy`{}FD4rN4sBeC zz7JC;6MZU_%TPHh-5j74$a{3oQ6R*1P*osx-nW>ule9a<8mOzHQaEX6R!Yg)QO28+ zPD%DG7E7{aYp^16my!o!h%Vw1cNAF<9BG|DwPK? zb#|!~p*@7oe*^>{9t=d`oLAa0l^8Hnof`vD9ybQOvxXR)j_UDw(vK7TPf^u?r}*?g zCNLcG3-%;~G1-?H>>kF|sCXuiV?XPU&8wsDeoNEeeelcCvXdD$|y%8aGyt z;OcL%I*#=j)XWUT=ro^qBx1SXcwPbu_B`Qj&x_L_k1$kB56Gk-Gvy@ zg7p6SeMRwwkq;aRWYTFA&vc_9w_6D$PeRM-P*CGz4(E)Y1imQ