From 126acb0d86a5596be61400f07024ce761b48d3db Mon Sep 17 00:00:00 2001 From: nikhilakki Date: Sat, 24 Jun 2017 14:42:45 +0000 Subject: [PATCH] Done --- build.py | 84 +++++++++++++++++++++++++--- build.pyc | Bin 0 -> 4041 bytes tests/__init__.pyc | Bin 0 -> 162 bytes tests/test_get_user_repos_count.pyc | Bin 0 -> 3048 bytes 4 files changed, 76 insertions(+), 8 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..6c19e8c 100644 --- a/build.py +++ b/build.py @@ -1,22 +1,90 @@ -def get_user_repos_count(username): - pass +import requests, json +import pandas as pd +def get_user_repos_count(username): + url = 'https://api.github.com/users/'+username+'/repos' + r = requests.get(url) + data = json.loads(r.content) + return len(data) if type(data) == list else -1 def get_user_liked_repos_count(username): - pass - + url = 'https://api.github.com/users/'+username+'/starred' + r = requests.get(url) + data = json.loads(r.content) + return len(data) if type(data) == list else -1 def get_user_liked_repos(username): - pass + url = 'https://api.github.com/users/'+username+'/starred' + r = requests.get(url) + data = json.loads(r.content) + df = pd.DataFrame() + if type(data) != list: + return None + for i in data: + df = df.append({'Name':i['full_name'].split('/')[1], 'Url': i['html_url']}, ignore_index=True) + return df def get_user_liked_repos_owners(username): - pass + url = 'https://api.github.com/users/'+username+'/starred' + r = requests.get(url) + data = json.loads(r.content) + df = pd.DataFrame() + if type(data) != list: + return None + for i in data: + df = df.append({'Name':i['full_name'].split('/')[0], 'Url': i['html_url']}, ignore_index=True) + return df def get_owners_liked_repos(username): - pass + url = 'https://api.github.com/users/'+username+'/starred' + r = requests.get(url) + data = json.loads(r.content) + df = pd.DataFrame() + if type(data) != list: + return None + for item in data: + owner_name = item['full_name'].split('/')[0] + owner_url = 'https://github.com/'+owner_name + new_data = json.loads(r.content) + repo_name = item['full_name'].split('/')[1] + repo_url = item['html_url'] + for owner_liked in new_data: + df = df.append({'repo_name': repo_name, 'repo_url': repo_url, 'owner_name': owner_name, + 'owner_profile_url': owner_url, 'repo_liked_by_owner': owner_liked['full_name'].split('/')[1], + 'repo_url_liked_by_owner': owner_liked['html_url']}, ignore_index=True) + return df def get_owners_liked_repos_summary(username): - pass + url = 'https://api.github.com/users/'+username+'/starred' + r = requests.get(url) + data = json.loads(r.content) + if type(data) != list: + return None + df = pd.DataFrame() + for item in data: + owner_name = item['full_name'].split('/')[0] + ##### Making too many requests leads to blocking + #new_r = requests.get('https://api.github.com/users/'+owner_name+'/starred') + owner_url = 'https://github.com/'+owner_name + new_data = json.loads(r.content) + repo_name = item['full_name'].split('/')[1] + repo_url = item['html_url'] + for owner_liked in new_data: + df = df.append({'repo_name': repo_name, 'repo_url': repo_url, 'owner_name': owner_name, + 'owner_profile_url': owner_url, 'repo_liked_by_owner': owner_liked['full_name'].split('/')[1], + 'repo_url_liked_by_owner': owner_liked['html_url']}, ignore_index=True) + lst =[] + for index,row in df['repo_url_liked_by_owner'].value_counts().reset_index().head().iterrows(): + lst.append((row['index'],row['repo_url_liked_by_owner'])) + return lst + +username = 'nikhilakki' +print(get_user_repos_count(username)) +print(get_user_liked_repos_count(username)) +print(get_user_liked_repos(username)) +print(get_user_liked_repos_owners(username)) +print(get_owners_liked_repos(username)) +print(get_owners_liked_repos_summary(username)) diff --git a/build.pyc b/build.pyc new file mode 100644 index 0000000000000000000000000000000000000000..48e91173208c73206f476d1fb1cb814856a398c3 GIT binary patch literal 4041 zcmd^CU2hvz5S_Ih$98NdltLN`ZTYNuXqTrxpsGR;3R0yYZa{&E%G!8ulC{@fckh}e z$bKrngGc@Y4~R#85I+FUnN4iBO-l=|ghVzwJA3clnfo#4%((bRqjvR&t#3PW@>js~ zBi!z1h!Fpt#3H*>-IHDKw7np^MF|V?BL|p6;qA=#NSrOgIdDPWqg9$eF1?%W07^t zbbaDUCelTNN57MTWCiIKWei!;mZD@!GA>fj%F-)HdPlP5la_5Pa=S$bTkZ|W!z>%R z4}CuvM%NFb>~OSqy_59)k+Z4uT^S?%)D9D;vujoGo>8Rs-pIPlWktLk*es*Pu1f}R zEfOa|=-^VMgBCl;yR+k=)p2p;GW{^N1D%SRq{~6jx7ssGIY$v1ueXZ3imNI z|1jxWe-QN!qd4gGB7Y}Idu|wXtlvpO>*s5^mRhW)ZwH}GueoEF*}lIwisJD4@HjgU zGnjgtj@!D(b|)DP)T84f#cO)2-Z}5Tbtasd@3J6GZ8$p>!}%I+nPKD@o{Qn37#@h> zK^h*2?zf>0!=N)YiWPR?UhMw927}Z6jia6o=XaToAKzuplM~j+{|UGowHj!6;<$@2#Ntkg93q3bym_;ASjhaC@stt4AZ6N3*hRw)PcR7*AABf^<5QYY?YYq(R6zT8_7k5cHmR|A<+HoQyTWn5bLkZ7hU+5IC# z&5BW^;ZHRUV`IA2lSIvcXG%uEBPG88L^0T3JgR<`odXmebve32*aCGM-3FJ~ZK_;V zxkkBp_o{qXkV!)(O&Qk(b;r0V;hJplfe-f!tU|ndo8At(w_8NT3rFcJJ~fifn{a9v zDdueoVo*zjy!z0LgQmZ$IyJG(GS0)u(xT@3ARgJg_I8Sl)H;N&x>0Z)+8|UU0cB~L z+;=SogO5V&5<(bzme<3+FR`M{*|X;N;*w(h h`1s7c%#!$cy@JXT4xo89x%nxjIjMFaTZ@610RZmKCTsuz literal 0 HcmV?d00001 diff --git a/tests/test_get_user_repos_count.pyc b/tests/test_get_user_repos_count.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a4c2e78a49206717f5a210d3fa61a5be884ef38 GIT binary patch literal 3048 zcmd5;OK;Oa5FR^eN=ggmRVW}H;t~m!ToB@bDnx-^P!8K7)CkFP<89-{kKkRaiqxLU zKjsI(H{&#MRTuRD0V_M%_0D=8-_EyN`?0j}nmRi@8b3AszeO{zAOidxiil!|x(+!! zb}4eHTce;x+Mzv%f;xRCIw9KW)_HoXHHW3)PdqILJ$nUWTN}IK8{M(@#-mMbz1--` z%k(fcUN6lPJMn_oy+bqW5SrLHY{N{~WskT64_xWMXiYkEV^_Kj3g+a^JgKc#1E1*e z2RSru8))Ve1ir-KNO;Ex?+D`>oj7#t(h<>t*gA6Q#4YCPrMVhm0%mv)t`%lFrKoSi zzzCr5j zhi|zb*_)H`W~P0sGkM+OP%W=FI@+7AETy}JNfKecqSx-jt9B9&`eEb`24VY4nhng* z@9B0g4Rm`ywEcW{Ez`X;j&%~~Y|V^})p6SbT_e(~3i-uwWLIH;)hZPjBC`NN&a%5G z?H?d^AND8iN8vyR<-MsmpNjJt-h~ik6eFV;55*yTIIV zg>oG#7p0p6lmhvT&Ls+jxDKicq|W;mbGAVT^Q?ioDk_DOc44KIoSkO8CFzu8FJZAH zTefxwMPzy76!oy3<;5^GVPdSG^t9!Y83vYNc<)>PW9G-Ygb{yF3QX!^mO!1ah*Ip# zlK&Az58zH^X{3jV&P*jzcd(`?i)-BDO{bXC)D0F)S|u1n`4+!Jn^mbifvJm2r3mdQ zbp9hC`0!vL3g^7ij;X|end;IQi1Ms4;GH$W;CxiiFOz`Vj5SxO!3u8@lIDvgX$r~loq7-*Y7Ke zFN}QPNFWWTSv(8Prrd5NkUR-3r$a%Fk2#z(eiHbmAUOWOti2Yu-V_;KX9o-)=gZDw F?H54g#*+X5 literal 0 HcmV?d00001