/apidocs/pyechonest.util-module.html

http://echo-nest-remix.googlecode.com/ · HTML · 536 lines · 501 code · 23 blank · 12 comment · 0 complexity · d330e220a5c3cbbf4f80575c21b92dc1 MD5 · raw file

  1. <?xml version="1.0" encoding="ascii"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  3. "DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  5. <head>
  6. <title>pyechonest.util</title>
  7. <link rel="stylesheet" href="epydoc.css" type="text/css" />
  8. <script type="text/javascript" src="epydoc.js"></script>
  9. </head>
  10. <body bgcolor="white" text="black" link="blue" vlink="#204080"
  11. alink="#204080">
  12. <!-- ==================== NAVIGATION BAR ==================== -->
  13. <table class="navbar" border="0" width="100%" cellpadding="0"
  14. bgcolor="#a0c0ff" cellspacing="0">
  15. <tr valign="middle">
  16. <!-- Tree link -->
  17. <th>&nbsp;&nbsp;&nbsp;<a
  18. href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
  19. <!-- Index link -->
  20. <th>&nbsp;&nbsp;&nbsp;<a
  21. href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
  22. <!-- Help link -->
  23. <th>&nbsp;&nbsp;&nbsp;<a
  24. href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
  25. <!-- Project homepage -->
  26. <th class="navbar" align="right" width="100%">
  27. <table border="0" cellpadding="0" cellspacing="0">
  28. <tr><th class="navbar" align="center"
  29. ><a class="navbar" target="_top" href="http://code.google.com/p/echo-nest-remix/">Project Homepage</a></th>
  30. </tr></table></th>
  31. </tr>
  32. </table>
  33. <table width="100%" cellpadding="0" cellspacing="0">
  34. <tr valign="top">
  35. <td width="100%">
  36. <span class="breadcrumbs">
  37. <a href="pyechonest-module.html">Package&nbsp;pyechonest</a> ::
  38. Module&nbsp;util
  39. </span>
  40. </td>
  41. <td>
  42. <table cellpadding="0" cellspacing="0">
  43. <!-- hide/show private -->
  44. <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
  45. onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
  46. <tr><td align="right"><span class="options"
  47. >[<a href="frames.html" target="_top">frames</a
  48. >]&nbsp;|&nbsp;<a href="pyechonest.util-module.html"
  49. target="_top">no&nbsp;frames</a>]</span></td></tr>
  50. </table>
  51. </td>
  52. </tr>
  53. </table>
  54. <!-- ==================== MODULE DESCRIPTION ==================== -->
  55. <h1 class="epydoc">Module util</h1><p class="nomargin-top"><span class="codelink"><a href="pyechonest.util-pysrc.html">source&nbsp;code</a></span></p>
  56. <p>Copyright (c) 2010 The Echo Nest. All rights reserved.
  57. Created by Tyler Williams on 2010-04-25.</p>
  58. <p>Utility functions to support the Echo Nest web API interface.</p>
  59. <!-- ==================== CLASSES ==================== -->
  60. <a name="section-Classes"></a>
  61. <table class="summary" border="1" cellpadding="3"
  62. cellspacing="0" width="100%" bgcolor="white">
  63. <tr bgcolor="#70b0f0" class="table-header">
  64. <td colspan="2" class="table-header">
  65. <table border="0" cellpadding="0" cellspacing="0" width="100%">
  66. <tr valign="top">
  67. <td align="left"><span class="table-header">Classes</span></td>
  68. <td align="right" valign="top"
  69. ><span class="options">[<a href="#section-Classes"
  70. class="privatelink" onclick="toggle_private();"
  71. >hide private</a>]</span></td>
  72. </tr>
  73. </table>
  74. </td>
  75. </tr>
  76. <tr>
  77. <td width="15%" align="right" valign="top" class="summary">
  78. <span class="summary-type">&nbsp;</span>
  79. </td><td class="summary">
  80. <a href="pyechonest.util.EchoNestAPIError-class.html" class="summary-name">EchoNestAPIError</a><br />
  81. Generic API errors.
  82. </td>
  83. </tr>
  84. <tr>
  85. <td width="15%" align="right" valign="top" class="summary">
  86. <span class="summary-type">&nbsp;</span>
  87. </td><td class="summary">
  88. <a href="pyechonest.util.attrdict-class.html" class="summary-name">attrdict</a>
  89. </td>
  90. </tr>
  91. </table>
  92. <!-- ==================== FUNCTIONS ==================== -->
  93. <a name="section-Functions"></a>
  94. <table class="summary" border="1" cellpadding="3"
  95. cellspacing="0" width="100%" bgcolor="white">
  96. <tr bgcolor="#70b0f0" class="table-header">
  97. <td colspan="2" class="table-header">
  98. <table border="0" cellpadding="0" cellspacing="0" width="100%">
  99. <tr valign="top">
  100. <td align="left"><span class="table-header">Functions</span></td>
  101. <td align="right" valign="top"
  102. ><span class="options">[<a href="#section-Functions"
  103. class="privatelink" onclick="toggle_private();"
  104. >hide private</a>]</span></td>
  105. </tr>
  106. </table>
  107. </td>
  108. </tr>
  109. <tr>
  110. <td width="15%" align="right" valign="top" class="summary">
  111. <span class="summary-type">&nbsp;</span>
  112. </td><td class="summary">
  113. <table width="100%" cellpadding="0" cellspacing="0" border="0">
  114. <tr>
  115. <td><span class="summary-sig"><a name="get_successful_response"></a><span class="summary-sig-name">get_successful_response</span>(<span class="summary-sig-arg">raw_json</span>)</span></td>
  116. <td align="right" valign="top">
  117. <span class="codelink"><a href="pyechonest.util-pysrc.html#get_successful_response">source&nbsp;code</a></span>
  118. </td>
  119. </tr>
  120. </table>
  121. </td>
  122. </tr>
  123. <tr>
  124. <td width="15%" align="right" valign="top" class="summary">
  125. <span class="summary-type">&nbsp;</span>
  126. </td><td class="summary">
  127. <table width="100%" cellpadding="0" cellspacing="0" border="0">
  128. <tr>
  129. <td><span class="summary-sig"><a name="reallyunicode"></a><span class="summary-sig-name">reallyunicode</span>(<span class="summary-sig-arg">s</span>,
  130. <span class="summary-sig-arg">encoding</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">utf-8</code><code class="variable-quote">'</code></span>)</span></td>
  131. <td align="right" valign="top">
  132. <span class="codelink"><a href="pyechonest.util-pysrc.html#reallyunicode">source&nbsp;code</a></span>
  133. </td>
  134. </tr>
  135. </table>
  136. </td>
  137. </tr>
  138. <tr>
  139. <td width="15%" align="right" valign="top" class="summary">
  140. <span class="summary-type">&nbsp;</span>
  141. </td><td class="summary">
  142. <table width="100%" cellpadding="0" cellspacing="0" border="0">
  143. <tr>
  144. <td><span class="summary-sig"><a name="reallyUTF8"></a><span class="summary-sig-name">reallyUTF8</span>(<span class="summary-sig-arg">s</span>)</span></td>
  145. <td align="right" valign="top">
  146. <span class="codelink"><a href="pyechonest.util-pysrc.html#reallyUTF8">source&nbsp;code</a></span>
  147. </td>
  148. </tr>
  149. </table>
  150. </td>
  151. </tr>
  152. <tr>
  153. <td width="15%" align="right" valign="top" class="summary">
  154. <span class="summary-type">&nbsp;</span>
  155. </td><td class="summary">
  156. <table width="100%" cellpadding="0" cellspacing="0" border="0">
  157. <tr>
  158. <td><span class="summary-sig"><a name="codegen"></a><span class="summary-sig-name">codegen</span>(<span class="summary-sig-arg">filename</span>,
  159. <span class="summary-sig-arg">start</span>=<span class="summary-sig-default">0</span>,
  160. <span class="summary-sig-arg">duration</span>=<span class="summary-sig-default">30</span>)</span></td>
  161. <td align="right" valign="top">
  162. <span class="codelink"><a href="pyechonest.util-pysrc.html#codegen">source&nbsp;code</a></span>
  163. </td>
  164. </tr>
  165. </table>
  166. </td>
  167. </tr>
  168. <tr>
  169. <td width="15%" align="right" valign="top" class="summary">
  170. <span class="summary-type">&nbsp;</span>
  171. </td><td class="summary">
  172. <table width="100%" cellpadding="0" cellspacing="0" border="0">
  173. <tr>
  174. <td><span class="summary-sig"><a href="pyechonest.util-module.html#callm" class="summary-sig-name">callm</a>(<span class="summary-sig-arg">method</span>,
  175. <span class="summary-sig-arg">param_dict</span>,
  176. <span class="summary-sig-arg">POST</span>=<span class="summary-sig-default">False</span>,
  177. <span class="summary-sig-arg">socket_timeout</span>=<span class="summary-sig-default">None</span>,
  178. <span class="summary-sig-arg">data</span>=<span class="summary-sig-default">None</span>)</span><br />
  179. Call the api!
  180. Param_dict is a <em>regular</em> <em>python</em> <em>dictionary</em> so if you want to have multi-valued params
  181. put them in a list.</td>
  182. <td align="right" valign="top">
  183. <span class="codelink"><a href="pyechonest.util-pysrc.html#callm">source&nbsp;code</a></span>
  184. </td>
  185. </tr>
  186. </table>
  187. </td>
  188. </tr>
  189. <tr>
  190. <td width="15%" align="right" valign="top" class="summary">
  191. <span class="summary-type">&nbsp;</span>
  192. </td><td class="summary">
  193. <table width="100%" cellpadding="0" cellspacing="0" border="0">
  194. <tr>
  195. <td><span class="summary-sig"><a href="pyechonest.util-module.html#postChunked" class="summary-sig-name">postChunked</a>(<span class="summary-sig-arg">host</span>,
  196. <span class="summary-sig-arg">selector</span>,
  197. <span class="summary-sig-arg">fields</span>,
  198. <span class="summary-sig-arg">files</span>)</span><br />
  199. Attempt to replace postMultipart() with nearly-identical interface.</td>
  200. <td align="right" valign="top">
  201. <span class="codelink"><a href="pyechonest.util-pysrc.html#postChunked">source&nbsp;code</a></span>
  202. </td>
  203. </tr>
  204. </table>
  205. </td>
  206. </tr>
  207. </table>
  208. <!-- ==================== VARIABLES ==================== -->
  209. <a name="section-Variables"></a>
  210. <table class="summary" border="1" cellpadding="3"
  211. cellspacing="0" width="100%" bgcolor="white">
  212. <tr bgcolor="#70b0f0" class="table-header">
  213. <td colspan="2" class="table-header">
  214. <table border="0" cellpadding="0" cellspacing="0" width="100%">
  215. <tr valign="top">
  216. <td align="left"><span class="table-header">Variables</span></td>
  217. <td align="right" valign="top"
  218. ><span class="options">[<a href="#section-Variables"
  219. class="privatelink" onclick="toggle_private();"
  220. >hide private</a>]</span></td>
  221. </tr>
  222. </table>
  223. </td>
  224. </tr>
  225. <tr>
  226. <td width="15%" align="right" valign="top" class="summary">
  227. <span class="summary-type">&nbsp;</span>
  228. </td><td class="summary">
  229. <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code>
  230. </td>
  231. </tr>
  232. <tr>
  233. <td width="15%" align="right" valign="top" class="summary">
  234. <span class="summary-type">&nbsp;</span>
  235. </td><td class="summary">
  236. <a href="pyechonest.util-module.html#TYPENAMES" class="summary-name">TYPENAMES</a> = <code title="(('AR', 'artist'),
  237. ('SO', 'song'),
  238. ('RE', 'release'),
  239. ('TR', 'track'),
  240. ('PE', 'person'),
  241. ('DE', 'device'),
  242. ('LI', 'listener'),
  243. ('ED', 'editor'),
  244. ..."><code class="variable-group">(</code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">AR</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">artist</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">, </code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">SO</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">song</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">, </code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">RE</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">release</code><code class="variable-ellipsis">...</code></code>
  245. </td>
  246. </tr>
  247. <tr>
  248. <td width="15%" align="right" valign="top" class="summary">
  249. <span class="summary-type">&nbsp;</span>
  250. </td><td class="summary">
  251. <a href="pyechonest.util-module.html#foreign_regex" class="summary-name">foreign_regex</a> = <code title="re.compile(r'^.+?:(artist|song|release|track|person|device|listener|ed\
  252. itor|tweditor):([^\^]+)\^?([0-9\.]+)?')">re.compile(r'^.<code class="re-op">+?</code>:<code class="re-group">(</code>artist<code class="re-op">|</code>song<code class="re-op">|</code>release<code class="re-op">|</code>track<code class="re-op">|</code>p<code class="variable-ellipsis">...</code></code>
  253. </td>
  254. </tr>
  255. <tr>
  256. <td width="15%" align="right" valign="top" class="summary">
  257. <span class="summary-type">&nbsp;</span>
  258. </td><td class="summary">
  259. <a href="pyechonest.util-module.html#short_regex" class="summary-name">short_regex</a> = <code title="re.compile(r'^((AR|SO|RE|TR|PE|DE|LI|ED|TW)[0-9A-Z]{16})\^?([0-9\.]+)?\
  260. ')">re.compile(r'^<code class="re-group">(</code><code class="re-group">(</code>AR<code class="re-op">|</code>SO<code class="re-op">|</code>RE<code class="re-op">|</code>TR<code class="re-op">|</code>PE<code class="re-op">|</code>DE<code class="re-op">|</code>LI<code class="re-op">|</code>ED<code class="re-op">|</code>TW<code class="re-group">)</code><code class="re-group">[</code>0<code class="re-op">-</code>9A<code class="variable-ellipsis">...</code></code>
  261. </td>
  262. </tr>
  263. <tr>
  264. <td width="15%" align="right" valign="top" class="summary">
  265. <span class="summary-type">&nbsp;</span>
  266. </td><td class="summary">
  267. <a href="pyechonest.util-module.html#long_regex" class="summary-name">long_regex</a> = <code title="re.compile(r'music://id.echonest.com/.+?/(AR|SO|RE|TR|PE|DE|LI|ED|TW)/\
  268. (AR|SO|RE|TR|PE|DE|LI|ED|TW)[0-9A-Z]{16}\^?([0-9\.]+)?')">re.compile(r'music://id.echonest.com/.<code class="re-op">+?</code>/<code class="re-group">(</code>AR<code class="re-op">|</code>SO<code class="re-op">|</code>R<code class="variable-ellipsis">...</code></code>
  269. </td>
  270. </tr>
  271. <tr>
  272. <td width="15%" align="right" valign="top" class="summary">
  273. <span class="summary-type">&nbsp;</span>
  274. </td><td class="summary">
  275. <a name="headers"></a><span class="summary-name">headers</span> = <code title="[('User-Agent', 'Pyechonest 4.2.5')]"><code class="variable-group">[</code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">User-Agent</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">Pyechonest 4.2.5</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-group">]</code></code>
  276. </td>
  277. </tr>
  278. <tr>
  279. <td width="15%" align="right" valign="top" class="summary">
  280. <span class="summary-type">&nbsp;</span>
  281. </td><td class="summary">
  282. <a name="opener"></a><span class="summary-name">opener</span> = <code title="urllib2.build_opener()">urllib2.build_opener()</code>
  283. </td>
  284. </tr>
  285. <tr>
  286. <td width="15%" align="right" valign="top" class="summary">
  287. <span class="summary-type">&nbsp;</span>
  288. </td><td class="summary">
  289. <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'pyechonest'"><code class="variable-quote">'</code><code class="variable-string">pyechonest</code><code class="variable-quote">'</code></code>
  290. </td>
  291. </tr>
  292. </table>
  293. <!-- ==================== FUNCTION DETAILS ==================== -->
  294. <a name="section-FunctionDetails"></a>
  295. <table class="details" border="1" cellpadding="3"
  296. cellspacing="0" width="100%" bgcolor="white">
  297. <tr bgcolor="#70b0f0" class="table-header">
  298. <td colspan="2" class="table-header">
  299. <table border="0" cellpadding="0" cellspacing="0" width="100%">
  300. <tr valign="top">
  301. <td align="left"><span class="table-header">Function Details</span></td>
  302. <td align="right" valign="top"
  303. ><span class="options">[<a href="#section-FunctionDetails"
  304. class="privatelink" onclick="toggle_private();"
  305. >hide private</a>]</span></td>
  306. </tr>
  307. </table>
  308. </td>
  309. </tr>
  310. </table>
  311. <a name="callm"></a>
  312. <div>
  313. <table class="details" border="1" cellpadding="3"
  314. cellspacing="0" width="100%" bgcolor="white">
  315. <tr><td>
  316. <table width="100%" cellpadding="0" cellspacing="0" border="0">
  317. <tr valign="top"><td>
  318. <h3 class="epydoc"><span class="sig"><span class="sig-name">callm</span>(<span class="sig-arg">method</span>,
  319. <span class="sig-arg">param_dict</span>,
  320. <span class="sig-arg">POST</span>=<span class="sig-default">False</span>,
  321. <span class="sig-arg">socket_timeout</span>=<span class="sig-default">None</span>,
  322. <span class="sig-arg">data</span>=<span class="sig-default">None</span>)</span>
  323. </h3>
  324. </td><td align="right" valign="top"
  325. ><span class="codelink"><a href="pyechonest.util-pysrc.html#callm">source&nbsp;code</a></span>&nbsp;
  326. </td>
  327. </tr></table>
  328. <p>Call the api!
  329. Param_dict is a <em>regular</em> <em>python</em> <em>dictionary</em> so if you want to have multi-valued params
  330. put them in a list.</p>
  331. <p>** note, if we require 2.6, we can get rid of this timeout munging.</p>
  332. <dl class="fields">
  333. </dl>
  334. </td></tr></table>
  335. </div>
  336. <a name="postChunked"></a>
  337. <div>
  338. <table class="details" border="1" cellpadding="3"
  339. cellspacing="0" width="100%" bgcolor="white">
  340. <tr><td>
  341. <table width="100%" cellpadding="0" cellspacing="0" border="0">
  342. <tr valign="top"><td>
  343. <h3 class="epydoc"><span class="sig"><span class="sig-name">postChunked</span>(<span class="sig-arg">host</span>,
  344. <span class="sig-arg">selector</span>,
  345. <span class="sig-arg">fields</span>,
  346. <span class="sig-arg">files</span>)</span>
  347. </h3>
  348. </td><td align="right" valign="top"
  349. ><span class="codelink"><a href="pyechonest.util-pysrc.html#postChunked">source&nbsp;code</a></span>&nbsp;
  350. </td>
  351. </tr></table>
  352. <p>Attempt to replace postMultipart() with nearly-identical interface.
  353. (The files tuple no longer requires the filename, and we only return
  354. the response body.)
  355. Uses the urllib2_file.py originally from
  356. <a class="rst-reference external" href="http://fabien.seisen.org" target="_top">http://fabien.seisen.org</a> which was also drawn heavily from
  357. <a class="rst-reference external" href="http://code.activestate.com/recipes/146306/" target="_top">http://code.activestate.com/recipes/146306/</a> .</p>
  358. <p>This urllib2_file.py is more desirable because of the chunked
  359. uploading from a file pointer (no need to read entire file into
  360. memory) and the ability to work from behind a proxy (due to its
  361. basis on urllib2).</p>
  362. <dl class="fields">
  363. </dl>
  364. </td></tr></table>
  365. </div>
  366. <br />
  367. <!-- ==================== VARIABLES DETAILS ==================== -->
  368. <a name="section-VariablesDetails"></a>
  369. <table class="details" border="1" cellpadding="3"
  370. cellspacing="0" width="100%" bgcolor="white">
  371. <tr bgcolor="#70b0f0" class="table-header">
  372. <td colspan="2" class="table-header">
  373. <table border="0" cellpadding="0" cellspacing="0" width="100%">
  374. <tr valign="top">
  375. <td align="left"><span class="table-header">Variables Details</span></td>
  376. <td align="right" valign="top"
  377. ><span class="options">[<a href="#section-VariablesDetails"
  378. class="privatelink" onclick="toggle_private();"
  379. >hide private</a>]</span></td>
  380. </tr>
  381. </table>
  382. </td>
  383. </tr>
  384. </table>
  385. <a name="TYPENAMES"></a>
  386. <div>
  387. <table class="details" border="1" cellpadding="3"
  388. cellspacing="0" width="100%" bgcolor="white">
  389. <tr><td>
  390. <h3 class="epydoc">TYPENAMES</h3>
  391. <dl class="fields">
  392. </dl>
  393. <dl class="fields">
  394. <dt>Value:</dt>
  395. <dd><table><tr><td><pre class="variable">
  396. <code class="variable-group">(</code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">AR</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">artist</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">,</code>
  397. <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">SO</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">song</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">,</code>
  398. <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">RE</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">release</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">,</code>
  399. <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">TR</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">track</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">,</code>
  400. <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">PE</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">person</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">,</code>
  401. <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">DE</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">device</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">,</code>
  402. <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">LI</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">listener</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">,</code>
  403. <code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">ED</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">editor</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">,</code>
  404. <code class="variable-ellipsis">...</code>
  405. </pre></td></tr></table>
  406. </dd>
  407. </dl>
  408. </td></tr></table>
  409. </div>
  410. <a name="foreign_regex"></a>
  411. <div>
  412. <table class="details" border="1" cellpadding="3"
  413. cellspacing="0" width="100%" bgcolor="white">
  414. <tr><td>
  415. <h3 class="epydoc">foreign_regex</h3>
  416. <dl class="fields">
  417. </dl>
  418. <dl class="fields">
  419. <dt>Value:</dt>
  420. <dd><table><tr><td><pre class="variable">
  421. re.compile(r'^.<code class="re-op">+?</code>:<code class="re-group">(</code>artist<code class="re-op">|</code>song<code class="re-op">|</code>release<code class="re-op">|</code>track<code class="re-op">|</code>person<code class="re-op">|</code>device<code class="re-op">|</code>listener<code class="re-op">|</code>ed<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
  422. itor<code class="re-op">|</code>tweditor<code class="re-group">)</code>:<code class="re-group">(</code><code class="re-group">[^</code>\^<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code>\^<code class="re-op">?</code><code class="re-group">(</code><code class="re-group">[</code>0<code class="re-op">-</code>9\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code><code class="re-op">?</code>')
  423. </pre></td></tr></table>
  424. </dd>
  425. </dl>
  426. </td></tr></table>
  427. </div>
  428. <a name="short_regex"></a>
  429. <div>
  430. <table class="details" border="1" cellpadding="3"
  431. cellspacing="0" width="100%" bgcolor="white">
  432. <tr><td>
  433. <h3 class="epydoc">short_regex</h3>
  434. <dl class="fields">
  435. </dl>
  436. <dl class="fields">
  437. <dt>Value:</dt>
  438. <dd><table><tr><td><pre class="variable">
  439. re.compile(r'^<code class="re-group">(</code><code class="re-group">(</code>AR<code class="re-op">|</code>SO<code class="re-op">|</code>RE<code class="re-op">|</code>TR<code class="re-op">|</code>PE<code class="re-op">|</code>DE<code class="re-op">|</code>LI<code class="re-op">|</code>ED<code class="re-op">|</code>TW<code class="re-group">)</code><code class="re-group">[</code>0<code class="re-op">-</code>9A<code class="re-op">-</code>Z<code class="re-group">]</code><code class="re-op">{16}</code><code class="re-group">)</code>\^<code class="re-op">?</code><code class="re-group">(</code><code class="re-group">[</code>0<code class="re-op">-</code>9\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code><code class="re-op">?</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
  440. ')
  441. </pre></td></tr></table>
  442. </dd>
  443. </dl>
  444. </td></tr></table>
  445. </div>
  446. <a name="long_regex"></a>
  447. <div>
  448. <table class="details" border="1" cellpadding="3"
  449. cellspacing="0" width="100%" bgcolor="white">
  450. <tr><td>
  451. <h3 class="epydoc">long_regex</h3>
  452. <dl class="fields">
  453. </dl>
  454. <dl class="fields">
  455. <dt>Value:</dt>
  456. <dd><table><tr><td><pre class="variable">
  457. re.compile(r'music://id.echonest.com/.<code class="re-op">+?</code>/<code class="re-group">(</code>AR<code class="re-op">|</code>SO<code class="re-op">|</code>RE<code class="re-op">|</code>TR<code class="re-op">|</code>PE<code class="re-op">|</code>DE<code class="re-op">|</code>LI<code class="re-op">|</code>ED<code class="re-op">|</code>TW<code class="re-group">)</code>/<code class="re-group"></code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
  458. <code class="re-group">(</code>AR<code class="re-op">|</code>SO<code class="re-op">|</code>RE<code class="re-op">|</code>TR<code class="re-op">|</code>PE<code class="re-op">|</code>DE<code class="re-op">|</code>LI<code class="re-op">|</code>ED<code class="re-op">|</code>TW<code class="re-group">)</code><code class="re-group">[</code>0<code class="re-op">-</code>9A<code class="re-op">-</code>Z<code class="re-group">]</code><code class="re-op">{16}</code>\^<code class="re-op">?</code><code class="re-group">(</code><code class="re-group">[</code>0<code class="re-op">-</code>9\.<code class="re-group">]</code><code class="re-op">+</code><code class="re-group">)</code><code class="re-op">?</code>')
  459. </pre></td></tr></table>
  460. </dd>
  461. </dl>
  462. </td></tr></table>
  463. </div>
  464. <br />
  465. <!-- ==================== NAVIGATION BAR ==================== -->
  466. <table class="navbar" border="0" width="100%" cellpadding="0"
  467. bgcolor="#a0c0ff" cellspacing="0">
  468. <tr valign="middle">
  469. <!-- Tree link -->
  470. <th>&nbsp;&nbsp;&nbsp;<a
  471. href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
  472. <!-- Index link -->
  473. <th>&nbsp;&nbsp;&nbsp;<a
  474. href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
  475. <!-- Help link -->
  476. <th>&nbsp;&nbsp;&nbsp;<a
  477. href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
  478. <!-- Project homepage -->
  479. <th class="navbar" align="right" width="100%">
  480. <table border="0" cellpadding="0" cellspacing="0">
  481. <tr><th class="navbar" align="center"
  482. ><a class="navbar" target="_top" href="http://code.google.com/p/echo-nest-remix/">Project Homepage</a></th>
  483. </tr></table></th>
  484. </tr>
  485. </table>
  486. <table border="0" cellpadding="0" cellspacing="0" width="100%%">
  487. <tr>
  488. <td align="left" class="footer">
  489. Generated by Epydoc 3.0.1 on Wed Sep 1 16:08:57 2010
  490. </td>
  491. <td align="right" class="footer">
  492. <a target="mainFrame" href="http://epydoc.sourceforge.net"
  493. >http://epydoc.sourceforge.net</a>
  494. </td>
  495. </tr>
  496. </table>
  497. <script type="text/javascript">
  498. <!--
  499. // Private objects are initially displayed (because if
  500. // javascript is turned off then we want them to be
  501. // visible); but by default, we want to hide them. So hide
  502. // them unless we have a cookie that says to show them.
  503. checkCookie();
  504. // -->
  505. </script>
  506. </body>
  507. </html>