Skip to content
Extraits de code Groupes Projets
Valider a9819ab6 rédigé par Sybil's avatar Sybil
Parcourir les fichiers

- Soundcloud fuckin' shitty API is working.

- Now all integrated  players (iframe) are in javascript.
- Autonext track is on.
parent e8d7220b
Branches
Étiquettes
Aucune requête de fusion associée trouvée
Fichier ajouté
......@@ -5,6 +5,9 @@ $( ".clickable_links" ).each(function() {
if ($(this).data().player == "youtube" ) {
$(this).on( 'click', youtube_click);
}
else if ($(this).data().player == "soundcloud" ) {
$(this).on( 'click', soundcloud_click);
}
});
function youtube_click() {
......@@ -13,11 +16,8 @@ function youtube_click() {
}
function youtube_player() {
if (player && $("div#music_player").length == 0) {
player.loadVideoById(music_info.data().url);
}
else {
player = new YT.Player('music_player', {
player_destroy();
player = new YT.Player('player_block', {
height: '390',
width: '640',
videoId: music_info.data().url,
......@@ -28,13 +28,15 @@ function youtube_player() {
}
});
}
}
function next_music() {
music_info = $("li[data-id=\'"+music_info.data().id+"\']").next();
if (music_info.data().player == "youtube" ) {
youtube_player();
}
else if (music_info.data().player == "soundcloud" ) {
soundcloud_player();
}
}
function onPlayerStateChange(event) {
......@@ -42,11 +44,55 @@ function onPlayerStateChange(event) {
next_music();
}
}
function player_error(event) {
next_music();
}
function player_launch(event) {
event.target.playVideo();
}
function soundcloud_click() {
music_info = $(this);
soundcloud_player();
}
function player_destroy() {
if (player) {
if ($("#player_block").length == 0) {
$("#player_position").append("<div id=\"player_block\"></div>");
}
try {
player.destroy();
}
catch(e) {}
try {
var iframe = document.querySelector('iframe');
iframe.parentNode.removeChild(iframe);
}
catch(e) {}
}
}
function soundcloud_listener() {
var iframe = document.querySelector('iframe');
var widget = SC.Widget(iframe);
widget.bind(SC.Widget.Events.READY, function() {
widget.bind(SC.Widget.Events.FINISH, next_music);
});
}
function soundcloud_player() {
player_destroy();
var music_url = "https://soundcloud.com/"+music_info.data().url;
SC.oEmbed(music_url, { auto_play: true , maxheight: 120, maxwidth: 1000 }, function(oEmbed) {
player = oEmbed.html.replace('visual=true&','');
player = $('#player_block').html(player);
});
setTimeout(soundcloud_listener, 2000 );
}
......@@ -10,6 +10,8 @@ ul
background-color: rgba(0, 110, 140, 0.8);
margin: 2px;
cursor: pointer;
overflow: hidden;
position: relative;
}
......@@ -19,6 +21,9 @@ ul
padding: 15px 0;
font: 15px 'Helvetica Neue', Helvetica, Arial, sans-serif;
color: rgba(250,220,180,1);
overflow: hidden;
position: relative;
text-overflow: ellipsis;
}
.music_id
......@@ -29,7 +34,7 @@ ul
.music_chan
{
width: 10%
width: 10%;
}
.music_title
......@@ -40,7 +45,6 @@ ul
.music_sender
{
width: 10%;
/*overflow: hidden;*/
}
.music_tags
......
<div id="music_player"></div>
<ul>
<% @musics.each do |music| %>
<li class="clickable_links"
......@@ -9,16 +7,10 @@
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
track = music.url.sub(/https:\/\/soundcloud\.com\//,'')
end %>">
<span class="music_id"><%= music.id %></span>
<span class="music_chan">
<%= link_to(music.channel.chan,'/musics/channels/'+music.channel.chan.sub('#','')) %></span>
<span class="music_chan"><%= music.channel.chan %></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.channel.sender_irc %></span>
......
<div id="music_player"></div>
<ul>
<% @musics.each do |music| %>
<li class="clickable_links"
......@@ -9,12 +7,7 @@
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
track = music.url.sub(/https:\/\/soundcloud\.com\//,'')
end %>">
<span class="music_id"><%= music.id %></span>
<span class="music_chan"><%= music.channel.chan %></span>
......
......@@ -6,10 +6,15 @@
<%= csrf_meta_tags %>
</head>
<body>
<div id="player_position">
<div id="player_block"></div>
</div>
<%= yield %>
</body>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<script src="https://www.youtube.com/iframe_api"></script>
<script src="https://connect.soundcloud.com/sdk.js"></script>
<script src="https://w.soundcloud.com/player/api.js"></script>
</html>
Aucun aperçu pour ce type de fichier
<div id="music_player"></div>
<ul>
<% @musics.each do |music| %>
<li class="clickable_links"
......@@ -9,12 +7,7 @@
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
track = music.url.sub(/https:\/\/soundcloud\.com\//,'')
end %>">
<span class="music_id"><%= music.id %></span>
<span class="music_chan"><%= music.channel.chan %></span>
......
<ul>
<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 %>
">
<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"
track = music.url.sub(/https:\/\/soundcloud\.com\//,'')
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"
track = @music.url.sub(/watch\?v=/,'embed/')
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, :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
end
%>
Aucun aperçu pour ce type de fichier
<div id="music_player"></div>
<ul>
<% @musics.each do |music| %>
<li class="clickable_links"
......@@ -9,18 +7,15 @@
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
track = music.url.sub(/https:\/\/soundcloud\.com\//,'')
end %>">
<span class="music_id"><%= music.id %></span>
<span class="music_chan"><%= music.channel.chan %></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>
<span class="music_sender"><%= music.channel.sender_irc %></span>
</li>
<% end %>
</ul>
<%= paginate @musics %>
#require 'yaml'
soundcloud = YAML.load_file("#{File.dirname(__FILE__)}/../soundcloud.yml")
$soundcloud = Soundcloud.new(:client_id => soundcloud["client_id"])
......@@ -57,6 +57,8 @@ Rails.application.routes.draw do
resources :tags
resources :channels
root to: 'musics#index'
get '/musics/tags/:tag', to: "tags#show"
get '/musics/users/:user', to: "channels#show_user"
get '/musics/channels/:channel', to: "channels#show_channel"
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter