Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

biiiiiiiiiiig commit, complete interface overhault using extjs... you…

… have to do something if youre unable to sleep...
  • Loading branch information...
commit ed6ddb700c981654f376534790312f865ec73dd2 1 parent 99c5dac
@WoLpH authored
Showing with 94,655 additions and 40 deletions.
  1. +19 −3 app.py
  2. +45 −22 jukebox.py
  3. +16 −0 static/App.js
  4. +16 −15 static/Jukify.js
  5. +82 −0 static/controller/Artist.js
  6. +11 −0 static/controller/Queue.js
  7. +636 −0 static/data/artists.json
  8. +172 −0 static/data/playlist.json
  9. +8 −0 static/data/playlists.json
  10. +158 −0 static/data/plchanges.json
  11. +173 −0 static/data/queue.json
  12. +117 −0 static/data/recenttracks.json
  13. +12 −0 static/data/searchresults.json
  14. +12 −0 static/data/stats.json
  15. +14 −0 static/data/status.json
  16. +70 −0 static/ext/bootstrap.js
  17. +93,093 −0 static/ext/ext-all-debug.js
  18. +1 −0  static/ext/resources/css/ext-all-gray.css
  19. BIN  static/ext/resources/themes/images/access/boundlist/trigger-arrow.png
  20. BIN  static/ext/resources/themes/images/access/box/corners-blue.gif
  21. BIN  static/ext/resources/themes/images/access/box/corners.gif
  22. BIN  static/ext/resources/themes/images/access/box/l-blue.gif
  23. BIN  static/ext/resources/themes/images/access/box/l.gif
  24. BIN  static/ext/resources/themes/images/access/box/r-blue.gif
  25. BIN  static/ext/resources/themes/images/access/box/r.gif
  26. BIN  static/ext/resources/themes/images/access/box/tb-blue.gif
  27. BIN  static/ext/resources/themes/images/access/box/tb.gif
  28. BIN  static/ext/resources/themes/images/access/btn-group/btn-group-default-framed-corners.gif
  29. BIN  static/ext/resources/themes/images/access/btn-group/btn-group-default-framed-notitle-corners.gif
  30. BIN  static/ext/resources/themes/images/access/btn-group/btn-group-default-framed-notitle-sides.gif
  31. BIN  static/ext/resources/themes/images/access/btn-group/btn-group-default-framed-sides.gif
  32. BIN  static/ext/resources/themes/images/access/btn-group/btn-group-framed-corners.gif
  33. BIN  static/ext/resources/themes/images/access/btn-group/btn-group-framed-notitle-corners.gif
  34. BIN  static/ext/resources/themes/images/access/btn-group/btn-group-framed-notitle-sides.gif
  35. BIN  static/ext/resources/themes/images/access/btn-group/btn-group-framed-sides.gif
  36. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-bg.gif
  37. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-corners.gif
  38. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-disabled-bg.gif
  39. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-disabled-corners.gif
  40. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-disabled-sides.gif
  41. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-focus-bg.gif
  42. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-focus-corners.gif
  43. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-focus-sides.gif
  44. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-over-bg.gif
  45. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-over-corners.gif
  46. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-over-sides.gif
  47. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-pressed-bg.gif
  48. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-pressed-corners.gif
  49. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-pressed-sides.gif
  50. BIN  static/ext/resources/themes/images/access/btn/btn-default-large-sides.gif
  51. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-bg.gif
  52. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-corners.gif
  53. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-disabled-bg.gif
  54. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-disabled-corners.gif
  55. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-disabled-sides.gif
  56. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-focus-bg.gif
  57. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-focus-corners.gif
  58. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-focus-sides.gif
  59. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-over-bg.gif
  60. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-over-corners.gif
  61. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-over-sides.gif
  62. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-pressed-bg.gif
  63. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-pressed-corners.gif
  64. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-pressed-sides.gif
  65. BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-sides.gif
  66. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-bg.gif
  67. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-corners.gif
  68. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-disabled-bg.gif
  69. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-disabled-corners.gif
  70. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-disabled-sides.gif
  71. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-focus-bg.gif
  72. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-focus-corners.gif
  73. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-focus-sides.gif
  74. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-over-bg.gif
  75. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-over-corners.gif
  76. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-over-sides.gif
  77. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-pressed-bg.gif
  78. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-pressed-corners.gif
  79. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-pressed-sides.gif
  80. BIN  static/ext/resources/themes/images/access/btn/btn-default-small-sides.gif
  81. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-large-corners.gif
  82. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-large-disabled-corners.gif
  83. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-large-disabled-sides.gif
  84. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-large-focus-corners.gif
  85. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-large-focus-sides.gif
  86. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-large-over-corners.gif
  87. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-large-over-sides.gif
  88. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-large-pressed-corners.gif
  89. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-large-pressed-sides.gif
  90. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-large-sides.gif
  91. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-medium-corners.gif
  92. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-medium-disabled-corners.gif
  93. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-medium-disabled-sides.gif
  94. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-medium-focus-corners.gif
  95. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-medium-focus-sides.gif
  96. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-medium-over-corners.gif
  97. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-medium-over-sides.gif
  98. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-medium-pressed-corners.gif
  99. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-medium-pressed-sides.gif
  100. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-medium-sides.gif
  101. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-small-corners.gif
  102. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-small-disabled-corners.gif
  103. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-small-disabled-sides.gif
  104. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-small-focus-corners.gif
  105. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-small-focus-sides.gif
  106. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-small-over-corners.gif
  107. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-small-over-sides.gif
  108. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-small-pressed-corners.gif
  109. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-small-pressed-sides.gif
  110. BIN  static/ext/resources/themes/images/access/btn/btn-default-toolbar-small-sides.gif
  111. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-large-corners.gif
  112. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-large-disabled-corners.gif
  113. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-large-disabled-sides.gif
  114. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-large-focus-corners.gif
  115. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-large-focus-sides.gif
  116. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-large-over-corners.gif
  117. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-large-over-sides.gif
  118. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-large-pressed-corners.gif
  119. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-large-pressed-sides.gif
  120. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-large-sides.gif
  121. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-medium-corners.gif
  122. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-medium-disabled-corners.gif
  123. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-medium-disabled-sides.gif
  124. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-medium-focus-corners.gif
  125. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-medium-focus-sides.gif
  126. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-medium-over-corners.gif
  127. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-medium-over-sides.gif
  128. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-medium-pressed-corners.gif
  129. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-medium-pressed-sides.gif
  130. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-medium-sides.gif
  131. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-small-corners.gif
  132. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-small-disabled-corners.gif
  133. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-small-disabled-sides.gif
  134. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-small-focus-corners.gif
  135. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-small-focus-sides.gif
  136. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-small-over-corners.gif
  137. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-small-over-sides.gif
  138. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-small-pressed-corners.gif
  139. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-small-pressed-sides.gif
  140. BIN  static/ext/resources/themes/images/access/btn/btn-toolbar-small-sides.gif
  141. BIN  static/ext/resources/themes/images/access/button/arrow.gif
  142. BIN  static/ext/resources/themes/images/access/button/btn.gif
  143. BIN  static/ext/resources/themes/images/access/button/group-cs.gif
  144. BIN  static/ext/resources/themes/images/access/button/group-lr.gif
  145. BIN  static/ext/resources/themes/images/access/button/group-tb.gif
  146. BIN  static/ext/resources/themes/images/access/button/s-arrow-b-noline.gif
  147. BIN  static/ext/resources/themes/images/access/button/s-arrow-b.gif
  148. BIN  static/ext/resources/themes/images/access/button/s-arrow-bo.gif
  149. BIN  static/ext/resources/themes/images/access/button/s-arrow-light.gif
  150. BIN  static/ext/resources/themes/images/access/button/s-arrow-noline.gif
  151. BIN  static/ext/resources/themes/images/access/button/s-arrow-o.gif
  152. BIN  static/ext/resources/themes/images/access/button/s-arrow.gif
  153. BIN  static/ext/resources/themes/images/access/datepicker/datepicker-footer-bg.gif
  154. BIN  static/ext/resources/themes/images/access/datepicker/datepicker-header-bg.gif
  155. BIN  static/ext/resources/themes/images/access/dd/drop-add.gif
  156. BIN  static/ext/resources/themes/images/access/dd/drop-between.gif
  157. BIN  static/ext/resources/themes/images/access/dd/drop-no.gif
  158. BIN  static/ext/resources/themes/images/access/dd/drop-over.gif
  159. BIN  static/ext/resources/themes/images/access/dd/drop-under.gif
  160. BIN  static/ext/resources/themes/images/access/dd/drop-yes.gif
  161. BIN  static/ext/resources/themes/images/access/editor/tb-sprite.gif
  162. BIN  static/ext/resources/themes/images/access/form-invalid-tip/form-invalid-tip-default-corners.gif
  163. BIN  static/ext/resources/themes/images/access/form-invalid-tip/form-invalid-tip-default-sides.gif
  164. BIN  static/ext/resources/themes/images/access/form/checkbox.gif
  165. BIN  static/ext/resources/themes/images/access/form/checkbox_.gif
  166. BIN  static/ext/resources/themes/images/access/form/clear-trigger.gif
  167. BIN  static/ext/resources/themes/images/access/form/date-trigger.gif
  168. BIN  static/ext/resources/themes/images/access/form/error-tip-corners.gif
  169. BIN  static/ext/resources/themes/images/access/form/exclamation.gif
  170. BIN  static/ext/resources/themes/images/access/form/radio.gif
  171. BIN  static/ext/resources/themes/images/access/form/radio_.gif
  172. BIN  static/ext/resources/themes/images/access/form/search-trigger.gif
  173. BIN  static/ext/resources/themes/images/access/form/spinner-small.gif
  174. BIN  static/ext/resources/themes/images/access/form/spinner.gif
  175. BIN  static/ext/resources/themes/images/access/form/spinner_.gif
  176. BIN  static/ext/resources/themes/images/access/form/text-bg.gif
  177. BIN  static/ext/resources/themes/images/access/form/trigger-tpl.gif
  178. BIN  static/ext/resources/themes/images/access/form/trigger.gif
  179. BIN  static/ext/resources/themes/images/access/grid/arrow-left-white.gif
  180. BIN  static/ext/resources/themes/images/access/grid/arrow-right-white.gif
  181. BIN  static/ext/resources/themes/images/access/grid/cell-special-bg.gif
  182. BIN  static/ext/resources/themes/images/access/grid/cell-special-selected-bg.gif
  183. BIN  static/ext/resources/themes/images/access/grid/checked.gif
  184. BIN  static/ext/resources/themes/images/access/grid/col-move-bottom.gif
  185. BIN  static/ext/resources/themes/images/access/grid/col-move-top.gif
  186. BIN  static/ext/resources/themes/images/access/grid/column-header-bg.gif
  187. BIN  static/ext/resources/themes/images/access/grid/column-header-over-bg.gif
  188. BIN  static/ext/resources/themes/images/access/grid/columns.gif
  189. BIN  static/ext/resources/themes/images/access/grid/dd-insert-arrow-left.gif
  190. BIN  static/ext/resources/themes/images/access/grid/dd-insert-arrow-left.png
  191. BIN  static/ext/resources/themes/images/access/grid/dd-insert-arrow-right.gif
  192. BIN  static/ext/resources/themes/images/access/grid/dd-insert-arrow-right.png
  193. BIN  static/ext/resources/themes/images/access/grid/dirty.gif
  194. BIN  static/ext/resources/themes/images/access/grid/done.gif
  195. BIN  static/ext/resources/themes/images/access/grid/drop-no.gif
  196. BIN  static/ext/resources/themes/images/access/grid/drop-yes.gif
  197. BIN  static/ext/resources/themes/images/access/grid/footer-bg.gif
  198. BIN  static/ext/resources/themes/images/access/grid/grid-blue-hd.gif
  199. BIN  static/ext/resources/themes/images/access/grid/grid-blue-split.gif
  200. BIN  static/ext/resources/themes/images/access/grid/grid-hrow.gif
  201. BIN  static/ext/resources/themes/images/access/grid/grid-loading.gif
  202. BIN  static/ext/resources/themes/images/access/grid/grid-split.gif
  203. BIN  static/ext/resources/themes/images/access/grid/grid-vista-hd.gif
  204. BIN  static/ext/resources/themes/images/access/grid/grid3-hd-btn.gif
  205. BIN  static/ext/resources/themes/images/access/grid/grid3-hrow-over.gif
  206. BIN  static/ext/resources/themes/images/access/grid/grid3-hrow.gif
  207. BIN  static/ext/resources/themes/images/access/grid/grid3-special-col-bg.gif
  208. BIN  static/ext/resources/themes/images/access/grid/grid3-special-col-sel-bg.gif
  209. BIN  static/ext/resources/themes/images/access/grid/group-by.gif
  210. BIN  static/ext/resources/themes/images/access/grid/group-collapse.gif
  211. BIN  static/ext/resources/themes/images/access/grid/group-expand-sprite.gif
  212. BIN  static/ext/resources/themes/images/access/grid/group-expand.gif
  213. BIN  static/ext/resources/themes/images/access/grid/hd-pop.gif
  214. BIN  static/ext/resources/themes/images/access/grid/hmenu-asc.gif
  215. BIN  static/ext/resources/themes/images/access/grid/hmenu-desc.gif
  216. BIN  static/ext/resources/themes/images/access/grid/hmenu-lock.gif
  217. BIN  static/ext/resources/themes/images/access/grid/hmenu-lock.png
  218. BIN  static/ext/resources/themes/images/access/grid/hmenu-unlock.gif
  219. BIN  static/ext/resources/themes/images/access/grid/hmenu-unlock.png
  220. BIN  static/ext/resources/themes/images/access/grid/invalid_line.gif
  221. BIN  static/ext/resources/themes/images/access/grid/loading.gif
  222. BIN  static/ext/resources/themes/images/access/grid/mso-hd.gif
  223. BIN  static/ext/resources/themes/images/access/grid/nowait.gif
  224. BIN  static/ext/resources/themes/images/access/grid/page-first-disabled.gif
  225. BIN  static/ext/resources/themes/images/access/grid/page-first.gif
  226. BIN  static/ext/resources/themes/images/access/grid/page-last-disabled.gif
  227. BIN  static/ext/resources/themes/images/access/grid/page-last.gif
  228. BIN  static/ext/resources/themes/images/access/grid/page-next-disabled.gif
  229. BIN  static/ext/resources/themes/images/access/grid/page-next.gif
  230. BIN  static/ext/resources/themes/images/access/grid/page-prev-disabled.gif
  231. BIN  static/ext/resources/themes/images/access/grid/page-prev.gif
  232. BIN  static/ext/resources/themes/images/access/grid/pick-button.gif
  233. BIN  static/ext/resources/themes/images/access/grid/property-cell-bg.gif
  234. BIN  static/ext/resources/themes/images/access/grid/refresh-disabled.gif
  235. BIN  static/ext/resources/themes/images/access/grid/refresh.gif
  236. BIN  static/ext/resources/themes/images/access/grid/row-check-sprite.gif
  237. BIN  static/ext/resources/themes/images/access/grid/row-expand-sprite.gif
  238. BIN  static/ext/resources/themes/images/access/grid/row-over.gif
  239. BIN  static/ext/resources/themes/images/access/grid/row-sel.gif
  240. BIN  static/ext/resources/themes/images/access/grid/sort-hd.gif
  241. BIN  static/ext/resources/themes/images/access/grid/sort_asc.gif
  242. BIN  static/ext/resources/themes/images/access/grid/sort_desc.gif
  243. BIN  static/ext/resources/themes/images/access/grid/unchecked.gif
  244. BIN  static/ext/resources/themes/images/access/grid/wait.gif
  245. BIN  static/ext/resources/themes/images/access/layout/mini-bottom.gif
  246. BIN  static/ext/resources/themes/images/access/layout/mini-left.gif
  247. BIN  static/ext/resources/themes/images/access/layout/mini-right.gif
  248. BIN  static/ext/resources/themes/images/access/layout/mini-top.gif
  249. BIN  static/ext/resources/themes/images/access/menu/checked.gif
  250. BIN  static/ext/resources/themes/images/access/menu/group-checked.gif
  251. BIN  static/ext/resources/themes/images/access/menu/item-over.gif
  252. BIN  static/ext/resources/themes/images/access/menu/menu-item-active-bg.gif
  253. BIN  static/ext/resources/themes/images/access/menu/menu-item-active-corners.gif
  254. BIN  static/ext/resources/themes/images/access/menu/menu-item-active-sides.gif
  255. BIN  static/ext/resources/themes/images/access/menu/menu-parent.gif
  256. BIN  static/ext/resources/themes/images/access/menu/menu.gif
  257. BIN  static/ext/resources/themes/images/access/menu/unchecked.gif
  258. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-bg.gif
  259. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-bottom-bg.gif
  260. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-bottom-bg.gif
  261. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-bottom-corners.gif
  262. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-bottom-noborder-bg.gif
  263. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-bottom-noborder-corners.gif
  264. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-bottom-noborder-sides.gif
  265. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-bottom-sides.gif
  266. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif
  267. BIN  ...ic/ext/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif
  268. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif
  269. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-left-bg.gif
  270. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-left-corners.gif
  271. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-left-sides.gif
  272. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-right-bg.gif
  273. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-right-corners.gif
  274. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-right-sides.gif
  275. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-top-bg.gif
  276. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-top-corners.gif
  277. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-collapsed-top-sides.gif
  278. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-left-bg.gif
  279. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-left-corners.gif
  280. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-left-noborder-bg.gif
  281. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-left-noborder-corners.gif
  282. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-left-noborder-sides.gif
  283. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-left-sides.gif
  284. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-right-bg.gif
  285. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-right-corners.gif
  286. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-right-noborder-bg.gif
  287. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-right-noborder-corners.gif
  288. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-right-noborder-sides.gif
  289. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-right-sides.gif
  290. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-top-bg.gif
  291. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-top-corners.gif
  292. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-top-noborder-bg.gif
  293. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-top-noborder-corners.gif
  294. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-top-noborder-sides.gif
  295. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-framed-top-sides.gif
  296. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-left-bg.gif
  297. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-right-bg.gif
  298. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-default-top-bg.gif
  299. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-framed-bg.gif
  300. BIN  static/ext/resources/themes/images/access/panel-header/panel-header-framed-corners.gif
Sorry, we could not display the entire diff because too many files (2,211) changed.
View
22 app.py
@@ -9,6 +9,7 @@ class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r'/', MainHandler),
+ (r'/playlists', PlaylistHandler),
(r'/remote/', RemoteControlHandler),
]
settings = dict(
@@ -58,6 +59,19 @@ def new_messages(self, messages):
cls.cache = cls.cache[-self.cache_size:]
+class PlaylistHandler(tornado.web.RequestHandler):
+ def get(self, *args, **kwargs):
+ playlists = jukebox_ui.get_playlists()
+ results = []
+ for playlist in playlists:
+ results.append({
+ 'name': playlist.name(),
+ })
+ self.write({
+ 'playlists': results,
+ })
+
+
class MainHandler(tornado.web.RequestHandler):
_playlists = {}
@@ -77,7 +91,7 @@ def rendered_playlists(self):
def playing(self):
return jukebox_ui.do_queue()
-
+
def current_track(self):
return jukebox_ui.get_current_track()
@@ -97,7 +111,8 @@ class RemoteControlHandler(tornado.web.RequestHandler):
def play(self):
track = self.get_argument('track', None)
playlist = self.get_argument('playlist', None)
- jukebox_ui.do_play(track=track, playlist=playlist)
+ url = self.get_argument('url', None)
+ jukebox_ui.do_play(track=track, playlist=playlist, url=url)
play.remotecontrol = True
def stop(self):
@@ -111,7 +126,8 @@ def next_(self):
def queue(self):
track = self.get_argument('track', None)
playlist = self.get_argument('playlist', None)
- jukebox_ui.do_queue(track=track, playlist=playlist)
+ url = self.get_argument('url', None)
+ jukebox_ui.do_queue(track=track, playlist=playlist, url=url)
queue.remotecontrol = True
def post(self):
View
67 jukebox.py
@@ -8,6 +8,8 @@
import time
import tornado
import traceback
+from ZODB.FileStorage import FileStorage
+from ZODB.DB import DB
AUDIO_HELPERS = (
@@ -80,9 +82,15 @@ def do_list(self, line):
else:
print '%3d %s' % (i, 'loading...')
- def do_play(self, playlist=None, track=None):
+ def do_play(self, playlist=None, track=None, url=None):
if playlist and track:
self.jukebox.load(int(playlist), int(track))
+ if url:
+ link = spotify.Link.from_string(url)
+ if link.type() == spotify.Link.LINK_TRACK:
+ track = link.as_track()
+ self.jukebox.queue(track=track)
+
self.jukebox.play()
def do_browse(self, line):
@@ -124,10 +132,18 @@ def search_finished(results, userdata):
self.results = results
self.jukebox.search(line, search_finished)
- def do_queue(self, playlist=None, track=None):
- if not playlist or not track:
- return [[p, t] for p, t in self.jukebox._queue]
- self.jukebox.queue(int(playlist), int(track))
+ def do_queue(self, playlist=None, track=None, url=None):
+ if playlist and track:
+ self.jukebox.queue(int(playlist), int(track))
+ elif url:
+ link = spotify.Link.from_string(url)
+ if link.type() == spotify.Link.LINK_TRACK:
+ track = link.as_track()
+ self.jukebox.queue(track=track)
+
+ else:
+ return self.jukebox._queue
+
def get_current_track(self):
return self.jukebox.get_current_track()
@@ -235,7 +251,7 @@ def __init__(self, jukebox):
def run(self):
from app import Application
app = Application()
- app.listen(8888)
+ app.listen(8888, '0.0.0.0')
tornado.ioloop.IOLoop.instance().start()
## playlist callbacks ##
@@ -270,6 +286,13 @@ def playlist_removed(self, c, p, i, u):
print 'Container: playlist %s removed.' % p.name()
+class Database(object):
+ def __init__(self):
+ self.storage = FileStorage('db.fs')
+ self.db = DB(self.storage)
+ self.connection = self.db.open()
+ self.root = self.connection.root()
+
class JukeboxSessionManager(SpotifySessionManager):
queued = False
@@ -294,6 +317,7 @@ def notify_main_thread(self, session):
def __init__(self, *a, **kw):
SpotifySessionManager.__init__(self, *a, **kw)
+ self.db = Database()
self.audio = AudioController()
self.ui = JukeboxWebUI(self)
self.ctr = None
@@ -336,27 +360,27 @@ def get_playlist(self, playlist):
def get_track(self, playlist, track):
return playlist[track]
- def load(self, playlist, track):
+ def load(self, track):
if self.playing:
self.stop()
- playlist = self.get_playlist(playlist)
- track = self.get_track(playlist, track)
- self.playlist = playlist
self.track = track
self.session.load(track)
- print 'Loading %s from %s' % (track.name(), playlist.name())
+ print 'Loading %s' % (track.name())
- def queue(self, playlist, track):
- if self.playing:
- self._queue.append((playlist, track))
- else:
- self.load(playlist, track)
- self.play()
+ def queue(self, playlist=None, track=None):
+ if playlist:
+ playlist = self.get_playlist(playlist)
+ self._queue.append(self.get_track(playlist, track))
+ elif track:
+ self._queue.append(track)
- def play(self, playlist=None, track=None):
- if playlist and track:
- self.load(playlist, track)
+ if not self.playing:
+ self.next_()
+
+ def play(self, track=None):
+ if track:
+ self.load(track)
self.session.play(1)
self.playing = True
@@ -370,8 +394,7 @@ def music_delivery(self, *a, **kw):
def next_(self):
self.stop()
if self._queue:
- t = self._queue.pop(0)
- self.play(*t)
+ self.play(self._queue.pop(0))
else:
self.stop()
View
16 static/App.js
@@ -0,0 +1,16 @@
+Ext.Loader.setConfig({enabled: true});
+Ext.state.Manager.setProvider(
+ new Ext.state.LocalStorageProvider());
+
+Ext.History.init();
+
+Ext.application({
+ name: 'jf',
+ autoCreateViewport: true,
+ controllers: [
+ 'Queue',
+ 'Artist'
+ ],
+ appFolder: 'static'
+});
+
View
31 static/Jukify.js
@@ -1,39 +1,40 @@
+var config;
+
function getCookie(name) {
var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
return r ? r[1] : undefined;
}
-
$(document).ready(function() {
- update_on_air = function(data) {
+ function update_on_air(data){
console.log(data);
}
- var config = {
- type : 'POST',
- url : '/remote/',
- success : update_on_air,
- dataType : "json"
+ config = {
+ type: 'POST',
+ url: '/remote/',
+ success: update_on_air,
+ dataType: "json"
};
var command_map = {
- 'next' : 'next_'
+ 'next': 'next_'
};
$('button.command').click(function() {
jQuery.ajax($.extend(config, {
- data : {
- 'command' : command_map[this.value] || this.value
+ data: {
+ 'command': command_map[this.value] || this.value
}
}));
});
- $(".track_link").click(function() {
+ $(".track_link").click(function(){
jQuery.ajax($.extend(config, {
- data : {
- command : 'queue',
- playlist : $(this).attr('id').split(':')[0],
- track : $(this).attr('id').split(":")[1]
+ data: {
+ command: 'queue',
+ playlist: $(this).attr('id').split(':')[0],
+ track: $(this).attr('id').split(":")[1]
},
}));
});
View
82 static/controller/Artist.js
@@ -0,0 +1,82 @@
+Ext.define('jf.controller.Artist', {
+ extend: 'Ext.app.Controller',
+ stores: ['Artists'],
+
+ refs: [{
+ ref: 'artists',
+ selector: 'artists'
+ }, {
+ ref: 'recentlyPlayedScroller',
+ selector: 'recentlyplayedscroller'
+ }],
+
+ init: function() {
+ this.control({
+ 'textfield[name=artistFilter]': {
+ specialkey: {
+ fn: this.onSearch,
+ buffer: 100
+ },
+ change: {
+ fn: this.onSearch,
+ buffer: 100
+ }
+ },
+ 'button[name=artistFilterButton]': {
+ click: {
+ fn: this.onSearch,
+ type: Ext.Button
+ }
+ },
+ 'recentlyplayedscroller': {
+ selectionchange: this.onArtistSelect
+ }
+ });
+
+ // Listen for an application wide event
+ this.application.on({
+ playliststart: this.onPlaylistStart,
+ scope: this
+ });
+ },
+
+ onSearch: function(field, event, options){
+ if((field.xtype == 'textfield' && event.getKey && event.getKey() == event.ENTER) || field.xtype == 'button'){
+ console.log('real search');
+ }else{
+ store = this.getArtists().getStore();
+ store.clearFilter();
+ store.filter('name', Ext.query('input[name=artistFilter]')[0].value);
+ }
+ },
+
+ onPlaylistStart: function(playlist) {
+ var store = this.getRecentArtistsStore();
+
+ store.load({
+ callback: this.onRecentArtistsLoad,
+ params: {
+ playlist: playlist.get('id')
+ },
+ scope: this
+ });
+ },
+
+ onRecentArtistsLoad: function(artists, request) {
+ var store = this.getRecentArtistsStore(),
+ selModel = this.getRecentlyPlayedScroller().getSelectionModel();
+
+ // The data should already be filtered on the serverside but since we
+ // are loading static data we need to do this after we loaded all the data
+ store.clearFilter();
+ store.filter('playlist', request.params.playlist);
+ store.sort('played_date', 'ASC');
+
+ selModel.select(store.last());
+ },
+
+ onArtistSelect: function(selModel, selection) {
+ this.getArtistInfo().update(selection[0]);
+ }
+});
+
View
11 static/controller/Queue.js
@@ -0,0 +1,11 @@
+Ext.define('jf.controller.Queue', {
+ extend: 'Ext.app.Controller',
+ stores: [
+ 'Queue'
+ ],
+ refs: [{
+ ref: 'queue',
+ selector: 'queue'
+ }]
+});
+
View
636 static/data/artists.json
@@ -0,0 +1,636 @@
+{
+ results: [
+ {name: 'Elle Varner Featuring J. Cole'},
+ {name: 'Steve Edwards'},
+ {name: 'The Rolling Stones'},
+ {name: 'Martin Solveig with Dragonette feat. Idoling'},
+ {name: 'Akcent'},
+ {name: 'The Cardigans'},
+ {name: 'Tiësto/Diplo'},
+ {name: 'Kanye West, KiD CuDi, Raekwon'},
+ {name: 'The Royal Danish Philharmonic'},
+ {name: 'Aleksander With'},
+ {name: 'Alexandra Stan'},
+ {name: 'Shakira featuring Freshlyground'},
+ {name: 'Dave202'},
+ {name: 'The All-American Rejects'},
+ {name: 'Ne-Yo'},
+ {name: 'RZA'},
+ {name: 'Editors'},
+ {name: 'DJ Shah'},
+ {name: 'Texas'},
+ {name: 'Mark Ronson featuring Lily Allen'},
+ {name: 'Acoustic Sinners'},
+ {name: 'Aaron Lewis'},
+ {name: 'Faithless'},
+ {name: 'ProSound Karaoke Band'},
+ {name: 'Slagsmålsklubben'},
+ {name: 'P!nk'},
+ {name: 'DJ Tiesto'},
+ {name: 'Pixie Lott'},
+ {name: 'The Glitch Mob'},
+ {name: 'Photek'},
+ {name: 'Sunrise Inc'},
+ {name: 'Alex Lemon'},
+ {name: 'Cerf, Mitiska & Jaren'},
+ {name: 'Michael Rune'},
+ {name: 'Sam Obernik'},
+ {name: 'James Blunt'},
+ {name: 'James Morrison'},
+ {name: 'Daniel Merriweather featuring Wale'},
+ {name: 'Tiësto/Hardwell'},
+ {name: 'Gabriel & Dresden'},
+ {name: 'Afrojack'},
+ {name: 'Nightwish'},
+ {name: 'Justin Timberlake'},
+ {name: 'Roxette'},
+ {name: 'Neus'},
+ {name: 'Labrinth'},
+ {name: 'Blur'},
+ {name: 'Basic Element'},
+ {name: 'Lily Allen'},
+ {name: 'Yolanda Be Cool'},
+ {name: 'Kelly Rowland'},
+ {name: 'Sophie Sugar'},
+ {name: 'Laurent Wolf'},
+ {name: 'The Crystal Method'},
+ {name: 'CDM Project'},
+ {name: 'Helena Paparizou'},
+ {name: 'Calvin Harris'},
+ {name: 'Fragile'},
+ {name: 'The Killers'},
+ {name: 'Cozi'},
+ {name: 'Oceanlab'},
+ {name: 'Avril Lavigne'},
+ {name: 'Kings Of Tomorrow'},
+ {name: 'Sander Kleinenberg'},
+ {name: 'Steve Angello'},
+ {name: 'Canblaster'},
+ {name: 'DJ Oriska'},
+ {name: 'Fergie'},
+ {name: 'Pearl Jam'},
+ {name: 'Akon'},
+ {name: 'Tiësto & Sneaky Sound System'},
+ {name: 'Journey'},
+ {name: 'Terminal'},
+ {name: 'Ace Karaoke'},
+ {name: 'Delerium'},
+ {name: 'The London Festival Orchestra'},
+ {name: 'Chris Brown & Benny Benassi'},
+ {name: 'Suzanne Vega'},
+ {name: 'DJ Somy feat. Nightwish'},
+ {name: 'MIKA'},
+ {name: 'Usher featuring Pitbull'},
+ {name: 'Afrojack, Dimitri Vegas, Like Mike & Nervo'},
+ {name: 'Andrea Banica'},
+ {name: 'Deep Divas'},
+ {name: 'T-Pain Featuring Lily Allen & Wiz Khalifa'},
+ {name: 't.A.T.u.'},
+ {name: 'Kid Cudi'},
+ {name: 'Vato Gonzalez'},
+ {name: 'Bellini'},
+ {name: 'Natalie Imbruglia'},
+ {name: 'Adam Young'},
+ {name: 'GLC'},
+ {name: 'Ryan Leslie'},
+ {name: 'Tiësto Feat. Priscilla Ahn'},
+ {name: 'Julius Fucik'},
+ {name: 'Patric McFly'},
+ {name: 'Ana Criado'},
+ {name: 'Nicki Minaj'},
+ {name: 'Eric Prydz'},
+ {name: 'Peter Martijn Wijnia'},
+ {name: 'Norah Jones'},
+ {name: 'Rank 1'},
+ {name: 'Mitiska'},
+ {name: 'Cher'},
+ {name: 'Tiësto feat. Nelly Furtado'},
+ {name: 'John Legend featuring Kanye West'},
+ {name: 'Wisdome'},
+ {name: 'Taio Cruz'},
+ {name: 'Skrillex'},
+ {name: 'Tiësto & Hardwell'},
+ {name: 'Prodigy'},
+ {name: 'Céline Dion'},
+ {name: 'Jennifer Lopez'},
+ {name: 'ortoPilot'},
+ {name: 'Dio'},
+ {name: 'Laidback Luke'},
+ {name: 'Various Artists - System Of A Down Tribute'},
+ {name: 'Joss Stone'},
+ {name: 'Kenny Drew Jr'},
+ {name: 'Michael Bublé'},
+ {name: 'La Roux'},
+ {name: 'The Animals'},
+ {name: 'Audrey Gallagher'},
+ {name: 'Olav Basoski'},
+ {name: 'Goldfrapp'},
+ {name: 'Zara'},
+ {name: 'Diana Krall'},
+ {name: 'Rick Ross'},
+ {name: 'Robbie Williams'},
+ {name: 'Dilated Peoples'},
+ {name: 'Imogen Heap'},
+ {name: 'Makeba Riddick '},
+ {name: 'Vika Jigulina'},
+ {name: 'Teddy Bears'},
+ {name: 'Jeff Hendrick'},
+ {name: 'Keri Hilson'},
+ {name: 'Remady'},
+ {name: 'Morcheeba'},
+ {name: 'Sirenia'},
+ {name: 'Waylon'},
+ {name: 'Lil Wayne'},
+ {name: 'September'},
+ {name: 'Within Temptation Featuring Keith Caputo'},
+ {name: 'Ke$ha'},
+ {name: 'Snow Patrol'},
+ {name: 'Maroon 5'},
+ {name: 'Bombay Bicycle Club'},
+ {name: 'Pekka Kuusisto'},
+ {name: 'Scorn'},
+ {name: 'Gregor Salto'},
+ {name: 'Emma'},
+ {name: 'Madcon'},
+ {name: 'Little Boots'},
+ {name: 'Lucenzo Feat. Don Omar'},
+ {name: 'Nadia Ali'},
+ {name: 'J. Ivy'},
+ {name: 'Hot! The Best Summer Jams For 2010'},
+ {name: 'Dance Nation'},
+ {name: 'Dash Berlin'},
+ {name: 'The White Stripes'},
+ {name: 'Vitamin Piano Series'},
+ {name: 'Kid Abelha'},
+ {name: 'Chris Brown featuring Drake, Kanye West & André 3000'},
+ {name: 'Sum 41'},
+ {name: 'Lauren Bennett'},
+ {name: 'Sia'},
+ {name: 'Kate Ryan'},
+ {name: 'Anya'},
+ {name: 'Eskobar'},
+ {name: 'Kerli'},
+ {name: 'Kings Of Leon'},
+ {name: 'ItaloBrothers'},
+ {name: 'Pharrell'},
+ {name: 'Style of Eye'},
+ {name: 'Rachael Yamagata'},
+ {name: 'R.I.O.'},
+ {name: 'Syleena Johnson'},
+ {name: 'Sarah McLachlan'},
+ {name: 'Ralph Good'},
+ {name: 'Avril Lavigne featuring Lil Mama'},
+ {name: 'Bat For Lashes'},
+ {name: 'Coldplay'},
+ {name: 'VanVelzen'},
+ {name: 'David DeeJay'},
+ {name: 'Pollyfonnik'},
+ {name: 'Vanessa Carlton'},
+ {name: 'Boys Noize'},
+ {name: 'Lisa Lois'},
+ {name: 'BT'},
+ {name: 'Katie Melua'},
+ {name: 'Beyonce featuring Kanye West'},
+ {name: 'Gigi d\' Agostino'},
+ {name: 'Ron Hagen'},
+ {name: 'apl.de.ap'},
+ {name: 'Tim Deluxe'},
+ {name: 'Irving Berlin'},
+ {name: 'Klaus Badelt'},
+ {name: 'A Fine Frenzy'},
+ {name: 'Wacker'},
+ {name: 'Carolina Liar'},
+ {name: 'Gabriella Cilmi'},
+ {name: 'Young Jeezy'},
+ {name: 'Alex M.O.R.P.H'},
+ {name: 'Sixpence None The Richer'},
+ {name: 'The Fray'},
+ {name: 'Julie McKnight'},
+ {name: 'Static Heaven'},
+ {name: 'Foo Fighters'},
+ {name: 'Missy Higgins'},
+ {name: 'Jem'},
+ {name: 'Darius & Finlay'},
+ {name: 'Labrinth feat.Tinie Tempah'},
+ {name: 'Raekwon'},
+ {name: 'Jay-Z/ Linkin Park'},
+ {name: 'Ian Carey'},
+ {name: 'Pitbull Featuring Marc Anthony'},
+ {name: 'Words Within Music'},
+ {name: 'Supafly Inc.'},
+ {name: 'Fritz Kalkbrenner'},
+ {name: 'Ki:Theory'},
+ {name: 'Orjan Nilsen'},
+ {name: 'Nero'},
+ {name: 'Various Artists - Avril Lavigne Tribute'},
+ {name: 'Bono'},
+ {name: 'Chris Brown'},
+ {name: 'Lenka'},
+ {name: 'Bob Sinclar & Raffaella Carrà'},
+ {name: 'Steve Birch'},
+ {name: 'Queen'},
+ {name: 'Sergey Lazarev'},
+ {name: 'Björk'},
+ {name: 'Busy P'},
+ {name: 'The London Philharmonia'},
+ {name: 'Stor'},
+ {name: 'U2'},
+ {name: 'Nelly Furtado'},
+ {name: 'Britney Spears feat. Nicki Minaj & Ke$ha'},
+ {name: 'Blondie'},
+ {name: 'Laura V'},
+ {name: 'Sharon Den Adel'},
+ {name: 'Analog People In A Digital World'},
+ {name: 'The Minimal Kidz'},
+ {name: 'Ela Rose'},
+ {name: 'Alizée'},
+ {name: 'Peter Grieg'},
+ {name: 'The Goo Goo Dolls'},
+ {name: 'Com Truise'},
+ {name: 'M83'},
+ {name: 'The A-Team'},
+ {name: 'Peter Ilyitch Tchaikovsky'},
+ {name: 'R.E.M.'},
+ {name: 'Michael Mind Project feat. Sean Kingston'},
+ {name: 'Steve Modana'},
+ {name: 'LCD Soundsystem'},
+ {name: 'David Guetta'},
+ {name: 'Dolores O\'Riordan'},
+ {name: 'Annie Lennox'},
+ {name: 'Diplo'},
+ {name: 'Sunlounger'},
+ {name: 'Willow featuring Nicki Minaj'},
+ {name: 'Colby O\'Donis'},
+ {name: 'Charlie Dee'},
+ {name: 'Alexis Jordan'},
+ {name: 'Flux Pavilion and Doctor P'},
+ {name: 'Edward Maya'},
+ {name: 'Caro Emerald'},
+ {name: 'Tin Tin Out'},
+ {name: 'Justin Guarini (duet with Kelly Clarkson)'},
+ {name: 'DCup'},
+ {name: 'Alain Clark'},
+ {name: 'Dony'},
+ {name: 'Mac Zimms'},
+ {name: 'Swizz Beatz'},
+ {name: 'Nadine Coyle'},
+ {name: 'Professor Green'},
+ {name: 'Sportsday Megaphone'},
+ {name: 'Berlin'},
+ {name: 'David Gray'},
+ {name: 'Tiësto feat. Emily Haines'},
+ {name: 'Vitamin String Quartet'},
+ {name: 'Wolfgang Gartner'},
+ {name: 'Chris Willis'},
+ {name: 'Tiësto feat. C.C. Sheffield'},
+ {name: 'The Black Eyed Peas'},
+ {name: 'Basto'},
+ {name: 'Martin Solveig'},
+ {name: 'Jaren'},
+ {name: 'Evanescence'},
+ {name: 'Linkin Park'},
+ {name: 'Tiesto feat. Tegan & Sara'},
+ {name: 'Jason Mraz & Colbie Caillat'},
+ {name: 'Alexander Nikolayevich Scriabin'},
+ {name: 'Stromae'},
+ {name: 'Jori Hulkkonen'},
+ {name: 'Tinie Tempah'},
+ {name: 'Portishead'},
+ {name: 'Pitbull Featuring T-Pain & Sean Paul'},
+ {name: 'Mylène Farmer'},
+ {name: 'JD Davis'},
+ {name: 'Dido'},
+ {name: 'Avicii'},
+ {name: 'Frederic Chopin'},
+ {name: 'Guns N\' Roses'},
+ {name: 'Inna'},
+ {name: 'Tori Amos'},
+ {name: 'R.I.O. feat. U-Jean'},
+ {name: 'St. Martin’s Symphony Of Los Angeles'},
+ {name: 'Eminem'},
+ {name: 'Ray Foxx'},
+ {name: '"Weird Al" Yankovic'},
+ {name: 'Svenstrup & Vendelboe'},
+ {name: 'Eminem Featuring P!nk'},
+ {name: 'Wretch 32'},
+ {name: 'JAY-Z'},
+ {name: 'Sean Kingston featuring Nicki Minaj'},
+ {name: 'Natasha Bedingfield'},
+ {name: 'Britney Spears'},
+ {name: 'Sophie'},
+ {name: 'The Egg'},
+ {name: 'Laura Jansen'},
+ {name: 'Tiësto/Marcel Woods'},
+ {name: 'Green Day'},
+ {name: 'Sub Focus'},
+ {name: 'Chris Martin'},
+ {name: 'Miami'},
+ {name: 'David Guetta Dancestars'},
+ {name: 'Kid Sister'},
+ {name: 'Usher'},
+ {name: 'Ida Engberg'},
+ {name: 'Totó La Momposina'},
+ {name: 'Crystal Waters'},
+ {name: 'American Country Hits'},
+ {name: 'Blink 182'},
+ {name: 'Afrojack & Steve Aoki'},
+ {name: 'Bon Iver'},
+ {name: 'Jeroen Van Der Boom'},
+ {name: 'Mr Hudson'},
+ {name: 'Jason Mraz featuring Ximena'},
+ {name: 'Robin S'},
+ {name: 'Starchild'},
+ {name: 'Cobra Starship'},
+ {name: 'Kaoma'},
+ {name: 'Tokyo Metropolitan Symphony Orchestra'},
+ {name: 'Enya'},
+ {name: 'John De Sohn'},
+ {name: 'Adrina Thrope'},
+ {name: 'Swedish House Mafia'},
+ {name: 'Chris Jones'},
+ {name: 'Playahitti'},
+ {name: 'Medina'},
+ {name: 'Kelly Clarkson'},
+ {name: 'Krezip'},
+ {name: 'Yolanda Be Cool & DCUP'},
+ {name: 'Olly Murs'},
+ {name: 'Stilettos'},
+ {name: 'Tiësto Feat. Cary Brothers'},
+ {name: 'System Of A Down'},
+ {name: 'Fishbowl'},
+ {name: 'T.I.'},
+ {name: 'Jay Ko'},
+ {name: 'Lupe Fiasco'},
+ {name: 'Audiogroove'},
+ {name: 'Deadmau5'},
+ {name: 'Mark Knight'},
+ {name: 'St. Martin\'s Orchestra Of Los Angeles'},
+ {name: 'Kane'},
+ {name: 'Tiësto Feat. Kele Okereke'},
+ {name: 'Soundmachine'},
+ {name: 'Big Black Delta'},
+ {name: 'Novel'},
+ {name: 'D-Flex'},
+ {name: 'Kevin Rudolf'},
+ {name: 'Leona Lewis'},
+ {name: 'Spin Doctors'},
+ {name: 'Kylie Minogue'},
+ {name: 'Busta Rhymes'},
+ {name: 'Michelle Branch'},
+ {name: 'LMFAO'},
+ {name: 'Money Mark Diggla'},
+ {name: 'Anouk '},
+ {name: 'Duck Sauce'},
+ {name: 'Tiësto and Sneaky Sound System'},
+ {name: 'KT Tunstall'},
+ {name: 'Dino'},
+ {name: 'Stoneface'},
+ {name: 'Consequence'},
+ {name: 'Sophie Ellis-Bextor'},
+ {name: 'Motion Man'},
+ {name: 'Moby'},
+ {name: 'Nirvana'},
+ {name: 'Benny Benassi'},
+ {name: 'Pitbull'},
+ {name: 'The Beatles'},
+ {name: 'Chrome Dreams - CD Audio Series'},
+ {name: 'Bob Sinclar'},
+ {name: 'Paul Kalkbrenner'},
+ {name: 'Heather Nova'},
+ {name: 'Sara Bareilles'},
+ {name: 'Big Ali'},
+ {name: 'Ben Moody'},
+ {name: 'Camille Jones'},
+ {name: 'Twista feat. Kayne West & Jamie Foxx'},
+ {name: 'Pitbull feat. Ne-Yo, Afrojack & Nayer'},
+ {name: 'Frou Frou'},
+ {name: 'Lady Gaga'},
+ {name: 'Liam Bailey'},
+ {name: 'Regie Hamm'},
+ {name: 'System Of A Down;Wu-Tang Clan'},
+ {name: 'Marc Mysterio'},
+ {name: 'Glee Cast'},
+ {name: 'Knife Party'},
+ {name: 'Sak Noel'},
+ {name: 'Stevie Wonder'},
+ {name: 'Flow 212'},
+ {name: 'Di-Rect'},
+ {name: 'The Biz'},
+ {name: 'The Buddha Lounge Ensemble'},
+ {name: 'Yves Larock'},
+ {name: 'DJ Overule'},
+ {name: 'Kaskade'},
+ {name: 'Bertolf'},
+ {name: 'Jennifer Rene'},
+ {name: 'Cam\'Ron'},
+ {name: 'Jason Derulo'},
+ {name: 'Daniel Schnyder'},
+ {name: 'Tara Mcdonald'},
+ {name: 'Keane'},
+ {name: 'Reba McEntire'},
+ {name: 'Amy Lee'},
+ {name: 'Pitbull Featuring Chris Brown'},
+ {name: 'Matisse feat. Lenka'},
+ {name: 'Iggy Pop'},
+ {name: 'Mando Diao'},
+ {name: 'Tiësto Feat. Jónsi'},
+ {name: 'Jamie Foxx'},
+ {name: 'Susana'},
+ {name: 'Tribute Mega Stars'},
+ {name: 'Blue Oyster Cult'},
+ {name: 'Ferry Corsten'},
+ {name: 'will.i.am'},
+ {name: 'Sade'},
+ {name: 'Kanye West, JAY-Z, Pusha T, Prynce Cy Hi, Swizz Beatz, The RZA'},
+ {name: 'Traditional'},
+ {name: 'Milk & Sugar feat. Miriam Makeba & Jungle Brothers'},
+ {name: 'Stardust'},
+ {name: 'Cascada'},
+ {name: 'The Corrs'},
+ {name: 'Sheryl Crow'},
+ {name: 'Dirty South '},
+ {name: 'Mitch Crown'},
+ {name: 'Kosheen'},
+ {name: 'Ladytron'},
+ {name: 'Marit Larsen'},
+ {name: 'DJ Premier'},
+ {name: 'Daft Punk'},
+ {name: 'Christina Aguilera'},
+ {name: 'Chase & Status'},
+ {name: 'Fabolous'},
+ {name: 'Paul Wall'},
+ {name: 'Miss Palmer'},
+ {name: 'Scott D. Davis'},
+ {name: 'Wheatus'},
+ {name: 'Dubravka Tomsic'},
+ {name: 'Christian Amby'},
+ {name: 'Agnes'},
+ {name: 'Maria Mena'},
+ {name: 'Beyoncé'},
+ {name: 'Sugababes'},
+ {name: 'Moné'},
+ {name: 'Eagle-Eye Cherry'},
+ {name: 'Within Temptation feat. Chris Jones'},
+ {name: 'Cerf'},
+ {name: 'Eva & The Heartmaker'},
+ {name: 'GoonRock'},
+ {name: 'Lloyd Banks'},
+ {name: 'Steve Aoki'},
+ {name: 'Kyteman'},
+ {name: 'Tegan And Sara'},
+ {name: 'Gossip'},
+ {name: 'Ace Karaoke Productions'},
+ {name: 'Snoop Dogg'},
+ {name: 'Duffy'},
+ {name: 'Adele'},
+ {name: 'David Hodges'},
+ {name: 'Zittrich'},
+ {name: 'All Saints'},
+ {name: 'John Stafford Smith'},
+ {name: 'Tiësto feat. Calvin Harris'},
+ {name: 'Jay Gordon'},
+ {name: 'Within Temptation feat. Anneke van Giersbergen'},
+ {name: 'Sunset Chillaz'},
+ {name: 'Rusty'},
+ {name: 'Pretty Lights'},
+ {name: 'Beck'},
+ {name: 'Justine Suissa'},
+ {name: 'Cidinho & Doca'},
+ {name: 'Katy Perry'},
+ {name: 'Winter Kills'},
+ {name: 'Spectral'},
+ {name: 'Robert Schumann'},
+ {name: '30 Seconds To Mars'},
+ {name: 'Christian Burns'},
+ {name: 'N-Trance'},
+ {name: 'Emilie Simon'},
+ {name: 'Various Artists - Evanescence Tribute'},
+ {name: 'Wynter'},
+ {name: 'Samim'},
+ {name: 'Triple A'},
+ {name: 'Adam Tensta'},
+ {name: 'Rihanna'},
+ {name: 'Leona Lewis / Avicii'},
+ {name: 'Michel Cleis'},
+ {name: 'Peter Fox'},
+ {name: 'Made famous by Avril Lavigne'},
+ {name: 'J. Pearl'},
+ {name: 'Estelle'},
+ {name: 'Dyland & Lenny'},
+ {name: 'Ludacris'},
+ {name: 'Bryan Adams'},
+ {name: 'Common'},
+ {name: 'Quintino'},
+ {name: 'Emiliana Torrini'},
+ {name: 'Garbage'},
+ {name: 'Anna Nalick'},
+ {name: 'Three 6 Mafia vs. Tiësto with Sean Kingston and Flo Rida'},
+ {name: 'Lucenzo'},
+ {name: 'The Underdog Project'},
+ {name: 'Adam Levine'},
+ {name: 'Cher Lloyd'},
+ {name: 'Busta Rhymes feat. Linkin Park'},
+ {name: 'Esmée Denters'},
+ {name: 'The Contemporary Acoustics Players'},
+ {name: 'Eva De Roovere'},
+ {name: 'Ciara'},
+ {name: 'Anastacia'},
+ {name: 'Tiësto feat. Kianna'},
+ {name: 'Karaoke - Evanescence'},
+ {name: 'Johann Heinrich Jr.'},
+ {name: 'Drake'},
+ {name: 'Elton John'},
+ {name: 'Alexa Borden'},
+ {name: 'Moke'},
+ {name: 'Prynce Cy Hi'},
+ {name: 'Calvin Harris Feat. Kelis'},
+ {name: 'Ilse DeLange'},
+ {name: 'Kanye West'},
+ {name: 'Dragonette'},
+ {name: 'Ann Lee'},
+ {name: 'Pitbull featuring T-Pain'},
+ {name: 'Madonna'},
+ {name: 'Tove Styrke'},
+ {name: 'The Sugarhill Gang'},
+ {name: 'The Offspring'},
+ {name: 'David Taylor'},
+ {name: 'Cher Lloyd feat. Mike Posner'},
+ {name: 'Van Velzen'},
+ {name: 'Hot Chelle Rae'},
+ {name: 'Shakira Feat. Pitbull'},
+ {name: 'Lana Del Rey'},
+ {name: 'Armin Van Buuren'},
+ {name: 'Ronny K'},
+ {name: 'Sef'},
+ {name: 'Hans Zimmer'},
+ {name: 'Alex Gaudino'},
+ {name: 'Mike Posner'},
+ {name: 'Example'},
+ {name: 'Yolanda Selini'},
+ {name: 'Melanie C'},
+ {name: 'Shade Empire'},
+ {name: 'Enigma'},
+ {name: 'Dennis Ferrer'},
+ {name: 'The Verve'},
+ {name: 'The Japanese Popstars'},
+ {name: 'Plain White T\'s'},
+ {name: 'Mick Jones'},
+ {name: 'Mos Def'},
+ {name: 'Dogzilla'},
+ {name: 'DJ Tocadisco'},
+ {name: 'Amy Macdonald'},
+ {name: 'The Singles'},
+ {name: 'Muse'},
+ {name: 'Sebastian Ingrosso'},
+ {name: 'Sander Van Doorn'},
+ {name: 'Guru Josh Project'},
+ {name: 'Ida Corr'},
+ {name: 'Sirius'},
+ {name: 'Carla Bruni'},
+ {name: 'Tiësto'},
+ {name: 'Taylor Swift'},
+ {name: 'Alesha Dixon'},
+ {name: 'Within Temptation'},
+ {name: 'Matilde Kühl'},
+ {name: 'Gaia'},
+ {name: 'Rex Mundi'},
+ {name: 'House Of Pain'},
+ {name: 'Bingo Players'},
+ {name: 'Tim Berg'},
+ {name: 'Juan Magan'},
+ {name: 'John Mayer'},
+ {name: 'Kate Havnevik'},
+ {name: 'Jean-Philippe Rameau'},
+ {name: 'Katy B'},
+ {name: 'T-Pain'},
+ {name: 'Survivor'},
+ {name: 'Valerius'},
+ {name: 'Alanis Morissette'},
+ {name: 'Al Exander'},
+ {name: 'John Legend'},
+ {name: 'Flo Rida'},
+ {name: 'Andrea Corr'},
+ {name: 'The Piano Classic Players'},
+ {name: 'Takura'},
+ {name: 'Emil Jensen'},
+ {name: 'ERA'},
+ {name: 'Emeli Sandé'},
+ {name: 'Ocean Drive'},
+ {name: 'Joachim Garraud'},
+ {name: 'Wolfgang Amadeus Mozart'},
+ {name: 'Paul Oakenfold'},
+ {name: 'Majesta'},
+ {name: 'Jacqueline Govaert'},
+ {name: 'Michael Jackson'},
+ {name: 'Michelle Shellers'},
+ {name: 'The WAV.s'},
+ {name: 'Alicia Keys'},
+ {name: 'Pusha T'},
+ {name: 'Jason Mraz'},
+ {name: 'Franz Schubert'},
+ {name: 'Milow'},
+ {name: 'Enrique Iglesias'},
+ {name: 'Lori Meyers'},
+ {name: 'The Black Eyed Peas;The Killers;Franz Ferdinand;50 Cent;Snoop Dogg;Kanye West;"Weird Al" Yankovic'}
+ ]
+}
View
172 static/data/playlist.json
@@ -0,0 +1,172 @@
+{result: [{
+ file: 'spotify:track:6z6tMB7PBab7E0KlaBbdLt',
+ time: 271,
+ artist: 'Sarah McLachlan',
+ title: 'Angel',
+ album: 'Closer: The Best Of Sarah McLachlan',
+ date: '2008-01-01',
+ track: 4,
+ pos: 0,
+ id: 1
+ }, {
+ file: 'spotify:track:3APayTEWiUl9Ssep4BOXR2',
+ time: 245,
+ artist: 'Natalie Imbruglia',
+ title: 'Torn',
+ album: 'Glorious: The Singles 97-07',
+ date: '2007-01-01',
+ track: 3,
+ pos: 1,
+ id: 2
+ }, {
+ file: 'spotify:track:4w3gLnBilV4ux0TfN4VYiW',
+ time: 283,
+ artist: 'Jem',
+ title: 'Maybe I\'m Amazed',
+ album: 'The O.C. Vol. 2',
+ date: '2004-01-01',
+ track: 15,
+ pos: 2,
+ id: 3
+ }, {
+ file: 'spotify:track:6NMfwLEzYll2tLzr3xJ8cO',
+ time: 197,
+ artist: 'Katie Melua',
+ title: 'Nine Million Bicycles',
+ album: 'The Katie Melua Collection',
+ date: '',
+ track: 2,
+ pos: 3,
+ id: 4
+ }, {
+ file: 'spotify:track:4oGTdOClZUxcM2H3UmXlwL',
+ time: 226,
+ artist: 'Alanis Morissette',
+ title: 'Ironic',
+ album: 'Jagged Little Pill',
+ date: '1995-01-01',
+ track: 10,
+ pos: 4,
+ id: 5
+ }, {
+ file: 'spotify:track:1lcCq0rn7RoEFkwZjvTiTi',
+ time: 238,
+ artist: 'Bono, The Corrs',
+ title: 'When The Stars Go Blue - Featuring Bono Disclab Remix',
+ album: 'Dreams - The Ultimate Corrs Collection',
+ date: '2006-01-01',
+ track: 5,
+ pos: 5,
+ id: 6
+ }, {
+ file: 'spotify:track:0Cvjlph1WGbwZY1PlMEtJY',
+ time: 198,
+ artist: 'Norah Jones',
+ title: 'Come Away With Me',
+ album: 'Come Away With Me',
+ date: '2002-01-01',
+ track: 5,
+ pos: 6,
+ id: 7
+ }, {
+ file: 'spotify:track:6gxycjJNMgmAyfzUXBN80P',
+ time: 234,
+ artist: 'James Blunt',
+ title: 'Goodbye My Lover',
+ album: 'Back To Bedlam',
+ date: '2004-01-01',
+ track: 4,
+ pos: 7,
+ id: 8
+ }, {
+ file: 'spotify:track:0J4aeU5RjeYdfyHqRKtF8Z',
+ time: 522,
+ artist: 'Faithless',
+ title: 'Insomnia - Monster Mix',
+ album: 'Forever Faithless - The Greatest Hits',
+ date: '2007-01-01',
+ track: 1,
+ pos: 8,
+ id: 9
+ }, {
+ file: 'spotify:track:2Cd9iWfcOpGDHLz6tVA3G4',
+ time: 203,
+ artist: 'Shakira featuring Freshlyground',
+ title: 'Waka Waka (This Time for Africa) (The Official 2010 FIFA World Cup (TM) Song)',
+ album: 'Waka Waka (This Time for Africa) (The Official 2010 FIFA World Cup (TM) Song)',
+ date: '2010-01-01',
+ track: 1,
+ pos: 9,
+ id: 10
+ }, {
+ file: 'spotify:track:08CQxkEhMhAVyKO7AhE7zT',
+ time: 245,
+ artist: 'Dolores O\'Riordan',
+ title: 'Ordinary Day',
+ album: 'Are You Listening?',
+ date: '2007-01-01',
+ track: 1,
+ pos: 10,
+ id: 11
+ }, {
+ file: 'spotify:track:1As8TZFvbaLDB8aRCzb8o1',
+ time: 227,
+ artist: 'Aleksander With',
+ title: 'Worth It - feat. Lene Marlin',
+ album: 'Worth It',
+ date: '2009-01-01',
+ track: 1,
+ pos: 11,
+ id: 12
+ }, {
+ file: 'spotify:track:3xl7PsO7Hzuig6To9FgDm6',
+ time: 257,
+ artist: 'Anastacia',
+ title: 'Left Outside Alone',
+ album: 'Anastacia',
+ date: '2004-01-01',
+ track: 2,
+ pos: 12,
+ id: 13
+ }, {
+ file: 'spotify:track:2Zl67m6esVJJ48MDhDEkO0',
+ time: 202,
+ artist: 'KT Tunstall',
+ title: 'Suddenly I See',
+ album: 'Eye To The Telescope',
+ date: '2004-01-01',
+ track: 4,
+ pos: 13,
+ id: 14
+ }, {
+ file: 'spotify:track:3HgCb6lSTWjEAnWFRdvIMw',
+ time: 180,
+ artist: 'Madonna',
+ title: 'Revolver - Madonna vs. David Guetta One Love Remix',
+ album: 'Revolver',
+ date: '2009-01-01',
+ track: 2,
+ pos: 14,
+ id: 15
+ }, {
+ file: 'spotify:track:6ddQRaJ06eGStqslcdcXyj',
+ time: 200,
+ artist: 'Kylie Minogue',
+ title: 'All The Lovers',
+ album: 'All The Lovers',
+ date: '2010-01-01',
+ track: 1,
+ pos: 15,
+ id: 16
+ }, {
+ file: 'spotify:track:5BFIGEsXd3jWGoSBciEfjS',
+ time: 239,
+ artist: 'Natasha Bedingfield',
+ title: 'Wild Horses',
+ album: 'Unwritten',
+ date: '2005-01-01',
+ track: 13,
+ pos: 16,
+ id: 17
+ }]
+}
View
8 static/data/playlists.json
@@ -0,0 +1,8 @@
+{
+ 'success': true,
+ 'results': [
+ {'id': 1, 'played_date': 4, 'name': 'Led Zeppelin'},
+ {'id': 2, 'played_date': 3, 'name': 'The Rolling Stones'},
+ {'id': 3, 'played_date': 2, 'name': 'Daft Punk'}
+ ]
+}
View
158 static/data/plchanges.json
@@ -0,0 +1,158 @@
+Trying 127.0.0.1...
+Connected to lappie.
+Escape character is '^]'.
+OK MPD 0.16.0
+file: spotify:track:6z6tMB7PBab7E0KlaBbdLt
+Time: 271
+Artist: Sarah McLachlan
+Title: Angel
+Album: Closer: The Best Of Sarah McLachlan
+Date: 2008-01-01
+Track: 4
+Pos: 0
+Id: 1
+file: spotify:track:3APayTEWiUl9Ssep4BOXR2
+Time: 245
+Artist: Natalie Imbruglia
+Title: Torn
+Album: Glorious: The Singles 97-07
+Date: 2007-01-01
+Track: 3
+Pos: 1
+Id: 2
+file: spotify:track:4w3gLnBilV4ux0TfN4VYiW
+Time: 283
+Artist: Jem
+Title: Maybe I'm Amazed
+Album: The O.C. Vol. 2
+Date: 2004-01-01
+Track: 15
+Pos: 2
+Id: 3
+file: spotify:track:6NMfwLEzYll2tLzr3xJ8cO
+Time: 197
+Artist: Katie Melua
+Title: Nine Million Bicycles
+Album: The Katie Melua Collection
+Date:
+Track: 2
+Pos: 3
+Id: 4
+file: spotify:track:4oGTdOClZUxcM2H3UmXlwL
+Time: 226
+Artist: Alanis Morissette
+Title: Ironic
+Album: Jagged Little Pill
+Date: 1995-01-01
+Track: 10
+Pos: 4
+Id: 5
+file: spotify:track:1lcCq0rn7RoEFkwZjvTiTi
+Time: 238
+Artist: Bono, The Corrs
+Title: When The Stars Go Blue - Featuring Bono Disclab Remix
+Album: Dreams - The Ultimate Corrs Collection
+Date: 2006-01-01
+Track: 5
+Pos: 5
+Id: 6
+file: spotify:track:0Cvjlph1WGbwZY1PlMEtJY
+Time: 198
+Artist: Norah Jones
+Title: Come Away With Me
+Album: Come Away With Me
+Date: 2002-01-01
+Track: 5
+Pos: 6
+Id: 7
+file: spotify:track:6gxycjJNMgmAyfzUXBN80P
+Time: 234
+Artist: James Blunt
+Title: Goodbye My Lover
+Album: Back To Bedlam
+Date: 2004-01-01
+Track: 4
+Pos: 7
+Id: 8
+file: spotify:track:0J4aeU5RjeYdfyHqRKtF8Z
+Time: 522
+Artist: Faithless
+Title: Insomnia - Monster Mix
+Album: Forever Faithless - The Greatest Hits
+Date: 2007-01-01
+Track: 1
+Pos: 8
+Id: 9
+file: spotify:track:2Cd9iWfcOpGDHLz6tVA3G4
+Time: 203
+Artist: Shakira featuring Freshlyground
+Title: Waka Waka (This Time for Africa) (The Official 2010 FIFA World Cup (TM) Song)
+Album: Waka Waka (This Time for Africa) (The Official 2010 FIFA World Cup (TM) Song)
+Date: 2010-01-01
+Track: 1
+Pos: 9
+Id: 10
+file: spotify:track:08CQxkEhMhAVyKO7AhE7zT
+Time: 245
+Artist: Dolores O'Riordan
+Title: Ordinary Day
+Album: Are You Listening?
+Date: 2007-01-01
+Track: 1
+Pos: 10
+Id: 11
+file: spotify:track:1As8TZFvbaLDB8aRCzb8o1
+Time: 227
+Artist: Aleksander With
+Title: Worth It - feat. Lene Marlin
+Album: Worth It
+Date: 2009-01-01
+Track: 1
+Pos: 11
+Id: 12
+file: spotify:track:3xl7PsO7Hzuig6To9FgDm6
+Time: 257
+Artist: Anastacia
+Title: Left Outside Alone
+Album: Anastacia
+Date: 2004-01-01
+Track: 2
+Pos: 12
+Id: 13
+file: spotify:track:2Zl67m6esVJJ48MDhDEkO0
+Time: 202
+Artist: KT Tunstall
+Title: Suddenly I See
+Album: Eye To The Telescope
+Date: 2004-01-01
+Track: 4
+Pos: 13
+Id: 14
+file: spotify:track:3HgCb6lSTWjEAnWFRdvIMw
+Time: 180
+Artist: Madonna
+Title: Revolver - Madonna vs. David Guetta One Love Remix
+Album: Revolver
+Date: 2009-01-01
+Track: 2
+Pos: 14
+Id: 15
+file: spotify:track:6ddQRaJ06eGStqslcdcXyj
+Time: 200
+Artist: Kylie Minogue
+Title: All The Lovers
+Album: All The Lovers
+Date: 2010-01-01
+Track: 1
+Pos: 15
+Id: 16
+file: spotify:track:5BFIGEsXd3jWGoSBciEfjS
+Time: 239
+Artist: Natasha Bedingfield
+Title: Wild Horses
+Album: Unwritten
+Date: 2005-01-01
+Track: 13
+Pos: 16
+Id: 17
+OK
View
173 static/data/queue.json
@@ -0,0 +1,173 @@
+{
+ results: [{
+ file: 'spotify:track:6z6tMB7PBab7E0KlaBbdLt',
+ time: 271,
+ artist: 'Sarah McLachlan',
+ title: 'Angel',
+ album: 'Closer: The Best Of Sarah McLachlan',
+ date: '2008-01-01',
+ track: 4,
+ pos: 0,
+ id: 1
+ }, {
+ file: 'spotify:track:3APayTEWiUl9Ssep4BOXR2',
+ time: 245,
+ artist: 'Natalie Imbruglia',
+ title: 'Torn',
+ album: 'Glorious: The Singles 97-07',
+ date: '2007-01-01',
+ track: 3,
+ pos: 1,
+ id: 2
+ }, {
+ file: 'spotify:track:4w3gLnBilV4ux0TfN4VYiW',
+ time: 283,
+ artist: 'Jem',
+ title: 'Maybe I\'m Amazed',
+ album: 'The O.C. Vol. 2',
+ date: '2004-01-01',
+ track: 15,
+ pos: 2,
+ id: 3
+ }, {
+ file: 'spotify:track:6NMfwLEzYll2tLzr3xJ8cO',
+ time: 197,
+ artist: 'Katie Melua',
+ title: 'Nine Million Bicycles',
+ album: 'The Katie Melua Collection',
+ date: '',
+ track: 2,
+ pos: 3,
+ id: 4
+ }, {
+ file: 'spotify:track:4oGTdOClZUxcM2H3UmXlwL',
+ time: 226,
+ artist: 'Alanis Morissette',
+ title: 'Ironic',
+ album: 'Jagged Little Pill',
+ date: '1995-01-01',
+ track: 10,
+ pos: 4,
+ id: 5
+ }, {
+ file: 'spotify:track:1lcCq0rn7RoEFkwZjvTiTi',
+ time: 238,
+ artist: 'Bono, The Corrs',
+ title: 'When The Stars Go Blue - Featuring Bono Disclab Remix',
+ album: 'Dreams - The Ultimate Corrs Collection',
+ date: '2006-01-01',
+ track: 5,
+ pos: 5,
+ id: 6
+ }, {
+ file: 'spotify:track:0Cvjlph1WGbwZY1PlMEtJY',
+ time: 198,
+ artist: 'Norah Jones',
+ title: 'Come Away With Me',
+ album: 'Come Away With Me',
+ date: '2002-01-01',
+ track: 5,
+ pos: 6,
+ id: 7
+ }, {
+ file: 'spotify:track:6gxycjJNMgmAyfzUXBN80P',
+ time: 234,
+ artist: 'James Blunt',
+ title: 'Goodbye My Lover',
+ album: 'Back To Bedlam',
+ date: '2004-01-01',
+ track: 4,
+ pos: 7,
+ id: 8
+ }, {
+ file: 'spotify:track:0J4aeU5RjeYdfyHqRKtF8Z',
+ time: 522,
+ artist: 'Faithless',
+ title: 'Insomnia - Monster Mix',
+ album: 'Forever Faithless - The Greatest Hits',
+ date: '2007-01-01',
+ track: 1,
+ pos: 8,
+ id: 9
+ }, {
+ file: 'spotify:track:2Cd9iWfcOpGDHLz6tVA3G4',
+ time: 203,
+ artist: 'Shakira featuring Freshlyground',
+ title: 'Waka Waka (This Time for Africa) (The Official 2010 FIFA World Cup (TM) Song)',
+ album: 'Waka Waka (This Time for Africa) (The Official 2010 FIFA World Cup (TM) Song)',
+ date: '2010-01-01',
+ track: 1,
+ pos: 9,
+ id: 10
+ }, {
+ file: 'spotify:track:08CQxkEhMhAVyKO7AhE7zT',
+ time: 245,
+ artist: 'Dolores O\'Riordan',
+ title: 'Ordinary Day',
+ album: 'Are You Listening?',
+ date: '2007-01-01',
+ track: 1,
+ pos: 10,
+ id: 11
+ }, {
+ file: 'spotify:track:1As8TZFvbaLDB8aRCzb8o1',
+ time: 227,
+ artist: 'Aleksander With',
+ title: 'Worth It - feat. Lene Marlin',
+ album: 'Worth It',
+ date: '2009-01-01',
+ track: 1,
+ pos: 11,
+ id: 12
+ }, {
+ file: 'spotify:track:3xl7PsO7Hzuig6To9FgDm6',
+ time: 257,
+ artist: 'Anastacia',
+ title: 'Left Outside Alone',
+ album: 'Anastacia',
+ date: '2004-01-01',
+ track: 2,
+ pos: 12,
+ id: 13
+ }, {
+ file: 'spotify:track:2Zl67m6esVJJ48MDhDEkO0',
+ time: 202,
+ artist: 'KT Tunstall',
+ title: 'Suddenly I See',
+ album: 'Eye To The Telescope',
+ date: '2004-01-01',
+ track: 4,
+ pos: 13,
+ id: 14
+ }, {
+ file: 'spotify:track:3HgCb6lSTWjEAnWFRdvIMw',
+ time: 180,
+ artist: 'Madonna',
+ title: 'Revolver - Madonna vs. David Guetta One Love Remix',
+ album: 'Revolver',
+ date: '2009-01-01',
+ track: 2,
+ pos: 14,
+ id: 15
+ }, {
+ file: 'spotify:track:6ddQRaJ06eGStqslcdcXyj',
+ time: 200,
+ artist: 'Kylie Minogue',
+ title: 'All The Lovers',
+ album: 'All The Lovers',
+ date: '2010-01-01',
+ track: 1,
+ pos: 15,
+ id: 16
+ }, {
+ file: 'spotify:track:5BFIGEsXd3jWGoSBciEfjS',
+ time: 239,
+ artist: 'Natasha Bedingfield',
+ title: 'Wild Horses',
+ album: 'Unwritten',
+ date: '2005-01-01',
+ track: 13,
+ pos: 16,
+ id: 17
+ }]
+}
View
117 static/data/recenttracks.json
@@ -0,0 +1,117 @@
+{
+ 'success': true,
+ 'results': [
+ {
+ 'name': 'Blues At Sunrise (Live)',
+ 'artist': 'Stevie Ray Vaughan',
+ 'album': 'Blues At Sunrise',
+ 'description': 'Description for Stevie',
+ 'played_date': '1',
+ 'station': 1
+ },
+ {
+ 'name': 'Sunshine Of Your Love (Live)',
+ 'artist': 'Cream',
+ 'album': 'Cream: Gold',
+ 'description': 'Description for Cream',
+ 'played_date': '2',
+ 'station': 1
+ },
+ {
+ 'name': 'Ziggy Stardust (Remastered)',
+ 'artist': 'David Bowie',
+ 'album': 'The Rise And Fall Of Ziggy Stardust (Remastered)',
+ 'description': 'Description for David',
+ 'played_date': '3',
+ 'station': 1
+ },
+ {
+ 'name': 'Runnin\' Down A Dream',
+ 'artist': 'Tom Petty',
+ 'album': 'Full Moon Fever',
+ 'description': 'Description for Tom',
+ 'played_date': '4',
+ 'station': 1
+ },
+ {
+ 'name': 'Born Under A Bad Sign',
+ 'artist': 'Jimi Hendrix',
+ 'album': 'Blues',
+ 'description': 'Description for Jimi',
+ 'played_date': '5',
+ 'station': 1
+ },
+ {
+ 'name': 'Paint It Black',
+ 'artist': 'The Rolling Stones',
+ 'album': 'Singles Collection: The London Years',
+ 'description': 'Description for the Stones',
+ 'played_date': '6',
+ 'station': 1
+ },
+ {
+ 'name': 'Jumping Jack Flash',
+ 'album': 'Rolling Stones Rock And Roll Cirucus',
+ 'artist': 'The Rolling Stones',
+ 'description': 'Description for the Stones',
+ 'played_date': 7,
+ 'station': 2
+ },
+ {
+ 'name': 'Mama Told Me (Not To Come)',
+ 'album': 'The Best Of Three Dog Night',
+ 'artist': 'Three Dog Night',
+ 'description': 'Description for the Dogs',
+ 'played_date': 8,
+ 'station': 2
+ },
+ {
+ 'name': 'Digital Love',
+ 'album': 'Discovery',
+ 'artist': 'Daft Punk',
+ 'description': 'Description for Daft Punk',
+ 'played_date': 9,
+ 'station': 3
+ },
+ {
+ 'name': 'Alone With You',
+ 'album': 'Random Album Title',
+ 'artist': 'Deadmau5',
+ 'description': 'Description for Deadmau5',
+ 'played_date': 10,
+ 'station': 3
+ },
+ {
+ 'name': 'Love Song For No One',
+ 'album': 'Room For Squares',
+ 'artist': 'John Mayer',
+ 'description': 'Description for John',
+ 'played_date': 11,
+ 'station': 4
+ },
+ {
+ 'name': 'Mindstate',
+ 'album': 'Mind State',
+ 'artist': 'Pete Philly & Perquisite',
+ 'description': 'Description for Pete',
+ 'played_date': 12,
+ 'station': 5
+ },
+ {
+ 'name': 'Thieves In The Night',
+ 'album': 'Mos Def & Talib Kweli Are Black Star',
+ 'artist': 'Black Star',
+ 'description': 'Description for Black Star',
+ 'played_date': 13,
+ 'station': 6
+ },
+ {
+ 'name': 'Kissed it',
+ 'artist': 'Macy Gray',
+ 'album': 'The Sellout',
+ 'description': 'Description for Macy',
+ 'played_date': 14,
+ 'station': 7
+ }
+ ]
+}
View
12 static/data/searchresults.json
@@ -0,0 +1,12 @@
+{
+ 'success': true,
+ 'results': [
+ {'id': 1, 'name': 'Led Zeppelin'},
+ {'id': 2, 'name': 'The Rolling Stones'},
+ {'id': 3, 'name': 'Daft Punk'},
+ {'id': 4, 'name': 'John Mayer'},
+ {'id': 5, 'name': 'Pete Philly & Perquisite'},
+ {'id': 6, 'name': 'Black Star'},
+ {'id': 7, 'name': 'Macy Gray'}
+ ]
+}
View
12 static/data/stats.json
@@ -0,0 +1,12 @@
+Trying 127.0.0.1...
+Connected to lappie.
+Escape character is '^]'.
+OK MPD 0.16.0
+uptime: 0
+db_update: 0
+artists: 0
+playtime: 0
+albums: 0
+db_playtime: 0
+songs: 0
+OK
View
14 static/data/status.json
@@ -0,0 +1,14 @@
+Trying 127.0.0.1...
+Connected to lappie.
+Escape character is '^]'.
+OK MPD 0.16.0
+volume: 100
+repeat: 0
+random: 0
+single: 0
+consume: 0
+playlist: 1269
+playlistlength: 17
+xfade: 0
+state: stop
+OK
View
70 static/ext/bootstrap.js
@@ -0,0 +1,70 @@
+/*
+
+This file is part of Ext JS 4
+
+Copyright (c) 2011 Sencha Inc
+
+Contact: http://www.sencha.com/contact
+
+GNU General Public License Usage
+This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+
+If you are unsure which license is appropriate for your use, please contact the sales department at http://www.sencha.com/contact.
+
+*/
+/**
+ * Load the library located at the same path with this file
+ *
+ * Will automatically load ext-all-debug.js if any of these conditions is true:
+ * - Current hostname is localhost
+ * - Current hostname is an IP v4 address
+ * - Current protocol is "file:"
+ *
+ * Will load ext-all.js (minified) otherwise
+ */
+(function() {
+
+ var scripts = document.getElementsByTagName('script'),
+ localhostTests = [
+ /^localhost$/,
+ /\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:\d{1,5})?\b/ // IP v4
+ ],
+ host = window.location.hostname,
+ isDevelopment = null,
+ queryString = window.location.search,
+ test, path, i, ln, scriptSrc, match;
+
+ for (i = 0, ln = scripts.length; i < ln; i++) {
+ scriptSrc = scripts[i].src;
+
+ match = scriptSrc.match(/bootstrap\.js($|\/?.*)/);
+ if (match) {
+ path = scriptSrc.substring(0, scriptSrc.length - match[0].length);
+ break;
+ }
+ }
+
+ if (queryString.match('(\\?|&)debug') !== null) {
+ isDevelopment = true;
+ }
+ else if (queryString.match('(\\?|&)nodebug') !== null) {
+ isDevelopment = false;
+ }
+
+ if (isDevelopment === null) {
+ for (i = 0, ln = localhostTests.length; i < ln; i++) {
+ test = localhostTests[i];
+
+ if (host.search(test) !== -1) {
+ isDevelopment = true;
+ break;
+ }
+ }
+ }
+
+ if (isDevelopment === null && window.location.protocol === 'file:') {
+ isDevelopment = true;
+ }
+ document.write('<script type="text/javascript" src="' + path + 'ext-all' + ((isDevelopment) ? '-debug' : '') + '.js"></script>');
+})();
+
View
93,093 static/ext/ext-all-debug.js
93,093 additions, 0 deletions not shown
View
1  static/ext/resources/css/ext-all-gray.css
1 addition, 0 deletions not shown
View
BIN  static/ext/resources/themes/images/access/boundlist/trigger-arrow.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/box/corners-blue.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/box/corners.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/box/l-blue.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/box/l.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/box/r-blue.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/box/r.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/box/tb-blue.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/box/tb.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn-group/btn-group-default-framed-corners.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn-group/btn-group-default-framed-notitle-corners.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn-group/btn-group-default-framed-notitle-sides.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn-group/btn-group-default-framed-sides.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn-group/btn-group-framed-corners.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn-group/btn-group-framed-notitle-corners.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn-group/btn-group-framed-notitle-sides.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn-group/btn-group-framed-sides.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-bg.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-corners.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-disabled-bg.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-disabled-corners.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-disabled-sides.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-focus-bg.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-focus-corners.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-focus-sides.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-over-bg.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-over-corners.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-over-sides.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-pressed-bg.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-pressed-corners.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-pressed-sides.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-large-sides.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-bg.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-corners.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-disabled-bg.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-disabled-corners.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-disabled-sides.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-focus-bg.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-focus-corners.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-focus-sides.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-over-bg.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-over-corners.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-over-sides.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-pressed-bg.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-pressed-corners.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-pressed-sides.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-medium-sides.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-small-bg.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-small-corners.gif
Diff not rendered
View
BIN  static/ext/resources/themes/images/access/btn/btn-default-small-disabled-bg.gif
Diff not rendered