From 33a2fac04d7929fc8ada62fd2ba5d1038fb4533b Mon Sep 17 00:00:00 2001
From: Sybil <sybil.deboin@gmail.com>
Date: Thu, 11 Sep 2014 05:18:57 +0200
Subject: [PATCH] Youtube player autonext track is OOOONNNNNN -- The player is
 handled by javascript now (ruby before).

---
 .../assets/javascripts/.music_player.js.swo   | Bin 12288 -> 12288 bytes
 app/assets/javascripts/music_player.js        |  55 ++++++++++++++++--
 app/views/layouts/application.html.erb        |   3 +-
 app/views/musics/.index.html.erb.swo          | Bin 12288 -> 12288 bytes
 app/views/musics/index.html.erb               |  16 ++++-
 app/views/musics/show.html.erb                |  34 ++++++-----
 .../tags/.show.html.erb.swp}                  | Bin 12288 -> 12288 bytes
 app/views/tags/show.html.erb                  |  17 +++++-
 8 files changed, 100 insertions(+), 25 deletions(-)
 rename config/.routes.rb.swp => app/assets/javascripts/.music_player.js.swo (81%)
 rename app/{controllers/.tags_controller.rb.swp => views/tags/.show.html.erb.swp} (90%)

diff --git a/config/.routes.rb.swp b/app/assets/javascripts/.music_player.js.swo
similarity index 81%
rename from config/.routes.rb.swp
rename to app/assets/javascripts/.music_player.js.swo
index a2762380866c3e4446801c7487f5c6b7ff484868..ba44fcc7887c8b7050c2e22fb655f17bf2412c79 100644
GIT binary patch
literal 12288
zcmYc?2=nw+FxN9-U|?VnU|=W}77W?U{))v;kb$ANGAT0$Bu)T_6ekvBWM`%lQd<W$
zP(M61DIh1Y(kZ`0Ke3=dKe4ztwWL@-E3quGIJqdZprlwox3oAjIldq#u`;ztFRPe<
z^`p|GAut*OghHUSBu&?Xm%-S`&;X=VSxHerSSS?49L1v{Fd71*Aut*OqaiRF0;3@?
z8UmvsFd70QBm_zd7#Zpr7#NtK{soT%FfcGMLisQn${nRfLtr!nMnhmU1V%$(Gz3ON
zU^E0qLtr!nMnhmU1V%$(Gz5lV2qdO3Fz|CTF#P6*%>Tps{~!1n7@qJmFg)gGVA#pe
zz|h0bz>v((z!1;Rz!1&Pz!1gHz+lhMz@X00z#z=ez#z!az#zcS!0?5Sfnh%%14ADl
z149=d14APp149TO1A{#u1A{gn0|P4`1H)Hd28PSL3=B(o85ml585nAL85l}=85jzA
z85r_;85r_-85qKN85jh485kb&Ffg3vVPH7M!@zKahk@ZR4+Fzo9tMUM9tMUY9tMUy
z9tMUS9tMVN9tH*<9tH**9tH+09tH+W9tH+U9tMWLP`^FqW?&HIVPJT}&A_mcn}K0E
zHv>Z*Hv>ZkHv@w+$nQfi?na$F8UmvsFd71*Aut*OqaiT-LO=lu^!1?(3<|dlhEkXS
z8CoD(iPngu5Qzyfgk+L(6Ns>q0!wOZ8EP366jIAl^Gfte5{uGPOY}esSHm(>Qu8%5
ztr^lv^O8$4^FfMgF#&e1wY4DS*v-T(gJfHt0>}-iMe#X_rFpn?;1Wl1H;PHg85&?m
zX)07RfW4iUT2T@YUagDG^3<ZD{30|RAWIb#Q1vM&WTq)V)aj)pmLw|J+A0`;?0|+{
zo<e>eXvJ`9QE*9ONvd;3VqSVGL_J6q*d?_J44{av%r7k|O-hBX9R@iHVmR21@tJvP
z`CuC~G{KRSS_HC6393m+0c4tj0z$2Vt%8b%Qch+x$W^+TDYh}{O4<l%m{FN2+Db9%
zu}YeHAb)`@g*zN101F^kph1G5R?`~nVg&^VALM%V{5)4sn5kRA;tw2zP<09l>iKy{
zA)s!BEnIYvRR^Uerc@$K1Eq%K444XVR2Ew)R6})?fs(9eiWO1-z<gL*lmpXMo|#gT
zVWpsMW@4ZY6U#`=OwTB>QcyRxgb6~@pMtGIUTV2QWQZOl{xsAfp$Cyw*8$s|np2z#
zW<UZ0BBz&=pO^y9L{62SDH;%M$njTNlmiYyP||^DQBYF@MOR8@nKDE<L|92vFDErG
zy(9w^*Qm(~8u9Sd0*fJZaZpS_j0Cv=oGMB(GK&$pJ5K?oB{?TEIa>pikQg8_4DpnT
z23Uh$ex8PcI#`Xm4yqowXJAS}X%0_1RnbsT(gT~6n3R(mpOcxFU96;_sh66VoS^|r
Ve-MY1B^E)`lQjc~jqr*!0|0wb0|Nj6

literal 12288
zcmYc?2=nw+FxN9-U|?VnU|>*C<qWyN_k+bwkb$ANGAT0$Bu)T_6ekvBWM`%lQd<W$
zP(M61DIh1Y(kZ`0KRG`yEi+xeD8IBMwOFqxiGW3;(xV|T8Uo~nKxs*ut_3fHv5}zx
z$N*&}MFnA@P!MwzkA}c#2#kinXb6mkz-S1JhQMeDjE2By2#k;rC@ElMsAphcV1oMB
z21+xc(NOLvH5vk=Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?1VbP(g@GZF
zgMlHJ6Egn~>;K>9XJF{!XJ828XJ82AXJ8QLXJGip$H4HHkAdMn9|OY{J_d%(d<+ap
zd<+cId<+ayd<+aHco`Vh@iH*1<z--K;bmY*=Vf3B<z-;7=Vf3}=Vf4!=4D_I=Vf4E
z<Yi!Z!^6PvfQNzM8V>`*RUQV0WjqWFojeQ-sXPn}K0FKzPCN_@jywzutUL@1FSr>P
z&Tum@Y~W^K=-_5xsNrT{DB@;dDCA~faOY-V(Bfub5aDKE;NoUrxWmQ3u$GH~VGS1p
zLoF8rLoycwgAx}5!%I#EhO?Xu42L-x7}j$#FwEs-V3@<nz);8u@jKZ6LoohEoje)>
zqaiRF0;3@?8UmvsFvvq7H7|uhK_NZ0L_u9Yx3oAjxmdp>F}+ydsw6R8T}PoL-%3FV
zB%oZJkzcOFz@VT|lv<o$T9lkxtN>C|j4A>#f<Zw+SwTSoVm63{qN|`NKczIe1f&xp
zr>vlnSWp03d0A4FpOceXRIHzvlAD>Q4^tVRoSz4k(kn{Rgc=XB#3i#RHMyi%0ZoIx
zmO@Fsf+NTfE2{vgea>)0pa$e6=B5@GBqpaSSb^<RNXZAwxK<?Q7UZPDeX0On460C`
zS(1^Nr;w-s*JlL^50D>_!lWQ0za+m{M<F>sFFCa+uh>e#sw6)>Jts9WDJK<dJZfO%
z7ncxFjU0>x`Nbs)>JS6fp{7A?LbitppCB9v^8~Uz$ZTlxC`wIE%_~vYQOM7;Qm{$}
zMO1Q0W_}*j6)3(cPRvOyhB-n(0Yxr3KQ}iu4<7x<K?jW}m_|JDppctil&X-N4~nM>
zh2qjAUAQ^$NI~`kOjg0FI2Dw_usIs$FdYReu=}BEU|Ne6tYGPp7zYw|6SDiDVO*S_
zlLCuY1qDPHLoI~52sLLZC}2wzpg;%b>f((2q7sCexv9BHsYOupP$PyE-{lv8qP`d&
z)>r}w>{uL8sF9mkP^{n)5)z<LmRgil49cyDJg$%kPFTeXiKQj^xrrs2$%#2Rm6~wN
z!2W`{R^KW!MZci5C^;jsI8|N2)=oh^Ik6-$CqG>oE~=xD2+D^rK8nlo)4=&T1)9lA
zG7?J^k`wb3l2R2i^UCtGQ&YehUje2$zO*PuBQwQH0qOv~%oI&n4#IF4s(Z>ZQ_CSS
z0SlJ=G=-wn^wONfB8c@+FBawJmnf*0r{*N*=cX!W=B1=oK=eiCmx3Lakyw_hP?C|V
z09Kiwrcjw*TBJ~%SppI%ErGdN2_y|Jw3QWtQ&SZ(^2-$xb8;Z6!G&6}LQZ0(LVjrp
z#FI)ziP=yiik0-h;S`dQs!&jrnO~GyQmK$xtdNvgoSLFgT9BWokYALNTBMMlrjT5e
zng~h{RtjmEMa3l$erk$>uAM?gW_m_yaS7ZAJ%*sf%$#Dq#DapH%w(`GJ%~&6Qi>AG
HK?xH8`T|wc

diff --git a/app/assets/javascripts/music_player.js b/app/assets/javascripts/music_player.js
index c05bf4f..18f3312 100644
--- a/app/assets/javascripts/music_player.js
+++ b/app/assets/javascripts/music_player.js
@@ -1,9 +1,52 @@
-function music_player() {
-  $.get("/musics/"+$(this).data().id, function( data ) {
-    $( "#music_player" ).html( data );
-  }); 
-}
+var music_info;
+var player;
 
 $( ".clickable_links" ).each(function() {
-  $(this).on( 'click', music_player );
+  if ($(this).data().player == "youtube" ) {
+    $(this).on( 'click', youtube_click);
+  }
 });
+
+function youtube_click() {
+  music_info = $(this);
+  youtube_player();
+}
+
+function youtube_player() {
+  if (player && $("div#music_player").length == 0) {
+    player.loadVideoById(music_info.data().url);
+  }
+  else {
+    player = new YT.Player('music_player', {
+      height: '390',
+      width: '640',
+      videoId: music_info.data().url,
+      events: {
+        'onReady': player_launch,
+        'onStateChange': onPlayerStateChange,
+        'onError': player_error
+      }
+    });
+  }
+}
+
+function next_music() {
+  music_info = $("li[data-id=\'"+music_info.data().id+"\']").next();
+  if (music_info.data().player == "youtube" ) {
+    youtube_player();
+  } 
+}
+
+function onPlayerStateChange(event) {
+  if (event.data == 0) {
+    next_music();
+  }
+}
+
+function player_error(event) {
+  next_music();
+}
+
+function player_launch(event) {
+  event.target.playVideo();
+}
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 2c912a7..2ed556e 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -10,5 +10,6 @@
 <%= yield %>
 
 </body>
-  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
+<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
+<script src="https://www.youtube.com/iframe_api"></script>
 </html>
diff --git a/app/views/musics/.index.html.erb.swo b/app/views/musics/.index.html.erb.swo
index ef74791dc89e70492f4f2e9dc0f020eb5844a54c..8e8aba757e7a34f84ca6450aee0cb795a37e0352 100644
GIT binary patch
delta 585
zcmZojXh;xCG6?hZRWR2xVPIfj5MW@?6%h>C&9PDJ7eAxaW<i0^{Ji=+3=ErjAhJ@E
z1r@}jX7e*JRPZw}`13O`SnxA22=Fs7Jmh0w*uuxauz-(&A(D@Q!JdzSL5q)pfsc=Y
z;WsY>!!uq6hE2Q-43)eL4C=fL49|HO81C{gFkIweU^or6VH3}0MFB&e$*g)NlZEvq
zC(qJ*Rj&XAsd*_1s&-0t3{XCl0turDDJUrUWaecnq~w?9DWS;~r4}cbrlJWdD3lZ>
zCTHtqrYK;@)PtoIY!y_B^Gowml5_G)Q}ohPOElE=i&Bg8bIMZHbrh^hi*gif?G$oL
zi!+n;N{ezd(acFoP0!3j5lhV}&P;=9D5)$+Rj{>HP(oM%cQ?%cFlWH6&?_!Y($Lq_
zDznwsQCCN`5Yyz!{L+%rq*Nt@2U8MD5_L<9a%`1sRBh3O3vv=GQ;Wbd63A{;wL=&%
QdA`2%<a&L@$-DJk0UJMuH~;_u

delta 147
zcmZojXh;xCG6?hZRWR2xVPIfj5MW^FRpSgX;@l|qi=UBiv!K9de%>Fv3=BSe5Lv#-
zf(qhV4g3rYKKu*}!u$*j2l*Hn8u=I)%J~==viTSoQu!DdeEA?cSok(83T)<`yjjOY
p*rvE3F;5{mC$YHLR*As|1UGNev0$7$UteZ&gT54_-Q?Z+t^i=^ABO+{

diff --git a/app/views/musics/index.html.erb b/app/views/musics/index.html.erb
index d34d470..fa3cd8e 100644
--- a/app/views/musics/index.html.erb
+++ b/app/views/musics/index.html.erb
@@ -2,7 +2,20 @@
 
 <ul>
   <% @musics.each do |music| %>
-    <li class="clickable_links" data-id="<%= music.id %>" >
+    <li class="clickable_links" 
+        data-id="<%= music.id %>" 
+        data-player="<%= music.type %>" 
+        data-url="<%= 
+            if music.type == "youtube" 
+              track = music.url.sub(/.*v=/,'')
+            elsif music.type == "soundcloud"
+              begin
+                track = $soundcloud.get('/resolve', :url => music.url)
+                track.id 
+              rescue
+                "Link down"
+              end 
+            end %>">
       <span class="music_id"><%= music.id %></span>
       <span class="music_title"><%= music.title%></span>
       <span class="music_tags"><%= music.tags.map{|t| t.tag}.join(", ") %></span>
@@ -11,4 +24,3 @@
   <% end %>
 </ul>
 <%= paginate @musics %>
-
diff --git a/app/views/musics/show.html.erb b/app/views/musics/show.html.erb
index daf572a..3d5e0f8 100644
--- a/app/views/musics/show.html.erb
+++ b/app/views/musics/show.html.erb
@@ -1,14 +1,21 @@
 <ul>
-  <li>
-    <span>
-      <%= @music.id %>
-    </span>
-    <span>
-      <a href="<%= @music.url %>"><%= @music.title %></a>
-    </span>
-    <span>
-      <%= @music.sender %>
-    </span>
+  <li class="clickable_links" data-url="
+    <%= 
+      if @music.type == "youtube" 
+        track = @music.url.sub(/.*v=/,'')
+  elsif @music.type == "soundcloud"
+    begin
+      track = $soundcloud.get('/resolve', :url => @music.url)
+      track.id 
+    rescue
+      "Link down"
+    end 
+  end %>
+   ">
+      <span class="music_id"><%= @music.id %></span>
+      <span class="music_title"><%= @music.title%></span>
+      <span class="music_tags"><%= @music.tags.map{|t| t.tag}.join(", ") %></span>
+      <span class="music_sender"><%= @music.sender_irc %></span>
   </li>
 </ul>
 <%=if @music.type == "youtube" 
@@ -16,10 +23,9 @@
     raw("<iframe id=\"ytplayer\" type=\"text/html\" width=\"640\" height=\"390\" src=\""+track+"?autoplay=1\" frameborder=\"0\"/>")
   elsif @music.type == "soundcloud"
     begin
-      track = $soundcloud.get('/oembed', :url => @music.url)
-      raw(track['html'])
-      #track = $soundcloud.get('/resolve', :url => @music.url)
-      #raw("<iframe width=\"100%\" height=\"400\" scrolling=\"no\" frameborder=\"no\"  src=\"https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/"+track.id+"&amp;auto_play=true&amp;hide_related=false&amp;show_comments=false&amp;show_user=false&amp;show_reposts=false&amp;visual=true\"></iframe>")
+      track = $soundcloud.get('/oembed', :url => @music.url, :maxwidth => "800", :maxheight => "150", :auto_play => "true")
+      raw(track['html'].gsub("visual=true&","")) 
+      #The Soundcloud API doesn't enable modification of the parameter 'visual'
     rescue
       "Link down"
     end
diff --git a/app/controllers/.tags_controller.rb.swp b/app/views/tags/.show.html.erb.swp
similarity index 90%
rename from app/controllers/.tags_controller.rb.swp
rename to app/views/tags/.show.html.erb.swp
index 9c1bd6d5d4b0925b6b28d8ccfd1f21957fe4b8e4..bb4ae67f0b2dceccda59dab28c28f35e349ca1b2 100644
GIT binary patch
literal 12288
zcmYc?2=nw+FxN9-U|?VnU|=v15e%8g^p3?&kb$ANGAT0$Bu)T_6ekvBWM`%lQd<W$
zP(M61DIh1Y(kZ`0Ke3=dzbrGgyjZ^^F}+y7I3vGYFQX(kM=!M~iGZb}(xV|T8Un<J
zKxs*ut_3fHv5}zxNRzUXqJpqcD2O?VM?+vV1V%$(Gz3ONU^E0qLtr!nMnhmU1V%^*
zloT*B)H5(JFhTt*1*I9$Xef7-8V!Nb5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7
zfzc2cf+3KY!oZ-%!@#hK2QvQ;>;FIEXJB~9&%khppMhZyKLf*Teg=jLeg+1Aeg*~$
zeg*~skUSp)!xlaUh6Q{K43T^c4EB5s3|f2)419bH48M697@qMmFl^#wV5s0_U{C|`
zc^DY(@Gvl3;9+1m1+#MqhS{i-M?+vV1V%$(Gz3ONU^E0qLtr!nMnhmU1n3b0HmV?K
zt5A@bo|%_elB(d4TUwl%T&$pK$6%vhnq$YHpkSk_keZhQ5>Zf4P_WU@$pndl*~JBk
zc?!uniN(dXN??ug#i@BIsYOb5HmbG?U=cltNPK2dvVy9ejXp>V9{r$Y%gDMxe7)Sn
zg6f)*8if+QlEm~{y{!DqJPjos1tm?QOw26FNkuUdBtVSL%oJp8nV=v*bw4N!6rh2l
z1oIR`5F*R~<G^SopUk{$g_QjAJS8-_qSWH#(o{4-1%;BL#N=$f%oGLeG77c|D#iJw
zc`3;``K2j(>8T|e>iR{g#rZj9sp>ikR;5Kb3buC8m?$mE(L^&QDK$Ma4@E3Br#LeW
zs-dK^AXUNERzV421-i4r?o)upb!kzKUU6xXhQ6LwnXSH#x;m<Tm<CtomzI<!r79u3
zmy%eLs9Rc;W2*#8LU5;ng$r^LD^rUgGLXatcA=^ry8g@*WJTbZgDSDf$%G}?<ebdp
z?8Ky;)cBmtyzFAI0vlCW4$w<YOwLe9$ycZW+f)Ne|2Ciu!C;e;S*8H80W1*@ag>ss
LjebgInH>WFXF?qe

literal 12288
zcmYc?2=nw+FxN9-U|?VnU|{f7<P6!!{))v;kb$ANGAT0$Bu)T_6ekvBWM`%lQd<W$
zP(M61DIh1Y(kZ`0Ke3=dKRG|Iq$ocpC$*?pza%leI36LOSCmA+>QU*@5Eu;sVnU#_
zBu&?Xm%-S`&;X=dSxHerSSS?49L1v{Fd71*Aut*OqaiRF0;3@?8UmvsFd70QBm_zd
z7#Zpr7#NtK{uO}IjA%5JJ4%g)z-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By
z2n@jxNK9d1DCT2eIL`-}|A+PeFY_}n9Oq|X*v!wsu!*06VLCqpLn}W6LoGi8LpeVK
zLm58<LpDDH10O#F!)HDQhKGC%3^(~07%oH2I>*Pru#As^p@WZsA(D@Q!Gn*1A&!rM
z!3|{35DceLCy$1}Xb6mkz-S1JhQMeDjE2By2#kinXb6mkz_1K~)YR0x6b1$b1rVj6
zfS?r=((;RP6HD|mN^)};Kr%(C#Rd6!STumNl41g03yC!h>~4f}LE1o$#O3Ui_>z2u
zlzfF6h_7nEK61z{EzV3XR<Kp@1u^up@-y>_HLO5O(>3+VGg6CEH41VPE0gj|;z43o
z3e_cv=~fB_iA9OI#nB*jv9+3d1&QgYa4`@kmO()wB{fZ<I3vHDl%U0MBgBy)s}*b&
yLK4&U5_3RN0Wv!?FD12tAvq_pxELf;><nL8uVAC#SWu9YnVeXXnV*LcX8-^x3&?B$

diff --git a/app/views/tags/show.html.erb b/app/views/tags/show.html.erb
index 4aacd27..7d46448 100644
--- a/app/views/tags/show.html.erb
+++ b/app/views/tags/show.html.erb
@@ -2,7 +2,20 @@
 
 <ul>
   <% @musics.each do |music| %>
-    <li class="clickable_links" data-id="<%= music.id %>" >
+    <li class="clickable_links" 
+        data-id="<%= music.id %>" 
+        data-player="<%= music.type %>" 
+        data-url="<%= 
+            if music.type == "youtube" 
+              track = music.url.sub(/.*v=/,'')
+            elsif music.type == "soundcloud"
+              begin
+                track = $soundcloud.get('/resolve', :url => music.url)
+                track.id 
+              rescue
+                "Link down"
+              end 
+            end %>">
       <span class="music_id"><%= music.id %></span>
       <span class="music_title"><%= music.title %></span>
       <span class="music_tags"><%= music.tags.map{|t| t.tag}.join(", ") %></span>
@@ -10,4 +23,4 @@
     </li>
   <% end %>
 </ul>
-
+<%= paginate @musics %>
-- 
GitLab