PageRenderTime 56ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/DDG/Spice/ESPN/Soccer.pm

https://github.com/ehsan/zeroclickinfo-spice
Perl | 537 lines | 525 code | 9 blank | 3 comment | 3 complexity | b19cf60ab4406f2d8fef07c431a031a5 MD5 | raw file
  1. package DDG::Spice::ESPN::Soccer;
  2. use DDG::Spice;
  3. use Time::localtime;
  4. description "News and stats for soccer players";
  5. name "ESPN Soccer";
  6. primary_example_queries "Wayne Rooney";
  7. topics "entertainment", "special_interest";
  8. category "reference";
  9. code_url "https://github.com/duckduckgo/zeroclickinfo-spice/blob/master/lib/DDG/Spice/ESPN/ENG1.pm";
  10. attribution web => ['http://duckduckgo.com', 'DuckDuckGo'],
  11. twitter => ['http://twitter.com/duckduckgo', 'duckduckgo'];
  12. my %leagues = (
  13. 'eng.1' => {
  14. "charlie adam" => 108350,
  15. "gabriel agbonlahor" => 70428,
  16. "daniel agger" => 41844,
  17. "sergio agüero" => 44927,
  18. "chuba akpom" => 181092,
  19. "marc albrighton" => 132107,
  20. "neil alexander" => 116371,
  21. "daniel alfei" => 149395,
  22. "joe allen" => 93736,
  23. "jozy altidore" => 75589,
  24. "sone aluko" => 70615,
  25. "morgan amalfitano" => 84463,
  26. "jordi amat" => 144477,
  27. "sammy ameobi" => 158142,
  28. "shola ameobi" => 8958,
  29. "fernando amorebieta" => 50453,
  30. "ben amos" => 120863,
  31. "nicolas anelka" => 10862,
  32. "victor anichebe" => 74599,
  33. "vurnon anita" => 77226,
  34. "marko arnautovic" => 98193,
  35. "mikel arteta" => 9840,
  36. "iago aspas" => 92800,
  37. "oussama assaidi" => 140799,
  38. "daniel ayala" => 139243,
  39. "césar azpilicueta" => 97770,
  40. "demba ba" => 99215,
  41. "el-hadj ba" => 171680,
  42. "leandro bacuna" => 138664,
  43. "leighton baines" => 19952,
  44. "nathan baker" => 121171,
  45. "barry bannan" => 130079,
  46. "ross barkley" => 152469,
  47. "gareth barry" => 8185,
  48. "sebastien bassong" => 66657,
  49. "luciano becchio" => 43673,
  50. "asmir begovic" => 92885,
  51. "craig bellamy" => 8952,
  52. "hatem ben arfa" => 43340,
  53. "nicklas bendtner" => 71647,
  54. "elliott bennett" => 105584,
  55. "joseph bennett" => 127261,
  56. "ryan bennett" => 98290,
  57. "darren bent" => 8111,
  58. "christian benteke" => 106957,
  59. "saido berahino" => 151276,
  60. "dimitar berbatov" => 12724,
  61. "paulinho" => 139718,
  62. "gael bigirimana" => 150760,
  63. "derek boateng" => 103114,
  64. "yannick bolasie" => 121921,
  65. "wilfried bony" => 153824,
  66. "willian" => 178487,
  67. "fabio borini" => 140931,
  68. "artur boruc" => 22764,
  69. "jordan bowery" => 124266,
  70. "dedryck boyata" => 143592,
  71. "george boyd" => 26378,
  72. "robert brady" => 153310,
  73. "matthew briggs" => 99497,
  74. "leon britton" => 7957,
  75. "wes brown" => 8866,
  76. "alex bruce" => 43942,
  77. "chris brunt" => 41967,
  78. "mark bunn" => 9240,
  79. "jacob butterfield" => 107609,
  80. "alexander büttner" => 124933,
  81. "yohan cabaye" => 69450,
  82. "gary cahill" => 40509,
  83. "geoff cameron" => 118125,
  84. "lee camp" => 29000,
  85. "fraizer campbell" => 42248,
  86. "jose ruiz herrera canas" => 130131,
  87. "etienne capoue" => 84892,
  88. "michael carrick" => 7971,
  89. "thomas carroll" => 155736,
  90. "kevin theopile catherine" => 129415,
  91. "lee cattermole" => 72918,
  92. "steven caulker" => 132436,
  93. "santi cazorla" => 40202,
  94. "petr cech" => 13069,
  95. "ondrej celustka" => 140953,
  96. "nacer chadli" => 122633,
  97. "marouane chamakh" => 84609,
  98. "callum chambers" => 176266,
  99. "james chester" => 108328,
  100. "vlad chiriches" => 164764,
  101. "papiss demba cisse" => 101423,
  102. "aly cissokho" => 92704,
  103. "ciaran clark" => 129754,
  104. "tom cleverley" => 108327,
  105. "gaël clichy" => 35099,
  106. "nathaniel clyne" => 127865,
  107. "jack colback" => 123697,
  108. "ashley cole" => 8054,
  109. "joe cole" => 7976,
  110. "seamus coleman" => 131639,
  111. "james collins" => 5527,
  112. "jack collison" => 105533,
  113. "fabricio coloccini" => 12265,
  114. "matthew connolly" => 86405,
  115. "jack cork" => 91481,
  116. "andreas cornelius" => 176668,
  117. "philippe coutinho" => 130372,
  118. "don cowie" => 6925,
  119. "peter crouch" => 5388,
  120. "carlos jimenez cuellar" => 28541,
  121. "fabio" => 122463,
  122. "rafael" => 25409,
  123. "luke daniels" => 82889,
  124. "ben davies" => 6327,
  125. "curtis davies" => 39488,
  126. "kelvin davis" => 5278,
  127. "steven davis" => 161788,
  128. "craig dawson" => 133938,
  129. "michael dawson" => 19812,
  130. "kevin de bruyne " => 134947,
  131. "david de gea" => 108482,
  132. "jonathan de guzman" => 69579,
  133. "mathieu debuchy" => 69458,
  134. "jermain defoe" => 7975,
  135. "damien delaney" => 7875,
  136. "fabian delph" => 98926,
  137. "mousa dembele" => 67490,
  138. "guy demel" => 84798,
  139. "gerard deulofeu" => 156615,
  140. "mobido diakite" => 87017,
  141. "mohamed diame" => 86233,
  142. "alou diarra" => 86228,
  143. "kagisho dikgacoi" => 89826,
  144. "sylvain distin" => 10438,
  145. "guilherme do prado" => 36774,
  146. "stephen dobbie" => 148773,
  147. "ji dong-won" => 150375,
  148. "graham dorrans" => 61892,
  149. "oscar" => 173667,
  150. "stewart downing" => 21187,
  151. "damien duff" => 7779,
  152. "paul dummett" => 167118,
  153. "nathan dyer" => 67796,
  154. "edin dzeko" => 102337,
  155. "karim el ahmadi" => 42176,
  156. "robert elliot" => 47039,
  157. "johan elmander" => 14401,
  158. "ahmed elmohamady" => 145468,
  159. "christian eriksen" => 144130,
  160. "michael essien" => 9799,
  161. "neil etheridge" => 152246,
  162. "matthew etherington" => 8157,
  163. "samuel eto'o" => 11718,
  164. "samuel etoo" => 11718,
  165. "jonathan evans" => 83176,
  166. "patrice evra" => 21931,
  167. "lukasz fabianski" => 77403,
  168. "abdoulaye faye" => 21990,
  169. "marouane fellaini" => 84535,
  170. "leroy fer" => 113083,
  171. "rio ferdinand" => 7825,
  172. "maynor figueroa" => 93156,
  173. "mathieu flamini" => 40501,
  174. "john flanagan" => 22992,
  175. "steven fletcher" => 42189,
  176. "chico" => 121595,
  177. "jose fonte" => 104172,
  178. "ben foster" => 22777,
  179. "daniel fox" => 43922,
  180. "david fox" => 29359,
  181. "brad friedel" => 7777,
  182. "emmanuel frimpong" => 127136,
  183. "ezekiel fryers" => 167113,
  184. "josé campaña" => 158259,
  185. "daniel gabbidon" => 5537,
  186. "javi garcia" => 68489,
  187. "craig gardner" => 73339,
  188. "javier garrido" => 40411,
  189. "owen garvan" => 46329,
  190. "dwight gayle" => 168992,
  191. "steven gerrard" => 7935,
  192. "rudy gestede" => 113079,
  193. "emanuele giaccherini" => 134438,
  194. "kieran gibbs" => 99500,
  195. "darron gibson" => 71653,
  196. "ryan giggs" => 8853,
  197. "olivier giroud" => 88965,
  198. "serge gnabry" => 178980,
  199. "dan gosling" => 93325,
  200. "yoan gouffran" => 101379,
  201. "danny graham" => 159274,
  202. "adlene guedioura" => 144515,
  203. "magaye gueye" => 128904,
  204. "sandro" => 147337,
  205. "aron gunnarsson" => 95094,
  206. "jonás gutiérrez" => 51559,
  207. "brad guzan" => 56935,
  208. "brede hangeland" => 13269,
  209. "steve harper" => 8948,
  210. "joe hart" => 30462,
  211. "eden hazard" => 101390,
  212. "john heitinga" => 10004,
  213. "nicklas helenius" => 153920,
  214. "jordan henderson" => 127262,
  215. "chris herd" => 113837,
  216. "javier hernández" => 146419,
  217. "pablo" => 76090,
  218. "lewis holtby" => 122289,
  219. "jos hooiveld" => 31806,
  220. "wesley hoolahan" => 16696,
  221. "gary hooper" => 66564,
  222. "tim howard" => 34158,
  223. "jonathan howson" => 83517,
  224. "tom huddlestone" => 26412,
  225. "mark hudson" => 187814,
  226. "aaron hughes" => 8953,
  227. "robert huth" => 18891,
  228. "jordan ibe" => 164646,
  229. "tiago ilori" => 162945,
  230. "ryan inniss" => 172971,
  231. "stephen ireland" => 46525,
  232. "branislav ivanovic" => 83519,
  233. "jussi jaaskelainen" => 7908,
  234. "phil jagielka" => 4745,
  235. "eldin jakupovic" => 69318,
  236. "adnan januzaj" => 186432,
  237. "matthew jarvis" => 39484,
  238. "mile jedinak" => 85979,
  239. "nikica jelavic" => 39511,
  240. "carl jenkinson" => 150844,
  241. "cameron jerome" => 43465,
  242. "declan john" => 133463,
  243. "adam johnson" => 55814,
  244. "bradley johnson" => 46275,
  245. "glen johnson" => 23650,
  246. "billy jones" => 38871,
  247. "brad jones" => 46050,
  248. "kenwyne jones" => 42600,
  249. "phil jones" => 140032,
  250. "stevan jovetic" => 119612,
  251. "younes kaboul" => 42191,
  252. "alexander kacaniklic" => 108312,
  253. "shinji kagawa" => 102139,
  254. "harry kane" => 142200,
  255. "giorgos karagounis" => 57129,
  256. "pajtim kasami" => 146384,
  257. "jimmy kebe" => 86232,
  258. "martin kelly" => 123515,
  259. "ki sung-yueng" => 122608,
  260. "kim bo-kyung" => 144004,
  261. "aleksandar kolarov" => 103939,
  262. "vincent kompany" => 72935,
  263. "arouna koné" => 76732,
  264. "robert koren" => 32704,
  265. "laurent koscielny" => 88970,
  266. "libor kozák" => 121399,
  267. "tim krul" => 85285,
  268. "adam lallana" => 85472,
  269. "roland lamah" => 86389,
  270. "rickie lambert" => 174560,
  271. "erik lamela" => 130870,
  272. "frank lampard" => 8941,
  273. "sebastian larsson" => 42772,
  274. "elliot lee" => 26614,
  275. "lucas" => 108315,
  276. "aaron lennon" => 35866,
  277. "joleon lescott" => 5355,
  278. "joe lewis" => 38402,
  279. "anders lindegaard" => 82967,
  280. "jake livermore" => 111336,
  281. "hugo lloris" => 43372,
  282. "shane long" => 127978,
  283. "dejan lovren" => 123560,
  284. "matthew lowton" => 145738,
  285. "diego lugano" => 71137,
  286. "david luiz" => 98398,
  287. "fernandinho" => 178486,
  288. "romelu lukaku" => 139437,
  289. "mikael mandron" => 185462,
  290. "vito mannone" => 85400,
  291. "florian marange" => 84622,
  292. "adrian mariappa" => 62131,
  293. "david marshall" => 26672,
  294. "russell martin" => 43408,
  295. "sylvain marveaux" => 84929,
  296. "joel mason" => 168766,
  297. "juan mata" => 103025,
  298. "charalampos mavrias" => 152193,
  299. "nicky maynard" => 66557,
  300. "emmanuel mayuka" => 178245,
  301. "modibo maíga" => 101554,
  302. "gareth mcauley" => 32588,
  303. "james mccarthy" => 137100,
  304. "george mccartney" => 8083,
  305. "allan mcgregor" => 108348,
  306. "paul mcshane" => 42732,
  307. "gary medel" => 147341,
  308. "per mertesacker" => 34041,
  309. "david meyler" => 121849,
  310. "simon mignolet" => 99829,
  311. "james milner" => 26843,
  312. "kevin mirallas" => 161664,
  313. "ryo miyaichi" => 155458,
  314. "david moberg-karlsson" => 188022,
  315. "nacho monreal" => 85361,
  316. "simon moore" => 138481,
  317. "james morrison" => 39542,
  318. "ravel morrison" => 153297,
  319. "victor moses" => 112547,
  320. "dean moxey" => 38715,
  321. "youssuf mulumbu" => 88221,
  322. "marc muniesa" => 135405,
  323. "josh murphy" => 172838,
  324. "jordon mutch" => 130912,
  325. "boaz myhill" => 4680,
  326. "buomesca tue na bangna" => 192786,
  327. "steven naismith" => 108763,
  328. "nani" => 67716,
  329. "samir nasri" => 43531,
  330. "matija nastasic" => 151765,
  331. "kyle naughton" => 114546,
  332. "jesús navas" => 37449,
  333. "álvaro negredo" => 102978,
  334. "mark noble" => 41421,
  335. "kevin nolan" => 7902,
  336. "craig noone" => 124973,
  337. "steven nzonzi" => 113290,
  338. "joey o'brien" => 45410,
  339. "joey obrien" => 45410,
  340. "stuart o'keefe" => 121880,
  341. "stuart okeefe" => 121880,
  342. "john o'shea" => 7624,
  343. "john oshea" => 7624,
  344. "gabriel obertan" => 86215,
  345. "john mikel obi" => 60503,
  346. "peter odemwingie" => 69453,
  347. "jores okore" => 157389,
  348. "anderson" => 88360,
  349. "jonas olsson" => 67860,
  350. "martin olsson" => 75987,
  351. "leon osman" => 7709,
  352. "pablo daniel osvaldo" => 104954,
  353. "bryan oviedo" => 147197,
  354. "alex oxlade-chamberlain" => 145392,
  355. "wilson palacios" => 93145,
  356. "costel pantilimon" => 126727,
  357. "scott parker" => 7685,
  358. "jonathan parr" => 121386,
  359. "jermaine pennant" => 8047,
  360. "mladen petric" => 102202,
  361. "kevin phillips" => 8068,
  362. "steven pienaar" => 19544,
  363. "erik pieters" => 124890,
  364. "anthony pilkington" => 93633,
  365. "lukas podolski" => 39759,
  366. "goran popov" => 43779,
  367. "pozuelo" => 158604,
  368. "lewis price" => 32769,
  369. "nick proschwitz" => 136917,
  370. "jason puncheon" => 42019,
  371. "michu" => 125714,
  372. "stephen quinn" => 65473,
  373. "peter ramage" => 42714,
  374. "gaston ramirez" => 130591,
  375. "aaron ramsey" => 98681,
  376. "angel rangel" => 102588,
  377. "razvan dinca rat" => 19097,
  378. "nathan redmond" => 146091,
  379. "winston reid" => 99875,
  380. "loïc remy" => 84886,
  381. "ashley richards" => 132635,
  382. "micah richards" => 66695,
  383. "kieran richardson" => 23139,
  384. "liam ridgewell" => 8175,
  385. "sascha riether" => 102336,
  386. "john arne riise" => 7936,
  387. "valentin roberge" => 149625,
  388. "joel robles" => 141624,
  389. "hugo rodallega" => 131212,
  390. "antonio luna " => 147501,
  391. "jay rodriguez" => 100918,
  392. "jack rodwell" => 112092,
  393. "luis alberto" => 146388,
  394. "wayne rooney" => 21046,
  395. "danny rose" => 104991,
  396. "markus rosenberg" => 69308,
  397. "liam rosenior" => 133897,
  398. "tomas rosicky" => 10726,
  399. "wayne routledge" => 16155,
  400. "john ruddy" => 42359,
  401. "bryan ruiz" => 137779,
  402. "yannick sagbo" => 120949,
  403. "bacary sagna" => 38880,
  404. "mamadou sakho" => 96162,
  405. "adrián" => 134230,
  406. "yaya sanogo" => 144279,
  407. "davide santon" => 121811,
  408. "ramires" => 99025,
  409. "andre schürrle" => 136580,
  410. "morgan schneiderlin" => 101461,
  411. "mark schwarzer" => 7996,
  412. "philippe senderos" => 19435,
  413. "stephane sessegnon" => 85095,
  414. "luke shaw" => 167127,
  415. "ryan shawcross" => 89557,
  416. "jonjo shelvey" => 119005,
  417. "steve sidwell" => 15820,
  418. "gylfi sigurdsson" => 121910,
  419. "david silva" => 43815,
  420. "scott sinclair" => 46565,
  421. "moussa sissoko" => 104658,
  422. "martin skrtel" => 45606,
  423. "chris smalling" => 123605,
  424. "tommy smith" => 127982,
  425. "robert snodgrass" => 156085,
  426. "roberto soldado" => 42042,
  427. "thomas sorensen" => 8067,
  428. "julian speroni" => 6721,
  429. "jed steer" => 141558,
  430. "maarten stekelenburg" => 11631,
  431. "raheem sterling" => 156366,
  432. "david stockdale" => 31378,
  433. "john stones" => 157974,
  434. "daniel sturridge" => 85291,
  435. "luis suárez" => 125088,
  436. "yacouba sylla" => 153075,
  437. "wojciech szczesny" => 131634,
  438. "josé enrique" => 68594,
  439. "adel taarabt" => 87623,
  440. "cabral" => 125941,
  441. "andrew taylor" => 42349,
  442. "matthew taylor" => 6136,
  443. "neil taylor" => 107571,
  444. "steven taylor" => 17812,
  445. "john terry" => 8931,
  446. "alexander tettey" => 71582,
  447. "jerome thomas" => 16703,
  448. "dwight tiendalli" => 46034,
  449. "ismael cheik tioté" => 73076,
  450. "james tomkins" => 104917,
  451. "aleksandar tonev" => 149910,
  452. "fernando torres" => 24257,
  453. "yaya touré" => 69277,
  454. "kolo touré" => 23601,
  455. "andros townsend" => 132432,
  456. "gerhard tremmel" => 84678,
  457. "ben turner" => 77679,
  458. "michael turner" => 27206,
  459. "antonio valencia" => 65629,
  460. "marco van ginkel" => 146519,
  461. "robin van persie" => 18858,
  462. "ricky van wolfswinkel" => 124932,
  463. "david vaughan" => 131895,
  464. "ricardo vaz te" => 101268,
  465. "thomas vermaelen" => 40543,
  466. "jan vertonghen" => 125086,
  467. "nemanja vidic" => 24529,
  468. "emiliano viviano" => 125001,
  469. "ron vlaar" => 127433,
  470. "michel vorm" => 19705,
  471. "haris vuckic" => 130526,
  472. "matej vydra" => 148624,
  473. "álvaro vásquez" => 152574,
  474. "theo walcott" => 67507,
  475. "kyle walker" => 129358,
  476. "jonathan walters" => 23770,
  477. "victor wanyama" => 139703,
  478. "joel ward" => 136571,
  479. "james ward-prowse" => 163111,
  480. "andreas weimann" => 138905,
  481. "danny welbeck" => 115271,
  482. "ashley westwood" => 7567,
  483. "kieren westwood" => 129506,
  484. "glenn whelan" => 5026,
  485. "steven whittaker" => 108372,
  486. "peter whittingham" => 101132,
  487. "connor wickham" => 130189,
  488. "aaron wilbraham" => 5176,
  489. "andy wilkinson" => 15461,
  490. "ashley williams" => 129481,
  491. "jonathan williams" => 24675,
  492. "michael williamson" => 37569,
  493. "jack wilshere" => 122089,
  494. "marc wilson" => 77070,
  495. "andre wisdom" => 152596,
  496. "claudio yacob" => 92080,
  497. "mapou yanga-mbiwa" => 93313,
  498. "maya yoshida" => 105803,
  499. "ashley young" => 31810,
  500. "pablo zabaleta" => 68058,
  501. "wilfried zaha" => 146324,
  502. "gideon zelalem" => 192048,
  503. "elsad zverotic" => 119611,
  504. "mesut özil" => 84775,
  505. }
  506. );
  507. # Transform %leagues into player => { league => "league_name", id => id_number }
  508. # to keep %leagues in a friendly/dry form, but keep fast lookups. This only
  509. # executes once.
  510. my %players;
  511. for my $league (keys %leagues) {
  512. for my $player (keys %{$leagues{$league}}) {
  513. $players{$player} = +{
  514. id => $leagues{$league}{$player},
  515. league => $league,
  516. };
  517. }
  518. }
  519. triggers any => keys %players;
  520. spice to => 'http://api.espn.com/v1/sports/soccer/$1/$2/$3/$4'
  521. . '?enable=stats,competitors,roster,venues&$5='
  522. . (localtime->year() + 1900)
  523. . '&apikey={{ENV{DDG_SPICE_ESPN_APIKEY}}}&callback=$6';
  524. spice from => '(.*)/(.*)/(.*)/(.*)/(.*)/(.*)';
  525. handle query_lc => sub {
  526. return $players{$_}{league}, "athletes", $players{$_}{id}, "foo", "bar", "ddg_spice_espn";
  527. };
  528. 1;