PageRenderTime 41ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/lib/DDG/Spice/ESPN/Racing.pm

https://github.com/ehsan/zeroclickinfo-spice
Perl | 201 lines | 189 code | 9 blank | 3 comment | 3 complexity | 2b7d97e3caae262b3189bc8aeac33968 MD5 | raw file
  1. package DDG::Spice::ESPN::Racing;
  2. use DDG::Spice;
  3. use Time::localtime;
  4. description "News and stats for racing players";
  5. name "ESPN Racing";
  6. primary_example_queries "Kyle Busch", "Brad Keselowski";
  7. topics "entertainment", "special_interest";
  8. category "reference";
  9. code_url "https://github.com/duckduckgo/zeroclickinfo-spice/blob/master/lib/DDG/Spice/ESPN/Racing.pm";
  10. attribution web => ['http://duckduckgo.com', 'DuckDuckGo'],
  11. twitter => ['http://twitter.com/duckduckgo', 'duckduckgo'];
  12. my %leagues = (
  13. nationwide => {
  14. "justin allgaier" => 731,
  15. "aj allmendinger" => 805,
  16. "aric almirola" => 740,
  17. "marcos ambrose" => 803,
  18. "john andretti" => 89,
  19. "tim andrews" => 4352,
  20. "michael annett" => 4323,
  21. "dakoda armstrong" => 4492,
  22. "casey atwood" => 170,
  23. "stanton barrett" => 617,
  24. "trevor bayne" => 4343,
  25. "t.j. bell" => 735,
  26. "tanner berryhill" => 4532,
  27. "greg biffle" => 221,
  28. "ryan blaney" => 4531,
  29. "mike bliss" => 144,
  30. "juan carlos blum" => 4558,
  31. "jason bowles" => 4391,
  32. "alex bowman" => 4555,
  33. "chris buescher" => 4480,
  34. "james buescher" => 4309,
  35. "jeb burton" => 4527,
  36. "kurt busch" => 195,
  37. "kyle busch" => 580,
  38. "brett butler" => 4346,
  39. "ken butler" => 891,
  40. "landon cassill" => 904,
  41. "jeremy clements" => 4284,
  42. "jennifer jo cobb" => 693,
  43. "brad coleman" => 823,
  44. "chris cook" => 702,
  45. "derrike cope" => 95,
  46. "joey coulter" => 4465,
  47. "tim cowen" => 871,
  48. "matt crafton" => 486,
  49. "erin crocker" => 754,
  50. "alx danielsson" => 4599,
  51. "matt dibenedetto" => 4379,
  52. "jamie dick" => 3639,
  53. "justin diercks" => 815,
  54. "austin dillon" => 4332,
  55. "ty dillon" => 4511,
  56. "tomy drissi" => 4447,
  57. "maryeve dufault" => 4503,
  58. "t.j. duke" => 4514,
  59. "jeffrey earnhardt" => 4356,
  60. "dale earnhardt jr." => 150,
  61. "danny efland" => 897,
  62. "ricky ehrgott" => 4594,
  63. "ryan ellis" => 4538,
  64. "ron fellows" => 141,
  65. "kyle fowler" => 4525,
  66. "anthony gandon" => 4598,
  67. "joey gase" => 4498,
  68. "brendan gaughan" => 235,
  69. "bobby gerhart" => 162,
  70. "ryan gifford" => 4592,
  71. "robby gordon" => 102,
  72. "david green" => 98,
  73. "jeff green" => 104,
  74. "kenny habul" => 4537,
  75. "chad hackenbracht" => 4582,
  76. "bobby hamilton jr." => 590,
  77. "mike harmon" => 174,
  78. "daryl harr" => 4353,
  79. "paulie harraka" => 4448,
  80. "richard harriman" => 4366,
  81. "kevin harvick" => 225,
  82. "drew herring" => 4435,
  83. "sam hornish jr." => 607,
  84. "shane huffman" => 411,
  85. "billy johnson" => 4437,
  86. "jimmie johnson" => 227,
  87. "kasey kahne" => 429,
  88. "kyle kelley" => 4422,
  89. "owen kelly" => 4419,
  90. "alex kennedy" => 4418,
  91. "d.j. kennington" => 844,
  92. "matt kenseth" => 143,
  93. "brad keselowski" => 626,
  94. "kraig kinser" => 773,
  95. "parker kligerman" => 4377,
  96. "todd kluever" => 698,
  97. "blake koch" => 4381,
  98. "kyle krisiloff" => 732,
  99. "scott lagasse jr." => 718,
  100. "kyle larson" => 4539,
  101. "jason leffler" => 229,
  102. "kevin lepage" => 130,
  103. "ashton lewis jr." => 287,
  104. "joey logano" => 4319,
  105. "carl long" => 161,
  106. "johanna long" => 4432,
  107. "hal martin" => 4360,
  108. "mark martin" => 68,
  109. "eric mcclure" => 629,
  110. "michael mcdowell" => 4286,
  111. "jamie mcmurray" => 223,
  112. "casey mears" => 248,
  113. "paul menard" => 575,
  114. "chase miller" => 840,
  115. "juan pablo montoya" => 336,
  116. "joe nemechek" => 97,
  117. "donnie neuenberger" => 473,
  118. "johnny o'connell" => 4583,
  119. "johnny oconnell" => 4583,
  120. "kevin o'connell" => 4312,
  121. "kevin oconnell" => 4312,
  122. "max papis" => 48,
  123. "travis pastrana" => 4468,
  124. "danica patrick" => 697,
  125. "nelson piquet jr." => 867,
  126. "ryan preece" => 4585,
  127. "david ragan" => 649,
  128. "tony raines" => 173,
  129. "andrew ranger" => 809,
  130. "ryan reed" => 4559,
  131. "harrison rhodes" => 4564,
  132. "robert richardson jr." => 757,
  133. "scott riggs" => 430,
  134. "martin roy" => 4602,
  135. "elliott sadler" => 137,
  136. "jay sauter" => 163,
  137. "johnny sauter" => 414,
  138. "travis sauter" => 4593,
  139. "tim schendel" => 661,
  140. "brian scott" => 4281,
  141. "morgan shepherd" => 100,
  142. "brent sherman" => 764,
  143. "ryan sieg" => 4345,
  144. "bryan silas" => 884,
  145. "regan smith" => 478,
  146. "reed sorenson" => 755,
  147. "dexter stacey" => 4550,
  148. "david starr" => 272,
  149. "tony stewart" => 149,
  150. "brad sweet" => 4388,
  151. "kevin swindell" => 4423,
  152. "brad teague" => 186,
  153. "derek thorn" => 4578,
  154. "john wes townley" => 4317,
  155. "martin truex jr." => 416,
  156. "brian vickers" => 390,
  157. "jacques villeneuve" => 295,
  158. "kenny wallace" => 90,
  159. "mike wallace" => 109,
  160. "steve wallace" => 761,
  161. "derek white" => 4385,
  162. "jason white" => 444,
  163. "cole whitt" => 4463,
  164. "scott wimmer" => 230,
  165. "josh wise" => 885,
  166. "jon wood" => 463,
  167. "j.j. yeley" => 669,
  168. "john young" => 855,
  169. }
  170. );
  171. # Transform %leagues into player => { league => "league_name", id => id_number }
  172. # to keep %leagues in a friendly/dry form, but keep fast lookups. This only
  173. # executes once.
  174. my %players;
  175. for my $league (keys %leagues) {
  176. for my $player (keys %{$leagues{$league}}) {
  177. $players{$player} = +{
  178. id => $leagues{$league}{$player},
  179. league => $league,
  180. };
  181. }
  182. }
  183. triggers any => keys %players;
  184. spice to => 'http://api.espn.com/v1/sports/racing/$1/$2/$3/$4'
  185. . '?enable=stats,competitors,roster,venues&$5='
  186. . (localtime->year() + 1900)
  187. . '&apikey={{ENV{DDG_SPICE_ESPN_APIKEY}}}&callback=$6';
  188. spice from => '(.*)/(.*)/(.*)/(.*)/(.*)/(.*)';
  189. handle query_lc => sub {
  190. return $players{$_}{league}, "athletes", $players{$_}{id}, "foo", "bar", "ddg_spice_espn";
  191. };
  192. 1;