commit
296c2ce840
@ -0,0 +1 @@
|
|||||||
|
{u'expr': u'Id = 1912875929', u'entities': [{u'logprob': -11.773, u'Id': 1912875929}]}
|
@ -0,0 +1,41 @@
|
|||||||
|
Total Size: 39
|
||||||
|
[2094437628, 2273736245]
|
||||||
|
[2094437628, 3880285, 2094437628, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2094437628, 2273736245]
|
||||||
|
[2094437628, 2311122994, 2094437628, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2088397685, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2054283902, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2021067283, 2273736245]
|
||||||
|
[2094437628, 2311122994, 2021067283, 2273736245]
|
||||||
|
[2094437628, 2311122994, 2136111777, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2136111777, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2067111928, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2086923594, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2033935581, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2053077389, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2003918905, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2048481564, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2017318430, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2067477861, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2046860686, 2273736245]
|
||||||
|
[2094437628, 2311122994, 2046860686, 2273736245]
|
||||||
|
[2094437628, 2273736245, 1996704434, 2273736245]
|
||||||
|
[2094437628, 2311122994, 1996704434, 2273736245]
|
||||||
|
[2094437628, 2273736245, 1991518848, 2273736245]
|
||||||
|
[2094437628, 2311122994, 1991518848, 2273736245]
|
||||||
|
[2094437628, 2311122994, 2272756406, 2273736245]
|
||||||
|
[2094437628, 2273736245, 2272756406, 2273736245]
|
||||||
|
[2094437628, 2311122994, 1928727717, 2273736245]
|
||||||
|
[2094437628, 2273736245, 1928727717, 2273736245]
|
||||||
|
[2094437628, 2273736245, 165450437, 2273736245]
|
||||||
|
[2094437628, 2311122994, 165450437, 2273736245]
|
||||||
|
[2094437628, 124657808, 2094437628, 2273736245]
|
||||||
|
[2094437628, 121332964, 2094437628, 2273736245]
|
||||||
|
[2094437628, 124657808, 2088397685, 2273736245]
|
||||||
|
[2094437628, 121332964, 2088397685, 2273736245]
|
||||||
|
[2094437628, 124657808, 2054283902, 2273736245]
|
||||||
|
[2094437628, 121332964, 2067111928, 2273736245]
|
||||||
|
[2094437628, 121332964, 2033935581, 2273736245]
|
||||||
|
[2094437628, 121332964, 2067477861, 2273736245]
|
||||||
|
[2094437628, 121332964, 2046860686, 2273736245]
|
||||||
|
total time: 6143
|
@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"expr" : "Composite(AA.AuId = 2014261844)",
|
||||||
|
"entities" :
|
||||||
|
[{ "logprob":-19.889, "Id":2114096741, "Ti":"a survey of geodesic paths on 3d surfaces", "Y":2011, "CC":11, "RId":[2149906774, 2256863592, 1999244633, 1238092070, 1999690352, 2166164984, 2054113582, 2084224084, 2161253909, 2159361280, 2130726152, 1999545213, 2108567935, 2280326949, 2141409037, 2005276292, 2028769163, 1990466879, 2331180561, 2081777693, 2170220350, 1989723858, 2129612824, 2074537686, 2169528473, 2120424341, 2072019354, 2042746037, 2029649144, 2074682596, 613480278, 2159549579, 2112346596, 1984697939, 1980197133, 1014505, 240977677, 1999558884, 2132432991, 2167732668, 2094360223, 2018164813, 2012669981, 2049480565, 2024733248, 98519300, 2123631536, 2089694170, 2114121462, 1579058916, 2017117017, 2047629658, 2079841800, 1972774658, 1974931598, 2162703138, 1526047146, 2037134555, 2109278560, 2134422883, 2053723042, 1993264991, 2122845873, 2019758632, 2162114735, 1810598584, 2147690196, 49068151, 1497277914, 2042706118, 1998692689, 1977998901], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2154897350,"AfId":67031392}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2014261844,"AfId":197604219}], "F":[{"FId":22590252}, {"FId":157498722}, {"FId":29123130}, {"FId":2524010}, {"FId":33923547}], "J":{"JId":165542689} },
|
||||||
|
{ "logprob":-19.916, "Id":2156148354, "Ti":"algorithms for optimal outlier removal", "Y":2009, "CC":7, "RId":[2005314985, 2026771935, 2029948740, 145790213, 2339150939, 2059985428, 1972858511, 2110507702, 2046227217, 2010790640, 2048493433, 2042473201, 2102902634, 1516306206, 2302532677, 1968215127, 1977838112, 2044445959, 2005311123, 2167927607, 2123817071, 148814178], "AA":[{"AuId":2057698039,"AfId":67031392}, {"AuId":2120994602,"AfId":67031392}, {"AuId":2138755643,"AfId":67031392}, {"AuId":2154897350,"AfId":67031392}, {"AuId":2160857524,"AfId":67031392}, {"AuId":2169685232,"AfId":67031392}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":206194317}, {"FId":176222170}, {"FId":29123130}, {"FId":33923547}], "J":{"JId":163424111} },
|
||||||
|
{ "logprob":-19.974, "Id":2131970932, "Ti":"shrec 10 track non rigid 3d shape retrieval", "Y":2010, "CC":16, "RId":[2151103935, 2131846894, 1625255723, 2099789128, 2056132907, 2131791003, 1999690352, 2159361280, 2106629076, 2071866949, 1982465050, 2172246656, 2151245724, 2063513338, 2084286148, 2084548435, 1885760432, 2238971733, 2123631536], "AA":[{"AuId":2097668895,"AfId":1321296531}, {"AuId":2134662681,"AfId":1321296531}, {"AuId":2171331403,"AfId":99464096}, {"AuId":2133292699,"AfId":66906201}, {"AuId":2190956648,"AfId":99464096}, {"AuId":2166627689,"AfId":66906201}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2146978970,"AfId":99464096}, {"AuId":2096876795,"AfId":99464096}, {"AuId":2030948482,"AfId":99464096}, {"AuId":2014261844,"AfId":197604219}] },
|
||||||
|
{ "logprob":-20.036, "Id":2099361645, "Ti":"linear reconfiguration of cube style modular robots", "Y":2009, "CC":7, "RId":[1526777436, 2164380970, 2126295536, 2117416080, 2056453745, 2059661411, 1012009150, 2169676578, 2231045347, 1508698264], "AA":[{"AuId":76407621,"AfId":132053463}, {"AuId":2047536997,"AfId":132053463}, {"AuId":2139371818,"AfId":7863295}, {"AuId":380982395,"AfId":63966007}, {"AuId":2300589195,"AfId":920285187}, {"AuId":695374658,"AfId":132053463}, {"AuId":1995729299,"AfId":202524275}, {"AuId":2102544858,"AfId":178766854}, {"AuId":1985301561,"AfId":9617848}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":193435613}, {"FId":114614502}, {"FId":33923547}], "J":{"JId":165542689} },
|
||||||
|
{ "logprob":-20.070, "Id":2052243599, "Ti":"statistical analysis of 3d faces in motion", "Y":2013, "CC":4, "RId":[], "AA":[{"AuId":57898110,"AfId":91712215}, {"AuId":2014261844,"AfId":91712215}] },
|
||||||
|
{ "logprob":-20.162, "Id":1012009150, "Ti":"reconfiguration of cube style modular robots using o log n parallel moves", "Y":2008, "CC":7, "RId":[2117416080, 2056453745], "AA":[{"AuId":76407621}, {"AuId":2047536997}, {"AuId":380982395}, {"AuId":695374658}, {"AuId":1985301561}, {"AuId":2014261844}], "J":{"JId":106296714} },
|
||||||
|
{ "logprob":-20.223, "Id":2109991685, "Ti":"efficient constant velocity reconfiguration of crystalline robots", "Y":2011, "CC":4, "RId":[2101392651, 2149841830, 1909393615, 2167382904, 1526777436, 1999730797, 2149602461, 1972350, 1976620677, 2121795633, 2164380970, 1566041730, 2126295536, 2032219063, 2117416080, 2140517064, 2132817270, 2035233472, 1982236134, 1972590691, 2056453745, 2033719238, 2163689710, 2164438790, 2104005082, 2188492432, 2099361645, 2116110704, 2056053005, 119161764, 2044917890, 1487445608, 2145386076, 2333066315, 2294545116], "AA":[{"AuId":76407621}, {"AuId":2307369388,"AfId":132053463}, {"AuId":2139371818,"AfId":7863295}, {"AuId":380982395,"AfId":63966007}, {"AuId":2300589195,"AfId":920285187}, {"AuId":695374658,"AfId":132053463}, {"AuId":1995729299,"AfId":202524275}, {"AuId":135182615,"AfId":35462925}, {"AuId":2102544858,"AfId":178766854}, {"AuId":2303622677,"AfId":906480834}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":81074085}, {"FId":154945302}, {"FId":41008148}], "J":{"JId":92163612} },
|
||||||
|
{ "logprob":-20.313, "Id":2107465918, "Ti":"filling holes in triangular meshes by curve unfolding", "Y":2009, "CC":5, "RId":[1977758817, 2129412583, 2061010610, 2237825899, 2129098897, 1543226262, 1998255762, 2171542563, 2081507207, 2045471990, 2121669559, 2008151176, 1909076809, 2018110063, 1991845454, 2056725994, 1583585595, 2008888582, 2034609976, 1708197474, 2017477785, 2105522022, 1521071054], "AA":[{"AuId":1984903675,"AfId":197604219}, {"AuId":2014261844,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2120994602,"AfId":67031392}, {"AuId":380982395,"AfId":63966007}] },
|
||||||
|
{ "logprob":-20.314, "Id":2159031003, "Ti":"landmark free posture invariant human shape correspondence", "Y":2011, "CC":9, "RId":[2237250383, 2049981393, 2119851068, 334078648, 1989191365, 2104480174, 2025062188, 2159361280, 2098578926, 2098466221, 2123487031, 2042246564, 2064499898, 1969076082, 2026935851, 1944448249, 2115298906, 2037149239, 2141387879, 2003014378, 1542263132, 2113000721], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2099631723,"AfId":197604219}], "F":[{"FId":41008148}], "J":{"JId":73060445} },
|
||||||
|
{ "logprob":-20.384, "Id":2002018157, "Ti":"π 2 angle yao graphs are spanners", "Y":2012, "CC":5, "RId":[2095977717], "AA":[{"AuId":2120994602}, {"AuId":2139371818}, {"AuId":286320687}, {"AuId":1995729299}, {"AuId":812850721}, {"AuId":2007139549}, {"AuId":2014261844}], "F":[{"FId":29302406}, {"FId":33923547}], "J":{"JId":25827807} },
|
||||||
|
{ "logprob":-20.388, "Id":1936186068, "Ti":"building statistical shape spaces for 3d human modeling", "Y":2015, "CC":1, "RId":[], "AA":[{"AuId":308162991,"AfId":149899117}, {"AuId":2014261844}, {"AuId":209677723}, {"AuId":214804705,"AfId":149899117}, {"AuId":1620943014,"AfId":149899117}] },
|
||||||
|
{ "logprob":-20.429, "Id":2010532093, "Ti":"a low dimensional representation for robust partial isometric correspondences computation", "Y":2014, "CC":2, "RId":[2237250383, 1989191365, 2137306662, 1992187125, 2100657858, 2211546658, 1513908640, 2117888987, 2159361280, 2098578926, 2004402003, 2122578066, 2105106232, 1985290145, 2098466221, 2104198297, 2127025496, 2123487031, 2073431710, 1982465050, 2180873826, 1985222241, 1993846356, 1983445044, 2040436296, 1969076082, 2047161559, 1965805571, 2053126129, 2130595631, 2294879381, 2065270678, 1709959390, 2016663152, 2166606682, 2037149239, 2100187127, 2012385660, 2093544140, 2151917516, 2105591368, 2123631536, 2045323633, 1989995855, 2112192224, 2013273872], "AA":[{"AuId":1984903675,"AfId":149899117}, {"AuId":2101927313,"AfId":149899117}, {"AuId":2014261844}, {"AuId":2135052836,"AfId":149899117}, {"AuId":73181535,"AfId":149899117}], "J":{"JId":137436721} },
|
||||||
|
{ "logprob":-20.483, "Id":2123631536, "Ti":"posture invariant correspondence of incomplete triangular manifolds", "Y":2011, "CC":10, "RId":[1989191365, 2051434435, 2159361280, 2143030836, 2091626191, 2140500712, 1999597013, 2041771459, 1997744504], "AA":[{"AuId":2014261844}, {"AuId":2132968838}, {"AuId":2120994602}, {"AuId":2127044776}], "J":{"JId":68340538} },
|
||||||
|
{ "logprob":-20.486, "Id":1981018417, "Ti":"segmenting animated objects into near rigid components", "Y":2009, "CC":13, "RId":[2099789128, 2122007052, 2104480174, 2023808821, 1993962870, 2160994953, 1572663059, 2052728883, 2121717885, 2123487031, 2168907905, 2108891011, 1969076082, 2091715846, 2071894871, 2110340327, 2155953655, 2104680386, 2208573830], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":1984903675,"AfId":197604219}], "F":[{"FId":45633534}, {"FId":29123130}, {"FId":2524010}], "J":{"JId":73060445} },
|
||||||
|
{ "logprob":-20.549, "Id":1987121049, "Ti":"human shape correspondence with automatically predicted landmarks", "Y":2012, "CC":4, "RId":[2119851068, 1540992968, 2099606917, 1989191365, 2104480174, 2098466221, 2115298906], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2099631723,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}], "C":{"CId":1155500043} },
|
||||||
|
{ "logprob":-20.668, "Id":1487445608, "Ti":"realistic reconfiguration of crystalline and telecube robots", "Y":2009, "CC":2, "RId":[1526777436, 2117416080, 2056453745, 2188492432], "AA":[{"AuId":76407621,"AfId":132053463}, {"AuId":2047536997,"AfId":132053463}, {"AuId":2139371818,"AfId":7863295}, {"AuId":380982395,"AfId":63966007}, {"AuId":1723144653,"AfId":60158472}, {"AuId":2300589195,"AfId":920285187}, {"AuId":695374658,"AfId":132053463}, {"AuId":1995729299,"AfId":202524275}, {"AuId":135182615,"AfId":35462925}, {"AuId":2102544858,"AfId":102322142}, {"AuId":1985301561,"AfId":9617848}, {"AuId":2014261844,"AfId":67031392}] },
|
||||||
|
{ "logprob":-20.673, "Id":268639037, "Ti":"automatic location of landmarks used in manual anthropometry", "Y":2014, "CC":0, "RId":[2153635508, 2295332248, 2171490473, 1510526001, 1569530544, 2154980168, 1735588541, 1994359450, 2003014378, 2059393299, 1985851765, 2079294336], "AA":[{"AuId":2157123513,"AfId":119439378}, {"AuId":2131007269,"AfId":119439378}, {"AuId":1996155268,"AfId":119439378}, {"AuId":2103542331,"AfId":136259955}, {"AuId":2174370829,"AfId":60158472}, {"AuId":1965603897,"AfId":142476485}, {"AuId":2225981013,"AfId":99464096}, {"AuId":2134662681,"AfId":1321296531}, {"AuId":2139958683,"AfId":1321296531}, {"AuId":168721329,"AfId":142476485}, {"AuId":2232402393,"AfId":142476485}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2135990543,"AfId":99464096}, {"AuId":2096876795,"AfId":99464096}, {"AuId":728773384,"AfId":136259955}, {"AuId":2030948482,"AfId":99464096}, {"AuId":2014261844,"AfId":91712215}, {"AuId":2099631723,"AfId":197604219}] },
|
||||||
|
{ "logprob":-20.718, "Id":2084142581, "Ti":"establishing strong connectivity using optimal radius half disk antennas", "Y":2013, "CC":3, "RId":[2093381928, 2104142168, 2120296177, 2009782889, 2112970581, 2102709759, 2154743412, 2147322856, 42897049], "AA":[{"AuId":76407621}, {"AuId":2139371818}, {"AuId":2300589195}, {"AuId":2140429713}, {"AuId":2280126321}, {"AuId":2133297015}, {"AuId":2014261844}], "F":[{"FId":64671776}, {"FId":13743678}, {"FId":94523657}, {"FId":114614502}, {"FId":33923547}], "J":{"JId":165542689} },
|
||||||
|
{ "logprob":-20.718, "Id":2143039717, "Ti":"estimating 3d human shapes from measurements", "Y":2011, "CC":5, "RId":[2153504150, 2158179171, 2020466163, 2005645152, 2280326949, 2077557812, 2030575031, 1987121049], "AA":[{"AuId":2014261844,"AfId":91712215}, {"AuId":2132968838,"AfId":197604219}], "F":[{"FId":153180895}, {"FId":60627051}, {"FId":41008148}], "C":{"CId":1155500043} },
|
||||||
|
{ "logprob":-20.781, "Id":2093088, "Ti":"correspondences of persistent feature points on near isometric surfaces", "Y":2012, "CC":1, "RId":[2222512263, 2137306662, 2166820607, 2100657858, 1590776313, 2064020260, 2130646036, 2161253909, 2105106232, 2127025496, 2123487031, 2073431710, 2146019744, 1969076082, 1970279742, 2102838323, 2147373864, 1993167366, 2095705972], "AA":[{"AuId":2276897403,"AfId":149899117}, {"AuId":2130756756,"AfId":149899117}, {"AuId":2014261844,"AfId":149899117}, {"AuId":1984903675}, {"AuId":1995219829}, {"AuId":2135052836,"AfId":149899117}, {"AuId":73181535,"AfId":149899117}], "C":{"CId":1124077590} },
|
||||||
|
{ "logprob":-20.810, "Id":2149284486, "Ti":"automatically creating design models from 3d anthropometry data", "Y":2012, "CC":4, "RId":[1975442866, 2337065094, 334078648, 2211546658, 2104198297, 2100961486, 1944448249, 2157100308, 2067482733, 2028666973, 2003014378, 2036834050, 2055824434, 2159031003, 1995061439, 1503456783, 2170244379], "AA":[{"AuId":2014261844}, {"AuId":2132968838}, {"AuId":2120994602}], "F":[{"FId":73586568}, {"FId":46886674}, {"FId":39840566}, {"FId":29123130}, {"FId":2524010}, {"FId":33923547}], "J":{"JId":173178594} },
|
||||||
|
{ "logprob":-20.817, "Id":184244079, "Ti":"pi 2 angle yao graphs are spanners", "Y":2010, "CC":3, "RId":[2031671531, 2095977717], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2139371818,"AfId":7863295}, {"AuId":286320687,"AfId":67031392}, {"AuId":1995729299,"AfId":202524275}, {"AuId":812850721,"AfId":67031392}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":197604219}], "C":{"CId":1175727152} },
|
||||||
|
{ "logprob":-20.828, "Id":2057922595, "Ti":"posture invariant surface description and feature extraction", "Y":2010, "CC":4, "RId":[2124386111, 2153504150, 2295382923, 1999690352, 1590776313, 2025062188, 2130646036, 2159361280, 2121717885, 2098578926, 2134448913, 1969076082, 2103525210, 2151694303, 2161813446], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2127044776,"AfId":29607241}, {"AuId":2132968838,"AfId":197604219}], "F":[{"FId":178207025}, {"FId":194401833}, {"FId":52102323}, {"FId":181145010}, {"FId":9083635}, {"FId":77304879}, {"FId":124504099}, {"FId":64876066}, {"FId":97970142}, {"FId":52622490}, {"FId":198107850}, {"FId":1674844}, {"FId":205372480}, {"FId":9417928}, {"FId":31972630}, {"FId":41008148}], "C":{"CId":1158167855} },
|
||||||
|
{ "logprob":-20.843, "Id":1988539193, "Ti":"three dimensional human shape inference from silhouettes reconstruction and validation", "Y":2011, "CC":4, "RId":[2104974755, 1989191365, 2117007522, 1999690352, 2164942161, 1494238748, 1967490225], "AA":[{"AuId":1970210942}, {"AuId":2132968838}, {"AuId":2014261844}, {"AuId":2099631723}], "C":{"CId":1155500043} },
|
||||||
|
{ "logprob":-20.856, "Id":2048359624, "Ti":"fully automatic expression invariant face correspondence", "Y":2014, "CC":3, "RId":[2140190241, 2152826865, 2237250383, 2019599312, 334078648, 2051434435, 2137306662, 1992187125, 2161116336, 2153759571, 2159361280, 2098578926, 2137821246, 1985290145, 2130093472, 2135042441, 2135666716, 2158054470, 1976295221, 2097365005, 2104539097, 2047836041, 2116258886, 2128258626, 2151231840, 2003014378, 1967879679, 2159031003, 1966800193, 1601628837, 2093120612, 2136500581, 2102717885, 2086359182, 2148535600, 2306421343], "AA":[{"AuId":2331953835,"AfId":84593992}, {"AuId":2014261844,"AfId":91712215}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2099866554,"AfId":36243813}], "F":[{"FId":14961307}], "C":{"CId":1155500043} },
|
||||||
|
{ "logprob":-20.887, "Id":2034643056, "Ti":"estimation of human body shape and posture under clothing", "Y":2014, "CC":1, "RId":[2159080219, 2099940712, 1540992968, 1989191365, 2051434435, 2104480174, 1999690352, 2211546658, 2159361280, 2158179171, 2122578066, 2071866949, 2165258384, 2098466221, 2088230067, 2109752307, 1993846356, 1965805571, 2075834168, 1944448249, 2074407824, 2154750607, 2026861142, 2159031003, 2080666679, 2114621449], "AA":[{"AuId":2014261844}, {"AuId":308162991,"AfId":149899117}, {"AuId":1984903675}, {"AuId":2305398014}, {"AuId":2308397549}], "J":{"JId":185008460} },
|
||||||
|
{ "logprob":-20.910, "Id":1576311670, "Ti":"reconfiguration of 3d crystalline robots using o log n parallel moves", "Y":2009, "CC":0, "RId":[], "AA":[{"AuId":2311459076}, {"AuId":2305207799,"AfId":63966007}, {"AuId":380982395}, {"AuId":695374658}, {"AuId":1985301561}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-21.002, "Id":2114621449, "Ti":"posture invariant statistical shape analysis using laplace operator", "Y":2012, "CC":4, "RId":[2119350939, 334078648, 1989191365, 1999690352, 2211546658, 2125949583, 2169776045, 2104198297, 2158778494, 1909894032, 1993846356, 2052069724, 1944448249, 2106466172, 2074407824, 2103296388, 1520035080, 2073655956, 2120383035, 2036834050, 2086435606], "AA":[{"AuId":2014261844}, {"AuId":2132968838}, {"AuId":2099631723}], "F":[{"FId":165700671}], "J":{"JId":94821547} },
|
||||||
|
{ "logprob":-21.034, "Id":1600526016, "Ti":"reconfiguration of cube style modular robots using o logn parallel moves", "Y":2008, "CC":0, "RId":[1526777436, 2164380970, 2126295536, 2117416080, 2056453745], "AA":[{"AuId":76407621,"AfId":132053463}, {"AuId":2047536997,"AfId":132053463}, {"AuId":380982395,"AfId":63966007}, {"AuId":695374658,"AfId":132053463}, {"AuId":1985301561,"AfId":9617848}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":120373497}, {"FId":41008148}, {"FId":33923547}], "C":{"CId":1175727152} },
|
||||||
|
{ "logprob":-21.053, "Id":2089277703, "Ti":"posture invariant correspondence of triangular meshes in shape space", "Y":2009, "CC":4, "RId":[2049981393, 2099789128, 1989191365, 1999690352, 2159361280, 2123487031, 2153487529, 2143030836, 2068333134, 1486218565, 2061845601], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2120994602,"AfId":67031392}], "F":[{"FId":178207025}, {"FId":194401833}, {"FId":181145010}, {"FId":53533937}, {"FId":77660652}, {"FId":66024118}, {"FId":1674844}, {"FId":2524010}, {"FId":33923547}], "C":{"CId":1164975091} },
|
||||||
|
{ "logprob":-21.055, "Id":2150635919, "Ti":"review of statistical shape spaces for 3d data with comparative analysis for human faces", "Y":2012, "CC":2, "RId":[2115755118, 2038952578, 2117188745, 334078648, 2085261163, 1989191365, 2051434435, 1992187125, 2211546658, 2125949583, 2166743687, 1544875853, 2142152601, 2104198297, 2135666716, 1976295221, 1993846356, 2104539097, 1965805571, 2075834168, 2069997605, 2074407824, 1575243757, 2067032877, 2012048984, 2063601108, 2163183381, 2066090933, 1995712965, 2134389879, 2154320156, 2163399942, 1553670630, 2030116982, 2143039717, 1988539193, 2114621449], "AA":[{"AuId":1984903675,"AfId":149899117}, {"AuId":2193757115}, {"AuId":57898110}, {"AuId":2014261844}], "J":{"JId":185008460} },
|
||||||
|
{ "logprob":-21.072, "Id":2113000721, "Ti":"semi automatic prediction of landmarks on human models in varying poses", "Y":2010, "CC":2, "RId":[1999690352, 2113656553, 2159361280, 2123487031, 2153487529, 2074407824, 2037149239, 2003014378, 2036834050], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2127044776,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}], "F":[{"FId":52102323}, {"FId":27511587}, {"FId":204707403}, {"FId":193293595}, {"FId":127011070}, {"FId":159886148}, {"FId":66024118}, {"FId":1674844}, {"FId":105795698}], "C":{"CId":1160896163} },
|
||||||
|
{ "logprob":-21.079, "Id":2127958493, "Ti":"posture invariant gender classification for 3d human models", "Y":2009, "CC":2, "RId":[2135541996, 1999690352, 2161253909, 1971957654, 2014877967, 2002286769, 2003014378, 2103525210, 2146308415, 2112646535, 2162114735, 2230315448, 2141267000], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2001181309,"AfId":197604219}], "F":[{"FId":12267149}, {"FId":110083411}, {"FId":119857082}, {"FId":41008148}], "C":{"CId":1158167855} },
|
||||||
|
{ "logprob":-21.095, "Id":2187479452, "Ti":"shrec 14 track automatic location of landmarks used in manual anthropometry", "Y":2014, "CC":1, "RId":[2295332248, 2019599312, 2171490473, 1510526001, 1569530544, 168966905, 2154980168, 1735588541, 1994359450, 2034105264, 2003014378, 2059393299, 1985851765, 2079294336, 2113000721], "AA":[{"AuId":2157123513}, {"AuId":2131007269}, {"AuId":1996155268}, {"AuId":2103542331}, {"AuId":2174370829}, {"AuId":1965603897}, {"AuId":2225981013}, {"AuId":2134662681}, {"AuId":2110580142}, {"AuId":168721329}, {"AuId":2116133272}, {"AuId":2135990543}, {"AuId":2096876795}, {"AuId":728773384}, {"AuId":2030948482}, {"AuId":2014261844}, {"AuId":2099631723}] },
|
||||||
|
{ "logprob":-21.172, "Id":2010839818, "Ti":"tracking complete deformable objects with finite elements", "Y":2012, "CC":4, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":2164413517}, {"AuId":2132968838}] },
|
||||||
|
{ "logprob":-21.190, "Id":1520300017, "Ti":"linear reconfiguration of cube style modular robots", "Y":2007, "CC":0, "RId":[1526777436, 2117416080], "AA":[{"AuId":76407621,"AfId":132053463}, {"AuId":2047536997,"AfId":132053463}, {"AuId":2139371818,"AfId":7863295}, {"AuId":380982395,"AfId":63966007}, {"AuId":298322331,"AfId":920285187}, {"AuId":695374658,"AfId":132053463}, {"AuId":2108112919,"AfId":202524275}, {"AuId":2102544858,"AfId":178766854}, {"AuId":1985301561,"AfId":9617848}, {"AuId":2014261844,"AfId":67031392}], "C":{"CId":1175727152} },
|
||||||
|
{ "logprob":-21.204, "Id":2030723399, "Ti":"a linear space algorithm for distance preserving graph embedding", "Y":2009, "CC":3, "RId":[2053186076, 2001141328, 2067752346, 2340006107, 2051434435, 1999690352, 2166164984, 2159361280, 2105082158, 1973264045, 2096141080, 2134201719, 1566976463, 2044028871, 1999823999, 1972859956, 2162114735, 2018998921], "AA":[{"AuId":2111668054,"AfId":177738480}, {"AuId":2120994602,"AfId":67031392}, {"AuId":2042195894,"AfId":67031392}, {"AuId":2154897350,"AfId":67031392}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":75564084}, {"FId":176370821}, {"FId":186450821}, {"FId":49847556}, {"FId":91682802}, {"FId":73555534}, {"FId":176012381}, {"FId":2524010}, {"FId":33923547}], "J":{"JId":165542689} },
|
||||||
|
{ "logprob":-21.218, "Id":2080526711, "Ti":"3d faces in motion fully automatic registration and statistical analysis", "Y":2015, "CC":1, "RId":[1560013842, 2085261163, 1992187125, 2102924784, 2104425538, 2104198297, 2135666716, 1909894032, 1976295221, 32702425, 2143829622, 2104539097, 2038891881, 1965805571, 2166672191, 2069997605, 1575243757, 1990940174, 2067032877, 2012048984, 2163183381, 1995712965, 2003706019, 2087642411, 2134389879, 2011556862, 2012075579, 2096020629, 2052243599, 2162280462, 2089623493, 2136500581, 2030116982, 2149284486, 2048359624, 2076756054, 2087960557, 1590053313, 2021679049], "AA":[{"AuId":57898110}, {"AuId":2014261844}], "F":[{"FId":105795698}], "J":{"JId":185008460} },
|
||||||
|
{ "logprob":-21.220, "Id":2119872517, "Ti":"a characterization of the degree sequences of 2 trees", "Y":2008, "CC":1, "RId":[301824129, 2087083200, 2336652925, 2064721098, 2005706719, 1592352976, 1598444089, 195844759, 2000204877, 2136019314, 1996874849, 2161839451, 2287138200, 2079721544], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2284031192,"AfId":67031392}, {"AuId":270679271,"AfId":100538780}, {"AuId":695374658,"AfId":132053463}, {"AuId":2160857524,"AfId":67031392}, {"AuId":2158694965}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":48785453}, {"FId":132569581}, {"FId":114614502}, {"FId":33923547}], "J":{"JId":193368155} },
|
||||||
|
{ "logprob":-21.229, "Id":2036688247, "Ti":"finite element based tracking of deforming surfaces", "Y":2015, "CC":0, "RId":[334078648, 2211546658, 2122578066, 2129494071, 2143703219, 1985290145, 2098466221, 2082254676, 2109752307, 2127374940, 1965805571, 2168685057, 2081927584, 2016663152, 1988179100, 2023560768, 2146700972, 2041855012, 2002980568, 2091593985, 2117541425, 2006303959, 2091843001, 2038837307], "AA":[{"AuId":2014261844,"AfId":91712215}, {"AuId":2164413517,"AfId":153718931}, {"AuId":2088902210,"AfId":153718931}, {"AuId":2132968838,"AfId":197604219}], "J":{"JId":137436721} },
|
||||||
|
{ "logprob":-21.257, "Id":2114241394, "Ti":"pi 2 angle yao graphs are spanners", "Y":2010, "CC":0, "RId":[], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2139371818,"AfId":7863295}, {"AuId":286320687,"AfId":67031392}, {"AuId":1995729299,"AfId":202524275}, {"AuId":812850721,"AfId":67031392}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":197604219}] },
|
||||||
|
{ "logprob":-21.270, "Id":2251676003, "Ti":"3d faces in motion", "Y":2015, "CC":0, "RId":[2237250383, 2085261163, 2051434435, 2137306662, 1992187125, 2102924784, 2104425538, 2104198297, 1909894032, 1976295221, 32702425, 2104539097, 2146161009, 1575243757, 1990940174, 2067032877, 2003706019, 2129360799, 2087642411, 2011556862, 2096020629, 2162653225, 2089623493, 2075759375, 2093120612, 2136500581, 2030116982, 2149284486, 2164118058, 2087960557], "AA":[{"AuId":57898110,"AfId":91712215}, {"AuId":2014261844,"AfId":91712215}], "F":[{"FId":105795698}], "J":{"JId":185008460} },
|
||||||
|
{ "logprob":-21.322, "Id":2124999587, "Ti":"image based model completion", "Y":2007, "CC":2, "RId":[2033819227, 2160014001, 2129098897, 2005126631, 1543226262, 2120977599, 1981940178, 1969549682, 2081507207, 1541700072, 2008151176, 2165455240, 1991845454, 2157688203, 2085858393, 2017477785, 1997641715, 140307293, 2279061013], "AA":[{"AuId":1984903675,"AfId":197604219}, {"AuId":2014261844,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}], "F":[{"FId":182310444}, {"FId":2524010}, {"FId":41008148}], "C":{"CId":1149416356} },
|
||||||
|
{ "logprob":-21.331, "Id":2104765276, "Ti":"morphing of triangular meshes in shape space", "Y":2011, "CC":2, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":2120994602}, {"AuId":2103437391}, {"AuId":1995729299}, {"AuId":1984903675}], "F":[{"FId":50637493}, {"FId":29123130}, {"FId":2524010}, {"FId":33923547}], "J":{"JId":68340538} },
|
||||||
|
{ "logprob":-21.378, "Id":2063175732, "Ti":"rotationally monotone polygons", "Y":2009, "CC":1, "RId":[2149906774, 2129879687, 2139230981, 2126876121, 1825136300, 1481903970, 2063346183, 2045783875, 2080276023, 2306830116, 2022832678, 1553375877, 1997316506, 2034428396, 2028695830], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2160857524,"AfId":67031392}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":197949415}, {"FId":72169020}, {"FId":2524010}, {"FId":33923547}], "J":{"JId":165542689} },
|
||||||
|
{ "logprob":-21.386, "Id":2115896006, "Ti":"shape from suggestive contours using 3d priors", "Y":2012, "CC":1, "RId":[], "AA":[{"AuId":2014261844,"AfId":91712215}, {"AuId":2132968838}], "F":[{"FId":27438332}, {"FId":155650255}, {"FId":31510193}, {"FId":31972630}, {"FId":119857082}, {"FId":41008148}], "C":{"CId":1160896163} },
|
||||||
|
{ "logprob":-21.387, "Id":2296729236, "Ti":"a low dimensional representation for robust partial isometric correspondences computation", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":1984903675}, {"AuId":2101927313}, {"AuId":2014261844}, {"AuId":73181535}, {"AuId":2135052836}] },
|
||||||
|
{ "logprob":-21.432, "Id":2064761790, "Ti":"efficient reconfiguration of lattice based modular robots", "Y":2013, "CC":2, "RId":[1526777436, 2096537964, 1524850010, 2139714790, 2117416080, 2032768325, 2188492432, 2099361645, 1012009150, 2056053005], "AA":[{"AuId":76407621}, {"AuId":2059928011}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":2300589195}, {"AuId":2112876687}, {"AuId":2014261844}], "J":{"JId":165542689} },
|
||||||
|
{ "logprob":-21.460, "Id":2027612430, "Ti":"bending invariant meshes and application to groupwise correspondences", "Y":2009, "CC":0, "RId":[2053186076, 2001141328, 2099789128, 1999690352, 1590776313, 2025062188, 2159361280, 2144083240, 2140500712, 1982366717, 2147647517, 2090320629, 2018110063, 1999597013, 1566976463, 2108258308, 92634156, 158821397], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}, {"AuId":1970210942,"AfId":197604219}, {"AuId":2159171761,"AfId":197604219}, {"AuId":2099631723,"AfId":197604219}], "F":[{"FId":194401833}, {"FId":165818556}, {"FId":181145010}, {"FId":120174047}, {"FId":77660652}, {"FId":66024118}, {"FId":106516650}, {"FId":1674844}, {"FId":192939610}, {"FId":2524010}, {"FId":33923547}], "C":{"CId":1164975091} },
|
||||||
|
{ "logprob":-21.503, "Id":2231045347, "Ti":"realistic reconfiguration of crystalline and telecube robots", "Y":2008, "CC":1, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2047536997}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":1723144653}, {"AuId":298322331}, {"AuId":695374658}, {"AuId":1995729299}, {"AuId":135182615}, {"AuId":2102544858}, {"AuId":1586814107}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-21.511, "Id":2267768293, "Ti":"smi 2012 full posture invariant statistical shape analysis using laplace operator", "Y":2012, "CC":0, "RId":[334078648, 1989191365, 2051434435, 1631674738, 1999690352, 2125949583, 2144570481, 1944448249, 2036834050, 2096071249], "AA":[{"AuId":2014261844,"AfId":91712215}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2099631723,"AfId":197604219}], "F":[{"FId":165700671}], "J":{"JId":94821547} },
|
||||||
|
{ "logprob":-21.512, "Id":62232106, "Ti":"characterization of partial intrinsic symmetries", "Y":2014, "CC":0, "RId":[1626653188, 1590776313, 1544875853, 2127025496, 2155957710, 2091791686, 2130518695, 2145093702, 2077031952, 2130595631, 2161271908, 2145524482, 2146527621, 2093544140, 1540641376, 2116077655, 2161420750, 2025044072, 2045323633, 2000403788, 2295140937, 1534713745, 2171851104, 2260540739], "AA":[{"AuId":2109044626,"AfId":91712215}, {"AuId":2060265658,"AfId":4923324}, {"AuId":2014261844,"AfId":91712215}, {"AuId":2101927313,"AfId":193662353}], "F":[{"FId":41008148}], "C":{"CId":1124077590} },
|
||||||
|
{ "logprob":-21.527, "Id":2106341096, "Ti":"isometric morphing of triangular meshes", "Y":2008, "CC":1, "RId":[2140798815, 2147774191, 2048158019, 2154084374, 1542792704, 2014770458, 2144707889, 2168771843], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":1995729299,"AfId":202524275}, {"AuId":2132968838}, {"AuId":2014261844}], "F":[{"FId":194401833}, {"FId":171836373}, {"FId":33923547}], "C":{"CId":1201479284} },
|
||||||
|
{ "logprob":-21.556, "Id":1668992945, "Ti":"morphing of triangular meshes in shape space", "Y":2008, "CC":0, "RId":[2122007052, 1572663059, 2151636374, 2142326458, 2147774191, 2095986812, 2091804476, 2048158019, 2154084374, 1944448249, 2098727428, 2092053444, 2036834050, 2144707889, 2030458754, 2106341096], "AA":[{"AuId":2014261844,"AfId":67031392}, {"AuId":2120994602,"AfId":67031392}, {"AuId":2132968838,"AfId":197604219}, {"AuId":1995729299}, {"AuId":1984903675,"AfId":153718931}] },
|
||||||
|
{ "logprob":-21.561, "Id":1807911131, "Ti":"multilinear wavelets a statistical shape space for human faces", "Y":2014, "CC":0, "RId":[2117188745, 2071866949, 2142152601, 2135666716, 32702425, 1965805571, 2087642411, 2052243599, 2131202735, 1511946343], "AA":[{"AuId":2060265658,"AfId":4923324}, {"AuId":57898110,"AfId":91712215}, {"AuId":2014261844,"AfId":91712215}], "C":{"CId":1124077590} },
|
||||||
|
{ "logprob":-21.722, "Id":1561451935, "Ti":"geodesic paths on 3d surfaces survey and open problems", "Y":2009, "CC":2, "RId":[], "AA":[{"AuId":2154897350}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-21.752, "Id":1973850282, "Ti":"algorithms for designing clamshell molds", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":2120994602}, {"AuId":2160857524}, {"AuId":2007139549}], "F":[{"FId":16635281}, {"FId":175700187}, {"FId":29123130}, {"FId":2524010}], "J":{"JId":143715161} },
|
||||||
|
{ "logprob":-21.794, "Id":2162114735, "Ti":"approximations of geodesic distances for incomplete triangular manifolds", "Y":2007, "CC":3, "RId":[1999690352, 2161253909, 2159361280, 2108567935, 2104700297, 1999597013, 92634156, 158821397, 2018998921], "AA":[{"AuId":2127044776}, {"AuId":2120994602}, {"AuId":2132968838}, {"AuId":2014261844}], "F":[{"FId":165818556}, {"FId":2524010}, {"FId":33923547}], "C":{"CId":1201479284} },
|
||||||
|
{ "logprob":-21.801, "Id":1553375877, "Ti":"rotational clamshell casting in three dimensions", "Y":2006, "CC":1, "RId":[], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2160857524,"AfId":67031392}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}] },
|
||||||
|
{ "logprob":-21.873, "Id":2310280492, "Ti":"a robust multilinear model learning framework for 3d faces", "Y":2016, "CC":0, "RId":[], "AA":[{"AuId":57898110}, {"AuId":2014261844}], "C":{"CId":1158167855} },
|
||||||
|
{ "logprob":-21.889, "Id":2123817071, "Ti":"removing outliers to minimize area and perimeter", "Y":2006, "CC":1, "RId":[2048493433, 2042473201, 2167927607], "AA":[{"AuId":2057698039,"AfId":67031392}, {"AuId":2160857524,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":206194317}, {"FId":2524010}, {"FId":33923547}], "C":{"CId":1201479284} },
|
||||||
|
{ "logprob":-21.949, "Id":2055752405, "Ti":"3d anthropometric data processing", "Y":2012, "CC":1, "RId":[], "AA":[{"AuId":2132968838}, {"AuId":2014261844}, {"AuId":2099631723}], "J":{"JId":183335753} },
|
||||||
|
{ "logprob":-21.979, "Id":2336233787, "Ti":"clamshell casting", "Y":2009, "CC":0, "RId":[301824129, 2126876121, 2059155916, 2067631433, 2292025986, 1538991644, 2085041675, 2113830395, 153494752, 180909918, 2125685982, 2002507856, 23500900], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2160857524,"AfId":67031392}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}], "J":{"JId":89324355} },
|
||||||
|
{ "logprob":-22.013, "Id":2141646866, "Ti":"linear space algorithms for distance preserving embedding", "Y":2007, "CC":0, "RId":[2166164984, 2134921160, 1973264045, 1999823999], "AA":[{"AuId":2111668054}, {"AuId":2120994602,"AfId":67031392}, {"AuId":2042195894,"AfId":67031392}, {"AuId":2154897350,"AfId":67031392}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":75564084}, {"FId":176370821}, {"FId":186450821}, {"FId":87195055}, {"FId":2524010}, {"FId":33923547}], "C":{"CId":1201479284} },
|
||||||
|
{ "logprob":-22.073, "Id":2261888986, "Ti":"fitting a 3d morphable model to edges a comparison between hard and soft correspondences", "Y":2016, "CC":0, "RId":[], "AA":[{"AuId":2269457212}, {"AuId":2253705556}, {"AuId":57898110}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-22.104, "Id":1808135090, "Ti":"a statistical shape space model of the palate surface trained on 3d mri scans of the vocal tract", "Y":2015, "CC":0, "RId":[], "AA":[{"AuId":2079520017}, {"AuId":2168222028}, {"AuId":57898110}, {"AuId":2014261844}, {"AuId":2158195643}] },
|
||||||
|
{ "logprob":-22.120, "Id":1599889834, "Ti":"linear reconfiguration of cube style modular robots", "Y":2007, "CC":0, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2047536997}, {"AuId":1947593104}, {"AuId":380982395}, {"AuId":2300589195}, {"AuId":695374658}, {"AuId":1995729299}, {"AuId":2102544858}, {"AuId":1985301561}, {"AuId":2014261844}], "J":{"JId":106296714} },
|
||||||
|
{ "logprob":-22.140, "Id":2180648442, "Ti":"a groupwise multilinear correspondence optimization for 3d faces", "Y":2015, "CC":0, "RId":[], "AA":[{"AuId":57898110}, {"AuId":2014261844}], "C":{"CId":1164975091} },
|
||||||
|
{ "logprob":-22.143, "Id":1633576308, "Ti":"algorithms for optimal outlier removal 1 rossen atanassov prosenjit bose mathieu couture", "Y":2012, "CC":0, "RId":[], "AA":[{"AuId":2154897350}, {"AuId":2160857524}, {"AuId":2169685232}, {"AuId":2007139549}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-22.259, "Id":771468320, "Ti":"realistic reconfiguration of crystalline and teletube robots", "Y":2008, "CC":0, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2047536997}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":1723144653}, {"AuId":2300589195}, {"AuId":695374658}, {"AuId":1995729299}, {"AuId":135182615}, {"AuId":2102544858}, {"AuId":1985301561}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-22.266, "Id":2269332872, "Ti":"matching and morphing of isometric models", "Y":2009, "CC":1, "RId":[], "AA":[{"AuId":2014261844,"AfId":67031392}] },
|
||||||
|
{ "logprob":-22.289, "Id":1658042064, "Ti":"analysis of farthest point sampling for approximating geodesics in a graph", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":195882947}, {"AuId":2241594721}, {"AuId":2154897350}, {"AuId":2014261844}], "F":[{"FId":101837359}, {"FId":148764684}, {"FId":114614502}, {"FId":33923547}], "J":{"JId":165542689} },
|
||||||
|
{ "logprob":-22.389, "Id":2295413353, "Ti":"establishing strong connectivity using optimal radius half disk antennas", "Y":2011, "CC":1, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2139371818}, {"AuId":298322331}, {"AuId":2140429713}, {"AuId":2280126321}, {"AuId":2133297015}, {"AuId":2014261844}], "C":{"CId":1201479284} },
|
||||||
|
{ "logprob":-22.393, "Id":2051898570, "Ti":"filling holes in triangular meshes using digital images by curve unfolding", "Y":2011, "CC":1, "RId":[2033819227, 2160014001, 2099789128, 1977758817, 2129412583, 2051434435, 2061010610, 2237825899, 2129098897, 2005126631, 1543226262, 2120977599, 1998255762, 2111240761, 2171542563, 1981940178, 2081507207, 2151214419, 2071111253, 2045471990, 2145093702, 1541700072, 2121669559, 2008151176, 2165455240, 1909076809, 2018110063, 2038126344, 1991845454, 2056725994, 1583585595, 2008888582, 2034609976, 1708197474, 2007847953, 2042254269, 1966871317, 2084188728, 2017477785, 1997641715, 2105522022, 140307293, 2279061013], "AA":[{"AuId":1984903675}, {"AuId":2014261844}, {"AuId":2103437391}, {"AuId":2120994602}, {"AuId":380982395}], "J":{"JId":68340538} },
|
||||||
|
{ "logprob":-22.425, "Id":2294545116, "Ti":"efficient reconfiguration of lattice based modular robots", "Y":2009, "CC":1, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2059928011}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":298322331}, {"AuId":2112876687}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-22.435, "Id":2296577209, "Ti":"how to cite this article", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2047536997}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":1827704974}, {"AuId":695374658}, {"AuId":135182615}, {"AuId":2102544858}, {"AuId":1985301561}, {"AuId":2014261844}, {"AuId":2295413464}] },
|
||||||
|
{ "logprob":-22.713, "Id":2180134226, "Ti":"a characterization of the degree sequences of 2 trees", "Y":2007, "CC":0, "RId":[], "AA":[{"AuId":2120994602}, {"AuId":1973971504}, {"AuId":270679271}, {"AuId":695374658}, {"AuId":2160857524}, {"AuId":2158694965}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-22.736, "Id":2199709889, "Ti":"a characterization of the degree sequences of 2 trees", "Y":2006, "CC":0, "RId":[], "AA":[{"AuId":2120994602}, {"AuId":1973971504}, {"AuId":270679271}, {"AuId":695374658}, {"AuId":2160857524}, {"AuId":2158694965}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-22.768, "Id":2294962059, "Ti":"rotationally monotone polygons", "Y":2006, "CC":0, "RId":[], "AA":[{"AuId":2120994602}, {"AuId":2160857524}, {"AuId":2007139549}, {"AuId":2014261844}], "C":{"CId":1201479284} },
|
||||||
|
{ "logprob":-22.863, "Id":2052207545, "Ti":"a general framework to generate sizing systems from 3d motion data applied to face mask design", "Y":2014, "CC":0, "RId":[2237250383, 334078648, 2137306662, 2211546658, 1566413196, 2157100308, 2028666973, 2163131540, 2052243599, 1963954287, 2162048995, 2138930031, 2030740176, 2149284486], "AA":[{"AuId":57898110}, {"AuId":2120994602}, {"AuId":2132968838}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-22.885, "Id":2225840200, "Ti":"filling holes in triangular meshes by curve unfolding", "Y":2009, "CC":0, "RId":[], "AA":[{"AuId":380982395}, {"AuId":2120994602}, {"AuId":2132968838}, {"AuId":2014261844}, {"AuId":1984903675}] },
|
||||||
|
{ "logprob":-22.891, "Id":761823114, "Ti":"communaute francaise de belgique arc", "Y":2009, "CC":0, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2047536997}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":1723144653}, {"AuId":1827704974}, {"AuId":695374658}, {"AuId":135182615}, {"AuId":2102544858}, {"AuId":1985301561}, {"AuId":2014261844}, {"AuId":2137867949}, {"AuId":2140062869}, {"AuId":2045170451}] },
|
||||||
|
{ "logprob":-22.891, "Id":2241341858, "Ti":"linear reconfiguration of cube style modular robots", "Y":2009, "CC":0, "RId":[], "AA":[{"AuId":380982395}, {"AuId":76407621}, {"AuId":2047536997}, {"AuId":2139371818}, {"AuId":695374658}, {"AuId":2108112919}, {"AuId":2102544858}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-22.891, "Id":829689105, "Ti":"efficient reconfiguration for lattice based modular robots", "Y":2009, "CC":0, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2059928011}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":2300589195}, {"AuId":2112876687}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-22.929, "Id":2293810765, "Ti":"a hybrid approach to 3d tongue modeling from vocal tract mri using unsupervised image segmentation and mesh deformation", "Y":2014, "CC":0, "RId":[], "AA":[{"AuId":2079520017}, {"AuId":2168222028}, {"AuId":2014261844}], "C":{"CId":1177287137} },
|
||||||
|
{ "logprob":-23.063, "Id":2294471017, "Ti":"a statistical shape space model of the palate surface trained on 3d mri scans of the vocal tract", "Y":2016, "CC":0, "RId":[], "AA":[{"AuId":2079520017}, {"AuId":2168222028}, {"AuId":57898110}, {"AuId":2014261844}, {"AuId":2158195643}] },
|
||||||
|
{ "logprob":-23.205, "Id":2296119166, "Ti":"automatically creating design models from 3d anthropometry data", "Y":2011, "CC":0, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":2132968838}, {"AuId":2120994602}] },
|
||||||
|
{ "logprob":-23.359, "Id":2179812682, "Ti":"statistical shape spaces for 3d data a review", "Y":2016, "CC":0, "RId":[], "AA":[{"AuId":1984903675}, {"AuId":2331953835}, {"AuId":57898110}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-23.364, "Id":2337456168, "Ti":"analysis of farthest point sampling for approximating geodesics in a graph", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":195882947}, {"AuId":2241594721}, {"AuId":2154897350}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-23.394, "Id":2293869343, "Ti":"fully automatic expression invariant face correspondence", "Y":2012, "CC":0, "RId":[], "AA":[{"AuId":2309876607}, {"AuId":2014261844}, {"AuId":2132968838}, {"AuId":2099866554}] },
|
||||||
|
{ "logprob":-23.397, "Id":2184304798, "Ti":"order type invariant labeling and comparison of point sets", "Y":2012, "CC":0, "RId":[2157266306, 16939786, 1967443570, 1966030595, 2129175815, 1968264007, 2034752889, 2052653263, 2020541197], "AA":[{"AuId":2188808206}, {"AuId":2112876687}, {"AuId":695374658}, {"AuId":2102544858}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-23.519, "Id":2294893056, "Ti":"finite element based tracking of deforming surfaces", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":2164413517}, {"AuId":2088902210}, {"AuId":2132968838}] },
|
||||||
|
{ "logprob":-23.519, "Id":2295845112, "Ti":"estimation of human body shape and posture under clothing", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":308162991}, {"AuId":1984903675}, {"AuId":2132968838}, {"AuId":2164413517}] },
|
||||||
|
{ "logprob":-23.519, "Id":2064118604, "Ti":"from 3 d scans to design tools", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":2132968838}, {"AuId":2031320464}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-23.587, "Id":2296127659, "Ti":"multilinear wavelets a statistical shape space for human faces", "Y":2014, "CC":0, "RId":[], "AA":[{"AuId":1984903675}, {"AuId":57898110}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-23.733, "Id":2188958145, "Ti":"establishing strong connectivity using optimal", "Y":2012, "CC":0, "RId":[2102709759, 42897049], "AA":[{"AuId":2181913596}, {"AuId":2300589195}, {"AuId":2140429713}, {"AuId":2133297015}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-23.747, "Id":2295499190, "Ti":"estimating 3d human shapes from measurements", "Y":2011, "CC":0, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":2132968838}] },
|
||||||
|
{ "logprob":-23.815, "Id":2296099950, "Ti":"comparative analysis of statistical shape spaces", "Y":2012, "CC":0, "RId":[], "AA":[{"AuId":1984903675}, {"AuId":2331953835}, {"AuId":57898110}, {"AuId":2014261844}] },
|
||||||
|
{ "logprob":-23.815, "Id":2249684012, "Ti":"review and comparative analysis of statistical shape spaces of 3d data", "Y":2012, "CC":0, "RId":[2115755118, 2038952578, 2237250383, 2137306662, 1992187125, 2125949583, 1566413196, 2152826766, 2158179171, 2142152601, 2088230067, 1976295221, 2100484145, 1520005879, 2075834168, 2074407824, 1992475172, 2156736396, 2166468061, 1575243757, 2163183381, 2066090933, 2131202735, 2110733656, 1553670630, 2149466360, 1511946343, 2030575031, 2030116982, 108644101, 2131039592, 2147886171, 1912889008, 1533103600], "AA":[{"AuId":1984903675}, {"AuId":2331953835}, {"AuId":57898110}, {"AuId":2014261844}] }]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
[1995672522, 2091164805]
|
||||||
|
[[2034917438, 205783295, 2014602748], [2034917438, 1995672522, 2014602748], [2034917438, 1995672522, 2017562024, 2014602748], [2034917438, 1995672522, 2034190349, 2014602748], [2034917438, 1995672522, 2093894241, 2014602748]]
|
||||||
|
225
|
@ -0,0 +1,858 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web,time
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user',
|
||||||
|
'/paper?(.+)','get_paper'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
#'count': '100000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
#'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
#'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId2:
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "3th api > 150 s"
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
if rid4 in Id1:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auidid5api(auid2,deinput,AfId1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 135:
|
||||||
|
print "5th api > 150 s"
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % auid2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data6 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId2=[]
|
||||||
|
for i3 in data6["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == auid2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
for x in AfId2:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],auid2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
return
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
params = urllib.urlencode({
|
||||||
|
'expr': "Composite(AA.AuN='"+input_data.id1+"')",
|
||||||
|
'offset': '0',
|
||||||
|
'count': '10',
|
||||||
|
'attributes': 'AA.AuId,AA.AuN',
|
||||||
|
#'attributes': 'Id,AA.AfId,AA.AuId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data6 = json.loads(data)
|
||||||
|
print(data)
|
||||||
|
conn.close()
|
||||||
|
AuId1=data6["entities"][0]["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuN"]==input_data.id1:
|
||||||
|
input1 = tmp["AuId"];
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
params = urllib.urlencode({
|
||||||
|
'expr': "Composite(AA.AuN='"+input_data.id2+"')",
|
||||||
|
'offset': '0',
|
||||||
|
'count': '10',
|
||||||
|
'attributes': 'AA.AuId,AA.AuN',
|
||||||
|
#'attributes': 'Id,AA.AfId,AA.AuId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data7 = json.loads(data)
|
||||||
|
print(data)
|
||||||
|
conn.close()
|
||||||
|
AuId2=data7["entities"][0]["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuN"]==input_data.id2:
|
||||||
|
input2 = tmp["AuId"];
|
||||||
|
break;
|
||||||
|
|
||||||
|
input=[input1,input2]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
global start_time
|
||||||
|
start_time = time.clock()
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
#print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
class get_paper:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
input = (int)(input_data.id)
|
||||||
|
exp9 = 'Id = %d' % input
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp9,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
#'count': '100000',
|
||||||
|
'attributes': 'Ti,Id,Y,CC,RId,F.FId,AA.AfId,AA.AuId,J.JId,C.CId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
print data
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
print "data1"
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
print "data2"
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
print "data3"
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "data3 > 120 s"
|
||||||
|
break
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
print "operation"
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1:
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
print "data4"
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "data1 > 120 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 100:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
threads=[]
|
||||||
|
for auid2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(auidid5api,auid2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 100:
|
||||||
|
print "data2 > 100 s"
|
||||||
|
break
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 130:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId(AA.AfN) -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
if x in AfId2:
|
||||||
|
params = urllib.urlencode({
|
||||||
|
# Request parameters
|
||||||
|
#'expr': "Composite(AA.AuN='kai chen')",
|
||||||
|
'expr': "Composite(AA.AfId = %d)" % x,
|
||||||
|
#'expr': 'Id = 1970381522',
|
||||||
|
#'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
#'orderby': 'AA.AfId',
|
||||||
|
'count': '10',
|
||||||
|
'attributes': 'Id,Ti,RId,F.FId,AA.AfId,AA.AfN,AA.AuN',
|
||||||
|
#'attributes': 'Id,AA.AfId,AA.AuId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data8 = json.loads(data)
|
||||||
|
print(data)
|
||||||
|
conn.close()
|
||||||
|
AuId8=data8["entities"][0]["AA"]
|
||||||
|
for tmp in AuId8:
|
||||||
|
if tmp["AfId"]==x:
|
||||||
|
AuN8 = tmp["AfN"];
|
||||||
|
break;
|
||||||
|
result.append([deinput[0],AuN8,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
if x in Id2:
|
||||||
|
params = urllib.urlencode({
|
||||||
|
# Request parameters
|
||||||
|
'expr': 'Id = %d' % x,
|
||||||
|
'offset': '0',
|
||||||
|
'attributes': 'Id,Ti,RId,F.FId,AA.AfId,AA.AfN,AA.AuN',
|
||||||
|
#'attributes': 'Id,AA.AfId,AA.AuId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data9 = json.loads(data)
|
||||||
|
print(data)
|
||||||
|
conn.close()
|
||||||
|
result.append([deinput[0],data9["entities"][0]["Ti"],deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
Binary file not shown.
@ -0,0 +1,119 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
input = [2132060629,307743305]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
#''''''''''''''''''''''''''''''''''[AA.AuId, AA.AuId]'''''''''''''''''''''''''''''''''
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr': exp1,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'Id,AA.AfId,AA.AuId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data1 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#'''''''''''''''''''''''''2nd API'''''''''''''''''''''''''''''''''
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'count': '1000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data2 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
if id2["Id"] not in Id2:
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
print Id1
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
for y in AfId2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
for aaid1 in Id1:
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print len(deresult)
|
@ -0,0 +1,167 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
input = [2251253715, 2180737804]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data1 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''2nd API'''''''''''''''''''''''''''''''''
|
||||||
|
exp2 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data2 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data2
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'Id',
|
||||||
|
'model': 'latest',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AfId1:
|
||||||
|
try:
|
||||||
|
if y==x["AfId"]:
|
||||||
|
result.append([deinput[0],y,x["AuId"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
for Aid in Id1:
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
for tmp in Id3:
|
||||||
|
if rid == tmp:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print len(result)
|
@ -0,0 +1,15 @@
|
|||||||
|
[[2251253715, 2180737804], [2251253715, 2180737804, 2048498903, 2180737804], [2251253715, 2180737804, 2223920688, 2180737804], [2251253715, 2180737804, 949266530, 2180737804], [2251253715, 2180737804, 1783833040, 2180737804], [2251253715, 2180737804, 2251253715, 2180737804], [2251253715, 2180737804, 2108096461, 2180737804], [2251253715, 2180737804, 35927321, 2180737804], [2251253715, 2299839756, 2048498903, 2180737804], [2251253715, 2299839756, 949266530, 2180737804], [2251253715, 2299839756, 2223920688, 2180737804], [2251253715, 2299839756, 1783833040, 2180737804], [2251253715, 2299839756, 2251253715, 2180737804], [2251253715, 2299839756, 2108096461, 2180737804]]
|
||||||
|
Total Size: 14
|
||||||
|
|
||||||
|
2251253715
|
||||||
|
2273736245
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2180737804
|
||||||
|
2094437628
|
@ -0,0 +1,226 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input = [1970381522,2162351023]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
#''''''''''''''''''''''''''''''''''[id0, id1]'''''''''''''''''''''''''''''''''
|
||||||
|
#'''''''''''''''1st API''''''''''''''''''''''''
|
||||||
|
exp1 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data1 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
#'''''''''''''''2nd API''''''''''''''''''''''''
|
||||||
|
exp2 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data2 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
#'''''''''''''''3rd API''''''''''''''''''''''''
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([[deinput[0],CJId3,i["Id"],deinput[1]]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([[deinput[0],CJId3,i["Id"],deinput[1]]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> id -> id
|
||||||
|
'''for Id in Id3:
|
||||||
|
for Reid in ReId1:
|
||||||
|
if Reid == Id:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])'''
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
for Reid in ReId1:
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
for Id in Id3:
|
||||||
|
if rid == Id:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print len(result)
|
@ -0,0 +1,22 @@
|
|||||||
|
import httplib, urllib, base64
|
||||||
|
|
||||||
|
params = urllib.urlencode({
|
||||||
|
# Request parameters
|
||||||
|
'expr': "Composite(AA.AuId = 621499171)",
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'offset': '0',
|
||||||
|
'attributes': 'Ti,Id,Y,CC,RId,F.FId,AA.AfId,AA.AuId,J.JId,C.CId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
|
||||||
|
try:
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/calchistogram?%s" % params)
|
||||||
|
#conn.request("GET", "/academic/v1.0/evaluate?%s" % params, "{body}")
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
print(data)
|
||||||
|
conn.close()
|
||||||
|
except Exception as e:
|
||||||
|
print("[Errno {0}] {1}".format(e.errno, e.strerror))
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,23 @@
|
|||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
params = urllib.urlencode({
|
||||||
|
# Request parameters
|
||||||
|
#'expr': "Composite(AA.AuN='kai chen')",
|
||||||
|
'expr': "Composite(AA.AfId = 63021997)",
|
||||||
|
#'expr': 'Id = 1970381522',
|
||||||
|
#'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
#'orderby': 'AA.AfId',
|
||||||
|
'count': '10',
|
||||||
|
'attributes': 'Id,Ti,RId,F.FId,AA.AfId,AA.AfN,AA.AuN',
|
||||||
|
#'attributes': 'Id,AA.AfId,AA.AuId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data1 = json.loads(data)
|
||||||
|
print(data)
|
||||||
|
conn.close()
|
@ -0,0 +1,750 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web,time
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
#'count': '100000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
#'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 180:
|
||||||
|
print "4th api > 180 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
#'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId2:
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "3th api > 150 s"
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
if rid4 in Id1:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auidid5api(auid2,deinput,AfId1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 135:
|
||||||
|
print "5th api > 150 s"
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % auid2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data6 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId2=[]
|
||||||
|
for i3 in data6["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == auid2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId2:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],auid2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
return
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
global start_time
|
||||||
|
start_time = time.clock()
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
#print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
print "data1"
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
print "data2"
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
print "data3"
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "data3 > 150 s"
|
||||||
|
break
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
print "operation"
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1:
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
print "data4"
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "data1 > 150 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 100:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
threads=[]
|
||||||
|
for auid2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(auidid5api,auid2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 100:
|
||||||
|
print "data2 > 100 s"
|
||||||
|
break
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 130:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
if x in AfId2:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
@ -0,0 +1,750 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web,time
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
#'count': '100000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
#'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
#'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId2:
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "3th api > 150 s"
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
if rid4 in Id1:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auidid5api(auid2,deinput,AfId1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 135:
|
||||||
|
print "5th api > 150 s"
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % auid2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data6 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId2=[]
|
||||||
|
for i3 in data6["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == auid2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId2:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],auid2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
return
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
global start_time
|
||||||
|
start_time = time.clock()
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
#print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
print "data1"
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
print "data2"
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
print "data3"
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "data3 > 120 s"
|
||||||
|
break
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
print "operation"
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1:
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
print "data4"
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "data1 > 120 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 100:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
threads=[]
|
||||||
|
for auid2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(auidid5api,auid2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 100:
|
||||||
|
print "data2 > 100 s"
|
||||||
|
break
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 130:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
if x in AfId2:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
Binary file not shown.
@ -0,0 +1,750 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web,time
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
#'count': '100000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
#'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
#'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId2:
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "3th api > 150 s"
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
if rid4 in Id1:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auidid5api(auid2,deinput,AfId1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 135:
|
||||||
|
print "5th api > 150 s"
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % auid2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data6 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId2=[]
|
||||||
|
for i3 in data6["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == auid2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
for x in AfId2:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],auid2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
return
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
global start_time
|
||||||
|
start_time = time.clock()
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
#print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
print "data1"
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
print "data2"
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
print "data3"
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "data3 > 120 s"
|
||||||
|
break
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
print "operation"
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1:
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
print "data4"
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "data1 > 120 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 100:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
threads=[]
|
||||||
|
for auid2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(auidid5api,auid2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 100:
|
||||||
|
print "data2 > 100 s"
|
||||||
|
break
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 130:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
if x in AfId2:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
Binary file not shown.
@ -0,0 +1,151 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
input = [2094437628, 2273736245]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
#''''''''''''''''''''''''''''''''''[Id, AA.AuId]'''''''''''''''''''''''''''''''''
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'Id,AA.AuId,AA.AfId,F.FId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data1 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''2nd API'''''''''''''''''''''''''''''''''
|
||||||
|
exp2 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'RId,AA.AuId,AA.AfId,F.FId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data2 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
for tmp in AfId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp == x["AfId"]:
|
||||||
|
# Id -> AA.AuId -> AA.AfId -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["AuId"],tmp,deinput[1]])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
for rid in ReId2:
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
for tmp in Id1:
|
||||||
|
if rid4 == tmp:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
print ("Data4")
|
||||||
|
print data4
|
||||||
|
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print ("Result")
|
||||||
|
print deresult
|
||||||
|
#print len(deresult)
|
@ -0,0 +1,690 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#import gevent.monkey
|
||||||
|
#gevent.monkey.patch_socket()
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#for Id in Id3:
|
||||||
|
#if rid == Id:
|
||||||
|
#result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
#for y in AfId1:
|
||||||
|
#if x == y :
|
||||||
|
#result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
if rid4 in Id1:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
#for tmp in Id1:
|
||||||
|
#if rid4 == tmp:
|
||||||
|
#result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
#for tmp in Id3:
|
||||||
|
#if rid == tmp:
|
||||||
|
#result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
#for y in Id2:
|
||||||
|
#if x==y:
|
||||||
|
#result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
#print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
print "data1"
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
print "data2"
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
print "data3"
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
print "operation"
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
print "data4"
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AfId1:
|
||||||
|
try:
|
||||||
|
if y==x["AfId"]:
|
||||||
|
result.append([deinput[0],y,x["AuId"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
print Id1
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
if x in AfId2:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
#for y in AfId2:
|
||||||
|
#if x==y:
|
||||||
|
#result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
#for y in Id2:
|
||||||
|
#if x==y:
|
||||||
|
#result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
@ -0,0 +1,750 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web,time
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
#'count': '100000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
#'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
#'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId2:
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "3th api > 150 s"
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
if rid4 in Id1:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auidid5api(auid2,deinput,AfId1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 135:
|
||||||
|
print "5th api > 150 s"
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % auid2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data6 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId2=[]
|
||||||
|
for i3 in data6["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == auid2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
for x in AfId2:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],auid2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
return
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
global start_time
|
||||||
|
start_time = time.clock()
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
#print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
print "data1"
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
print "data2"
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
print "data3"
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "data3 > 120 s"
|
||||||
|
break
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
print "operation"
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1:
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
print "data4"
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "data1 > 120 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 100:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
threads=[]
|
||||||
|
for auid2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(auidid5api,auid2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 100:
|
||||||
|
print "data2 > 100 s"
|
||||||
|
break
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 130:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError,IndexError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
if x in AfId2:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
Binary file not shown.
@ -0,0 +1,22 @@
|
|||||||
|
import httplib, urllib, base64
|
||||||
|
|
||||||
|
params = urllib.urlencode({
|
||||||
|
# Request parameters
|
||||||
|
'query': 'papers by jaime teevan after 2012',
|
||||||
|
'complete': '0',
|
||||||
|
'count': '10',
|
||||||
|
'offset': '0',
|
||||||
|
'timeout': '1000',
|
||||||
|
'model': 'latest',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
|
||||||
|
try:
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/interpret?%s" % params)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
print(data)
|
||||||
|
conn.close()
|
||||||
|
except Exception as e:
|
||||||
|
print("[Errno {0}] {1}".format(e.errno, e.strerror))
|
@ -0,0 +1,12 @@
|
|||||||
|
from multiprocessing import Pool
|
||||||
|
def f(x):
|
||||||
|
print x["Id"]
|
||||||
|
print x["RId"]
|
||||||
|
def hehe():
|
||||||
|
data = {"expr" : "Id = 2153635508","entities" : [{ "logprob":-13.530, "Id":2153635508, "Ti":"libsvm a library for support vector machines", "Y":2011, "CC":7688, "RId":[2060367530, 2109943925, 1576520375, 1512098439, 2172000360, 2087347434, 2124351082, 2104978738, 1618905105, 2132870739, 2157239837, 2161920802, 1510526001, 2056983531, 1480229055, 2151040995, 1621799579, 2153104898, 1543810117, 2137346077, 2141057577, 2047542122, 2097850441, 2140586694, 2164938337, 2137285073, 2103568877, 2138907228, 2145276325, 2096613134, 1556115774, 2110899801, 1564719599, 1775273161, 2039402388, 2100967622, 34176136, 2139526185, 2011741120, 122929263, 2137518678, 2218312210], "AA":[{"AuId":2138800916,"AfId":16733864}, {"AuId":2168176072,"AfId":16733864}] }]}
|
||||||
|
pool = Pool(processes=4) # start 4 worker processes
|
||||||
|
pool.map(f, data["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
if __name__ == '__main__':
|
||||||
|
hehe()
|
@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import web
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/users?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
data = web.input()
|
||||||
|
return data.id2
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
@ -0,0 +1,750 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web,time
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
#'count': '100000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
#'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
#'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId2:
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "3th api > 150 s"
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
if rid4 in Id1:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "4th api > 150 s"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
if rid in Id3:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auidid5api(auid2,deinput,AfId1):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 135:
|
||||||
|
print "5th api > 150 s"
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % auid2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data6 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId2=[]
|
||||||
|
for i3 in data6["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == auid2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId2:
|
||||||
|
if x in AfId1:
|
||||||
|
result.append([deinput[0],auid2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 150:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
return
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
global start_time
|
||||||
|
start_time = time.clock()
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
#print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
print "data1"
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
print "data2"
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
print "data3"
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "data3 > 120 s"
|
||||||
|
break
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
print "operation"
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1:
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
print "data4"
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 120:
|
||||||
|
print "data1 > 120 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 100:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
threads=[]
|
||||||
|
for auid2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(auidid5api,auid2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 100:
|
||||||
|
print "data2 > 100 s"
|
||||||
|
break
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
now = time.clock()
|
||||||
|
exe_time = (float)(now - start_time)
|
||||||
|
if exe_time > 130:
|
||||||
|
print "data1 > 100 s"
|
||||||
|
break
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
if x in AfId2:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
if x in Id2:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
@ -0,0 +1,708 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#import gevent.monkey
|
||||||
|
#gevent.monkey.patch_socket()
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
from multiprocessing.dummy import Pool as ThreadPool
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
for Id in Id3:
|
||||||
|
if rid == Id:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
for y in AfId1:
|
||||||
|
if x == y :
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
for tmp in Id1:
|
||||||
|
if rid4 == tmp:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
for tmp in Id3:
|
||||||
|
if rid == tmp:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
def ididfor(i):
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([xxinput[0],tmp["FId"],i["Id"],xxinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([xxinput[0],tmp["AuId"],i["Id"],xxinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([xxinput[0],CJId3,i["Id"],xxinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([xxinput[0],CJId3,i["Id"],xxinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def idauidfor(i1):
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([xxinput[0],i1["Id"],xxinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([xxinput[0],x["AuId"],i1["Id"],xxinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([xxinput[0],x["FId"],i1["Id"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == xxinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result,start_time,xxinput,FId1,AuId1,CJId1,Id3
|
||||||
|
start_time = time.clock()
|
||||||
|
xxinput=deinput
|
||||||
|
result=[]
|
||||||
|
Id3=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(ididfor,data3["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result,start_time,ReId2,xxinput,AuId2,FId2,CJId2,Id1,AfId1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
start_time = time.clock()
|
||||||
|
xxinput=deinput
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(idauidfor,data1["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result,start_time
|
||||||
|
result=[]
|
||||||
|
start_time = time.clock()
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AfId1:
|
||||||
|
try:
|
||||||
|
if y==x["AfId"]:
|
||||||
|
result.append([deinput[0],y,x["AuId"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result,start_time
|
||||||
|
result=[]
|
||||||
|
start_time = time.clock()
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
print Id1
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
for y in AfId2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
@ -0,0 +1,713 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#import gevent.monkey
|
||||||
|
#gevent.monkey.patch_socket()
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
from multiprocessing.dummy import Pool as ThreadPool
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
for Id in Id3:
|
||||||
|
if rid == Id:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
for y in AfId1:
|
||||||
|
if x == y :
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
for tmp in Id1:
|
||||||
|
if rid4 == tmp:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
for tmp in Id3:
|
||||||
|
if rid == tmp:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
def ididfor(i):
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([xxinput[0],tmp["FId"],i["Id"],xxinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([xxinput[0],tmp["AuId"],i["Id"],xxinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([xxinput[0],CJId3,i["Id"],xxinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([xxinput[0],CJId3,i["Id"],xxinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def idauidfor(i1):
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([xxinput[0],i1["Id"],xxinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([xxinput[0],x["AuId"],i1["Id"],xxinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([xxinput[0],x["FId"],i1["Id"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == xxinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
def auididfor(i1):
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==xxinput[1]:
|
||||||
|
result.append([xxinput[0],xxinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([xxinput[0],i1["Id"],tmp["FId"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([xxinput[0],i1["Id"],tmp["AuId"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==xxinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],i1["Id"],CJId1,xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],i1["Id"],CJId1,xxinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result,start_time,xxinput,FId1,AuId1,CJId1,Id3
|
||||||
|
start_time = time.clock()
|
||||||
|
xxinput=deinput
|
||||||
|
result=[]
|
||||||
|
Id3=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(ididfor,data3["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result,start_time,ReId2,xxinput,AuId2,FId2,CJId2,Id1,AfId1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
start_time = time.clock()
|
||||||
|
xxinput=deinput
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(idauidfor,data1["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result,start_time,Id1,AfId1,xxinput,FId2,AuId2,CJId2
|
||||||
|
result=[]
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
xxinput = deinput
|
||||||
|
start_time = time.clock()
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(auididfor,data1["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AfId1:
|
||||||
|
try:
|
||||||
|
if y==x["AfId"]:
|
||||||
|
result.append([deinput[0],y,x["AuId"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result,start_time
|
||||||
|
result=[]
|
||||||
|
start_time = time.clock()
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
print Id1
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
for y in AfId2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
@ -0,0 +1,732 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#import gevent.monkey
|
||||||
|
#gevent.monkey.patch_socket()
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
from multiprocessing.dummy import Pool as ThreadPool
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
print ">200"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4 = data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
print "Reid"
|
||||||
|
print Reid
|
||||||
|
print ReId4
|
||||||
|
print "deinput"
|
||||||
|
print deinput
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
for Id in Id3:
|
||||||
|
if rid == Id:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
for y in AfId1:
|
||||||
|
if x == y :
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
for tmp in Id1:
|
||||||
|
if rid4 == tmp:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
for tmp in Id3:
|
||||||
|
if rid == tmp:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
def ididfor(i):
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([xxinput[0],tmp["FId"],i["Id"],xxinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([xxinput[0],tmp["AuId"],i["Id"],xxinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([xxinput[0],CJId3,i["Id"],xxinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([xxinput[0],CJId3,i["Id"],xxinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def idauidfor(i1):
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([xxinput[0],i1["Id"],xxinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([xxinput[0],x["AuId"],i1["Id"],xxinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([xxinput[0],x["FId"],i1["Id"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == xxinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
def auididfor(i1):
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==xxinput[1]:
|
||||||
|
result.append([xxinput[0],xxinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([xxinput[0],i1["Id"],tmp["FId"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([xxinput[0],i1["Id"],tmp["AuId"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==xxinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],i1["Id"],CJId1,xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],i1["Id"],CJId1,xxinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
def auau2for(id2):
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==xxinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def auau3for(i1):
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==xxinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result,start_time,xxinput,FId1,AuId1,CJId1,Id3
|
||||||
|
start_time = time.clock()
|
||||||
|
xxinput=deinput
|
||||||
|
result=[]
|
||||||
|
Id3=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(ididfor,data3["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result,start_time,ReId2,xxinput,AuId2,FId2,CJId2,Id1,AfId1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
start_time = time.clock()
|
||||||
|
xxinput=deinput
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(idauidfor,data1["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result,start_time,Id1,AfId1,xxinput,FId2,AuId2,CJId2
|
||||||
|
result=[]
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
xxinput = deinput
|
||||||
|
start_time = time.clock()
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(auididfor,data1["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AfId1:
|
||||||
|
try:
|
||||||
|
if y==x["AfId"]:
|
||||||
|
result.append([deinput[0],y,x["AuId"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result,start_time,AfId2,xxinput,Id2,Id1,AfId1
|
||||||
|
result=[]
|
||||||
|
AfId2=[]
|
||||||
|
Id2=[]
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
xxinput = deinput
|
||||||
|
start_time = time.clock()
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(auau2for,data2["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(auau3for,data1["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
for y in AfId2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
@ -0,0 +1,707 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#import gevent.monkey
|
||||||
|
#gevent.monkey.patch_socket()
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
from multiprocessing.dummy import Pool as ThreadPool
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
for Id in Id3:
|
||||||
|
if rid == Id:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
for y in AfId1:
|
||||||
|
if x == y :
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
for tmp in Id1:
|
||||||
|
if rid4 == tmp:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
for tmp in Id3:
|
||||||
|
if rid == tmp:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
def ididfor(i):
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([xxinput[0],tmp["FId"],i["Id"],xxinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([xxinput[0],tmp["AuId"],i["Id"],xxinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([xxinput[0],CJId3,i["Id"],xxinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([xxinput[0],CJId3,i["Id"],xxinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result,start_time,xxinput,FId1,AuId1,CJId1,Id3
|
||||||
|
start_time = time.clock()
|
||||||
|
xxinput=deinput
|
||||||
|
result=[]
|
||||||
|
Id3=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(ididfor,data3["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result,start_time
|
||||||
|
start_time = time.clock()
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result,start_time
|
||||||
|
result=[]
|
||||||
|
start_time = time.clock()
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AfId1:
|
||||||
|
try:
|
||||||
|
if y==x["AfId"]:
|
||||||
|
result.append([deinput[0],y,x["AuId"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result,start_time
|
||||||
|
result=[]
|
||||||
|
start_time = time.clock()
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
print Id1
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
for y in AfId2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
Binary file not shown.
@ -0,0 +1,756 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#import gevent.monkey
|
||||||
|
#gevent.monkey.patch_socket()
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent,os,sys
|
||||||
|
import web
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
#from multiprocessing.dummy import Pool as ThreadPool
|
||||||
|
#from multiprocessing import Pool
|
||||||
|
#import multiprocessing, logging
|
||||||
|
#logger = multiprocessing.log_to_stderr()
|
||||||
|
#logger.setLevel(multiprocessing.SUBDEBUG)
|
||||||
|
#from gevent.pool import Pool
|
||||||
|
from multiprocessing import Process, Lock
|
||||||
|
lock = Lock()
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
print ">200"
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4 = data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
for Id in Id3:
|
||||||
|
if rid == Id:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
for y in AfId1:
|
||||||
|
if x == y :
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
for tmp in Id1:
|
||||||
|
if rid4 == tmp:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
for tmp in Id3:
|
||||||
|
if rid == tmp:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
now_time = time.clock()
|
||||||
|
exe_time = (float)(now_time - start_time)
|
||||||
|
if exe_time > 200:
|
||||||
|
return
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '1000000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
def ididfor(lock,i):
|
||||||
|
#lock.acquire()
|
||||||
|
with lock:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
#lock.release()
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
with lock:
|
||||||
|
result.append([xxinput[0],tmp["FId"],i["Id"],xxinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
with lock:
|
||||||
|
result.append([xxinput[0],tmp["AuId"],i["Id"],xxinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
with lock:
|
||||||
|
result.append([xxinput[0],CJId3,i["Id"],xxinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
with lock:
|
||||||
|
result.append([xxinput[0],CJId3,i["Id"],xxinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def idauidfor(i1):
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([xxinput[0],i1["Id"],xxinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([xxinput[0],x["AuId"],i1["Id"],xxinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([xxinput[0],x["FId"],i1["Id"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == xxinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
def auididfor(i1):
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==xxinput[1]:
|
||||||
|
result.append([xxinput[0],xxinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([xxinput[0],i1["Id"],tmp["FId"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([xxinput[0],i1["Id"],tmp["AuId"],xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==xxinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],i1["Id"],CJId1,xxinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([xxinput[0],i1["Id"],CJId1,xxinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
def auau2for(id2):
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==xxinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def auau3for(i1):
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==xxinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result,start_time,xxinput,FId1,AuId1,CJId1,Id3
|
||||||
|
start_time = time.clock()
|
||||||
|
xxinput=deinput
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
Id3=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
print "before data1"
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
print "before data2"
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
print "threads"
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
#p = Pool()
|
||||||
|
#for i in data3["entities"]:
|
||||||
|
# p.map(ididfor,i)
|
||||||
|
#p.map(ididfor,data3["entities"])
|
||||||
|
#p.close()
|
||||||
|
#p.join()
|
||||||
|
threads = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
p=Process(target=ididfor,args=(lock,i))
|
||||||
|
p.daemon = True
|
||||||
|
threads.append(p)
|
||||||
|
for i in range(len(threads)):
|
||||||
|
threads[i].start()
|
||||||
|
for j in range(len(threads)):
|
||||||
|
threads[j].join()
|
||||||
|
|
||||||
|
'''for data in data3["entities"]:
|
||||||
|
Process(target=ididfor,args=(data,)).start()
|
||||||
|
print "threads done"'''
|
||||||
|
print Id3
|
||||||
|
'''for i in data3["entities"]:
|
||||||
|
p=Process(target=ididfor,args=(i,))
|
||||||
|
p.start()'''
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
print "before gevent"
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result,start_time,ReId2,xxinput,AuId2,FId2,CJId2,Id1,AfId1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
start_time = time.clock()
|
||||||
|
xxinput=deinput
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(idauidfor,data1["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result,start_time,Id1,AfId1,xxinput,FId2,AuId2,CJId2
|
||||||
|
result=[]
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
xxinput = deinput
|
||||||
|
start_time = time.clock()
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(auididfor,data1["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AfId1:
|
||||||
|
try:
|
||||||
|
if y==x["AfId"]:
|
||||||
|
result.append([deinput[0],y,x["AuId"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result,start_time,AfId2,xxinput,Id2,Id1,AfId1
|
||||||
|
result=[]
|
||||||
|
AfId2=[]
|
||||||
|
Id2=[]
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
xxinput = deinput
|
||||||
|
start_time = time.clock()
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(auau2for,data2["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
pool = ThreadPool(4)
|
||||||
|
pool.map(auau3for,data1["entities"])
|
||||||
|
pool.close()
|
||||||
|
pool.join()
|
||||||
|
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
for y in AfId2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
@ -0,0 +1,713 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#import gevent.monkey
|
||||||
|
#gevent.monkey.patch_socket()
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
for Id in Id3:
|
||||||
|
if rid == Id:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
'''for Reid in ReId1:
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
for Id in Id3:
|
||||||
|
if rid == Id:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])'''
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
for author2 in AuId2:
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
for y in AfId1:
|
||||||
|
if x == y :
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
for rid in ReId2:
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
for tmp in Id1:
|
||||||
|
if rid4 == tmp:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AfId1:
|
||||||
|
try:
|
||||||
|
if y==x["AfId"]:
|
||||||
|
result.append([deinput[0],y,x["AuId"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
for Aid in Id1:
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
for tmp in Id3:
|
||||||
|
if rid == tmp:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
print Id1
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
for y in AfId2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
for aaid1 in Id1:
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
@ -0,0 +1,663 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#import gevent.monkey
|
||||||
|
#gevent.monkey.patch_socket()
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
for Id in Id3:
|
||||||
|
if rid == Id:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
for y in AfId1:
|
||||||
|
if x == y :
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
for tmp in Id1:
|
||||||
|
if rid4 == tmp:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AfId1:
|
||||||
|
try:
|
||||||
|
if y==x["AfId"]:
|
||||||
|
result.append([deinput[0],y,x["AuId"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
for Aid in Id1:
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
for tmp in Id3:
|
||||||
|
if rid == tmp:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
print Id1
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
for y in AfId2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
for aaid1 in Id1:
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
@ -0,0 +1,669 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#import gevent.monkey
|
||||||
|
#gevent.monkey.patch_socket()
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
for Id in Id3:
|
||||||
|
if rid == Id:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
for y in AfId1:
|
||||||
|
if x == y :
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
for tmp in Id1:
|
||||||
|
if rid4 == tmp:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
for tmp in Id3:
|
||||||
|
if rid == tmp:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AfId1:
|
||||||
|
try:
|
||||||
|
if y==x["AfId"]:
|
||||||
|
result.append([deinput[0],y,x["AuId"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
print Id1
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
for y in AfId2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
for aaid1 in Id1:
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
@ -0,0 +1,675 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#import gevent.monkey
|
||||||
|
#gevent.monkey.patch_socket()
|
||||||
|
from gevent import monkey, sleep
|
||||||
|
monkey.patch_all()
|
||||||
|
import gevent
|
||||||
|
import web
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
def api1(deinput):
|
||||||
|
global data1
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data1=json.loads(data)
|
||||||
|
|
||||||
|
def api2(deinput):
|
||||||
|
global data2
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
data2=json.loads(data)
|
||||||
|
|
||||||
|
def api4(deinput):
|
||||||
|
global data4
|
||||||
|
exp4 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api5(deinput):
|
||||||
|
global data5
|
||||||
|
exp5 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp5,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data5 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def api3(deinput):
|
||||||
|
global data3
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3):
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
for Id in Id3:
|
||||||
|
if rid == Id:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
|
||||||
|
def idauid3api(author2,deinput,AfId1):
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
for y in AfId1:
|
||||||
|
if x == y :
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
def idauid4api(rid,deinput,Id1):
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
for tmp in Id1:
|
||||||
|
if rid4 == tmp:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
|
||||||
|
def auidid4api(Aid,deinput,Id3):
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
for tmp in Id3:
|
||||||
|
if rid == tmp:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
|
||||||
|
def auau3api(aaid1,deinput,Id2):
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
threads=[]
|
||||||
|
threads.append(gevent.spawn(api1,deinput))
|
||||||
|
threads.append(gevent.spawn(api2,deinput))
|
||||||
|
threads.append(gevent.spawn(api3,deinput))
|
||||||
|
threads.append(gevent.spawn(api4,deinput))
|
||||||
|
threads.append(gevent.spawn(api5,deinput))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1,data3,data5)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data4,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput,data4,data5,data3)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
def idid(deinput,data4,data5,data3):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
data1 = data4
|
||||||
|
data2 = data5
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
try:
|
||||||
|
if i["Id"] not in Id3:
|
||||||
|
Id3.append(i["Id"])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
threads=[]
|
||||||
|
for Reid in ReId1:
|
||||||
|
threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data4,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
|
||||||
|
data1 = data2
|
||||||
|
data2 = data4
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for author2 in AuId2:
|
||||||
|
threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for rid in ReId2:
|
||||||
|
threads.append(gevent.spawn(idauid4api,rid,deinput,Id1))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1,data3,data5):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
data2 = data5
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AfId1:
|
||||||
|
try:
|
||||||
|
if y==x["AfId"]:
|
||||||
|
result.append([deinput[0],y,x["AuId"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for Aid in Id1:
|
||||||
|
threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
global result
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
print Id1
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
for y in AfId2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
threads=[]
|
||||||
|
for aaid1 in Id1:
|
||||||
|
threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2))
|
||||||
|
gevent.joinall(threads)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
Binary file not shown.
@ -0,0 +1,727 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import web
|
||||||
|
import httplib, urllib, base64
|
||||||
|
import json
|
||||||
|
|
||||||
|
urls=(
|
||||||
|
'/bof333?(.+)','get_user'
|
||||||
|
)
|
||||||
|
app = web.application(urls,globals())
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class get_user:
|
||||||
|
def GET(self,user):
|
||||||
|
input_data = web.input()
|
||||||
|
#input = [2157025439,2139398774]
|
||||||
|
input=[int(input_data.id1),int(input_data.id2)]
|
||||||
|
encodeinput = json.dumps(input)
|
||||||
|
deinput = json.loads(encodeinput)
|
||||||
|
print deinput
|
||||||
|
exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data1 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data2 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
flag=0
|
||||||
|
try:
|
||||||
|
print data1["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag=10;#id1 is Id
|
||||||
|
try:
|
||||||
|
print data2["entities"][0]["Id"]
|
||||||
|
except(KeyError,IndexError):
|
||||||
|
flag+=1;#id2 is Id
|
||||||
|
if flag == 0:
|
||||||
|
result=auau(deinput,data1,data2)
|
||||||
|
elif flag == 1:
|
||||||
|
result=auidid(deinput,data1)
|
||||||
|
elif flag == 10:
|
||||||
|
result=idauid(deinput,data2)
|
||||||
|
elif flag == 11:
|
||||||
|
result=idid(deinput)
|
||||||
|
else:
|
||||||
|
print "FLAG : %d " % flag
|
||||||
|
deresult = json.dumps(result)
|
||||||
|
print deresult
|
||||||
|
print "Total Size: %d " % len(result)
|
||||||
|
return deresult
|
||||||
|
|
||||||
|
def idid(deinput):
|
||||||
|
#'''''''''''''''1st API''''''''''''''''''''''''
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXididXXXXXXXXXXX"
|
||||||
|
exp1 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data1 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
#'''''''''''''''2nd API''''''''''''''''''''''''
|
||||||
|
exp2 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data2 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
#'''''''''''''''3rd API''''''''''''''''''''''''
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
#''''''''''''''''''data 1'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
ReId1=data1["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId1 = []
|
||||||
|
try:
|
||||||
|
FId1 = data1["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId1 = []
|
||||||
|
try:
|
||||||
|
AuId1= data1["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId1=[]
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= data1["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 2'''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w
|
||||||
|
Id3 = []
|
||||||
|
FId3 = []
|
||||||
|
AuId3 = []
|
||||||
|
CJId3 = []
|
||||||
|
for i in data3["entities"]:
|
||||||
|
# id -> F.FId -> id -> id
|
||||||
|
try:
|
||||||
|
FId_data3 = i["F"]
|
||||||
|
for tmp in FId_data3:
|
||||||
|
for x in FId1:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]])
|
||||||
|
#FId3.append(tmp["FId"])#
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> AA.AuId -> id -> id
|
||||||
|
try:
|
||||||
|
AuId_data3=i["AA"]
|
||||||
|
for tmp in AuId_data3:
|
||||||
|
for x in AuId1:
|
||||||
|
if x["AuId"]==tmp["AuId"]:
|
||||||
|
result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]])
|
||||||
|
#AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
# id -> C.CId/J.JId -> id -> id
|
||||||
|
try:
|
||||||
|
CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
try:
|
||||||
|
CJId3=i["C"]["CId"]
|
||||||
|
if CJId3==CJId1:
|
||||||
|
result.append([deinput[0],CJId3,i["Id"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
#''''''''''''''''''operation''''''''''1 and 2 hop'''''''''''''''''
|
||||||
|
#id -> id
|
||||||
|
for Reid in ReId1:
|
||||||
|
if deinput[1] == Reid:
|
||||||
|
result.append([deinput[0],Reid])
|
||||||
|
break
|
||||||
|
#id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
#print 'x: %d ' % x['FId']
|
||||||
|
for y in FId1:
|
||||||
|
#print y['FId']
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],x['FId'],deinput[1]])
|
||||||
|
#id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId1:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],x['AuId'],deinput[1]])
|
||||||
|
#id -> C.CId/J.JId -> id
|
||||||
|
if CJId1==CJId2:
|
||||||
|
result.append([deinput[0],CJId1,deinput[1]])
|
||||||
|
|
||||||
|
#''''''''''''''''''''4th API'''''''''''''''''''''''''''''
|
||||||
|
#id -> id -> XXXXXX -> id ************************************************************need gevent
|
||||||
|
for Reid in ReId1:
|
||||||
|
exp4 = 'Id = %d' % Reid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
try:
|
||||||
|
FId4 = data4["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId4 = []
|
||||||
|
try:
|
||||||
|
AuId4= data4["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId4=[]
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId4= data4["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId4=[]
|
||||||
|
|
||||||
|
#id -> id -> id #id -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Reid,deinput[1]])
|
||||||
|
for Id in Id3:
|
||||||
|
if rid == Id:
|
||||||
|
result.append([deinput[0],Reid,rid,deinput[1]])
|
||||||
|
#id -> id -> F.FId -> id
|
||||||
|
for x in FId2:
|
||||||
|
for y in FId4:
|
||||||
|
if y['FId']==x['FId']:
|
||||||
|
result.append([deinput[0],Reid,x['FId'],deinput[1]])
|
||||||
|
#id -> id -> AA.AuId -> id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AuId4:
|
||||||
|
if y['AuId']==x['AuId']:
|
||||||
|
result.append([deinput[0],Reid,x['AuId'],deinput[1]])
|
||||||
|
#id -> id -> C.CId/J.JId -> id
|
||||||
|
if CJId4==CJId2:
|
||||||
|
result.append([deinput[0],Reid,CJId4,deinput[1]])
|
||||||
|
return result
|
||||||
|
|
||||||
|
def idauid(deinput,data2):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXidauidXXXXXXXXXXX"
|
||||||
|
'''exp1 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'Id,AA.AuId,AA.AfId,F.FId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data1 = json.loads(data)
|
||||||
|
conn.close()'''
|
||||||
|
data1 = data2
|
||||||
|
#'''''''''''''''''''''''''2nd API'''''''''''''''''''''''''''''''''
|
||||||
|
exp2 = 'Id = %d' % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'RId,AA.AuId,AA.AfId,F.FId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data2 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data 2")
|
||||||
|
print data2
|
||||||
|
|
||||||
|
try:
|
||||||
|
ReId2 = data2["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId2 = []
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2 = data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2 = []
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2 = data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2 =[]
|
||||||
|
|
||||||
|
for tmp in AuId2:
|
||||||
|
if deinput[1] == tmp["AuId"]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop)
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
print ("Data1")
|
||||||
|
print data1
|
||||||
|
|
||||||
|
AfId1=[]
|
||||||
|
Id1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
for tmp in ReId2:
|
||||||
|
if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop)
|
||||||
|
result.append([deinput[0],i1["Id"],deinput[1]])
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
for x in AuId2:
|
||||||
|
if x["AuId"] == tmp["AuId"]:
|
||||||
|
# Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~)
|
||||||
|
result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]])
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"] == tmp["FId"]:
|
||||||
|
# Id -> F.FId -> Id -> AA.AuId (3-hop)
|
||||||
|
result.append([deinput[0],x["FId"],i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in i1["AA"]:
|
||||||
|
if tmp["AuId"] == deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop)
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],CJId2,i1["Id"],deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
for author2 in AuId2:
|
||||||
|
exp3 = "Composite(AA.AuId = %d )" % author2["AuId"]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
AfId3=[]
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
try:
|
||||||
|
for tmp in i3["AA"]:
|
||||||
|
if tmp["AuId"] == author2["AuId"]:
|
||||||
|
if tmp["AfId"] not in AfId3:
|
||||||
|
AfId3.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
for x in AfId3:
|
||||||
|
for y in AfId1:
|
||||||
|
if x == y :
|
||||||
|
result.append([deinput[0],author2["AuId"],x,deinput[1]])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
for rid in ReId2:
|
||||||
|
exp4 = 'Id = %d' % rid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '10000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id -> id
|
||||||
|
for rid4 in ReId4:
|
||||||
|
for tmp in Id1:
|
||||||
|
if rid4 == tmp:
|
||||||
|
result.append([deinput[0],rid,rid4,deinput[1]])
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def auidid(deinput,data1):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauididXXXXXXXXXXX"
|
||||||
|
'''exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp1,
|
||||||
|
'offset': '0',
|
||||||
|
'model': 'latest',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data1 = json.loads(data)
|
||||||
|
conn.close()'''
|
||||||
|
#print data
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''2nd API'''''''''''''''''''''''''''''''''
|
||||||
|
exp2 = 'Id = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'count': '100000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'F.FId,AA.AuId,AA.AfId,C.CId,J.JId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data2 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data2
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
exp3 = 'RId = %d' % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'Id',
|
||||||
|
'model': 'latest',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
try:
|
||||||
|
FId2 = data2["entities"][0]["F"]
|
||||||
|
except (KeyError):
|
||||||
|
FId2 = []
|
||||||
|
try:
|
||||||
|
AuId2= data2["entities"][0]["AA"]
|
||||||
|
except (KeyError):
|
||||||
|
AuId2=[]
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["J"]["JId"]
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId2= data2["entities"][0]["C"]["CId"]
|
||||||
|
except:
|
||||||
|
CJId2=[]
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
if i1["Id"]==deinput[1]:
|
||||||
|
result.append([deinput[0],deinput[1]]) # AA.AuId -> Id
|
||||||
|
try:
|
||||||
|
FId1 = i1["F"]
|
||||||
|
for tmp in FId1:
|
||||||
|
for x in FId2:
|
||||||
|
if x["FId"]==tmp["FId"]:
|
||||||
|
# AA.AuId -> Id -> F.FId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
for x in AuId2:
|
||||||
|
if tmp["AuId"]==x["AuId"]:
|
||||||
|
# AA.AuId -> Id -> AA.AuId -> Id
|
||||||
|
result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except(KeyError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except (KeyError):
|
||||||
|
try:
|
||||||
|
CJId1= i1["C"]["CId"]
|
||||||
|
if CJId1 == CJId2:
|
||||||
|
result.append([deinput[0],i1["Id"],CJId1,deinput[1]])
|
||||||
|
except:
|
||||||
|
CJId1=[]
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId -> Id
|
||||||
|
for x in AuId2:
|
||||||
|
for y in AfId1:
|
||||||
|
try:
|
||||||
|
if y==x["AfId"]:
|
||||||
|
result.append([deinput[0],y,x["AuId"],deinput[1]])
|
||||||
|
except(KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 3''''''''''''''''''''''''''''''''
|
||||||
|
Id3 = []
|
||||||
|
for i3 in data3["entities"]:
|
||||||
|
Id3.append(i3["Id"])
|
||||||
|
|
||||||
|
#************************************************************need gevent
|
||||||
|
#''''''''''''''''''''4th API''''''''''''''''''''''''''''''''''''
|
||||||
|
for Aid in Id1:
|
||||||
|
exp4 = 'Id = %d' % Aid
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp4,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data4 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
#print data4
|
||||||
|
try:
|
||||||
|
ReId4= data4["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId4 = []
|
||||||
|
# AA.AuId -> id -> id # AA.AuId -> id -> id -> id
|
||||||
|
for rid in ReId4:
|
||||||
|
if deinput[1] == rid:
|
||||||
|
result.append([deinput[0],Aid,deinput[1]])
|
||||||
|
for tmp in Id3:
|
||||||
|
if rid == tmp:
|
||||||
|
result.append([deinput[0],Aid,rid,deinput[1]])
|
||||||
|
return result
|
||||||
|
|
||||||
|
def auau(deinput,data1,data2):
|
||||||
|
#'''''''''''''''''''''''''1st API'''''''''''''''''''''''''''''''''
|
||||||
|
result=[]
|
||||||
|
print "XXXXXXXXXXauidauidXXXXXXXXXX"
|
||||||
|
'''exp1 = "Composite(AA.AuId = %d )" % deinput[0]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr': exp1,
|
||||||
|
'model': 'latest',
|
||||||
|
'offset': '0',
|
||||||
|
'count': '10000',
|
||||||
|
'attributes': 'Id,AA.AfId,AA.AuId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data1 = json.loads(data)
|
||||||
|
conn.close()'''
|
||||||
|
#'''''''''''''''''''''''''2nd API'''''''''''''''''''''''''''''''''
|
||||||
|
'''exp2 = "Composite(AA.AuId = %d )" % deinput[1]
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp2,
|
||||||
|
'count': '1000',
|
||||||
|
'model': 'latest',
|
||||||
|
'attributes': 'Id,AA.AuId,AA.AfId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data2 = json.loads(data)
|
||||||
|
conn.close()'''
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 2''''''''''''''''''''''''''''''''
|
||||||
|
AfId2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
try:
|
||||||
|
AuId2= id2["AA"]
|
||||||
|
for tmp in AuId2:
|
||||||
|
if tmp["AuId"]==deinput[1]:
|
||||||
|
if tmp["AfId"] not in AfId2:
|
||||||
|
AfId2.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
Id2=[]
|
||||||
|
for id2 in data2["entities"]:
|
||||||
|
Id2.append(id2["Id"])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''data 1''''''''''''''''''''''''''''''''
|
||||||
|
#print data1
|
||||||
|
Id1=[]
|
||||||
|
AfId1=[]
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
Id1.append(i1["Id"])
|
||||||
|
print Id1
|
||||||
|
for i1 in data1["entities"]:
|
||||||
|
try:
|
||||||
|
AuId1= i1["AA"]
|
||||||
|
for tmp in AuId1:
|
||||||
|
if tmp["AuId"]==deinput[0]:
|
||||||
|
if tmp["AfId"] not in AfId1:
|
||||||
|
AfId1.append(tmp["AfId"])
|
||||||
|
break
|
||||||
|
except (KeyError):
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
# AA.AuId -> AA.AfId -> AA.AuId
|
||||||
|
for x in AfId1:
|
||||||
|
for y in AfId2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
# AA.AuId -> Id -> AA.AuId
|
||||||
|
for x in Id1:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],x,deinput[1]])
|
||||||
|
|
||||||
|
#'''''''''''''''''''''''''3rd API'''''''''''''''''''''''''''''''''
|
||||||
|
for aaid1 in Id1:
|
||||||
|
exp3 = 'Id = %d' % aaid1
|
||||||
|
params1 = urllib.urlencode({
|
||||||
|
'expr':exp3,
|
||||||
|
'count': '100000',
|
||||||
|
'attributes': 'RId',
|
||||||
|
'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6',
|
||||||
|
})
|
||||||
|
conn = httplib.HTTPSConnection('oxfordhk.azure-api.net')
|
||||||
|
conn.request("GET", "/academic/v1.0/evaluate?%s" % params1)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
data3 = json.loads(data)
|
||||||
|
conn.close()
|
||||||
|
try:
|
||||||
|
ReId3=data3["entities"][0]["RId"]
|
||||||
|
except (KeyError):
|
||||||
|
ReId3 = []
|
||||||
|
# AA.AuId -> Id -> Id -> AA.AuId
|
||||||
|
for x in ReId3:
|
||||||
|
for y in Id2:
|
||||||
|
if x==y:
|
||||||
|
result.append([deinput[0],aaid1,x,deinput[1]])
|
||||||
|
return result
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run()
|
Binary file not shown.
Loading…
Reference in new issue