gpt4 book ai didi

soundcloud - 从 Soundcloud API 获取artwork_url 并在自定义 SC/SM2 播放器中显示专辑封面

转载 作者:行者123 更新时间:2023-12-04 05:05:02 25 4
gpt4 key购买 nike

我一直在努力弄清楚如何artwork_url可以从 soundclouds API 使用以便将每个封面输出到 this custom player ,并在播放列表中将每个适当的拇指放在自己的轨道旁边?

我知道我需要使用 artwork_url属性,但是我不明白这是如何实现的,也不明白如何将其集成到 this particular custom player plugin 中.
特别感谢任何代码示例和/或帮助!
注意:能够通过其他方式控制艺术品的“大小”也很好,然后只是 CSS。

最好的

编辑 #1

我换了 Soundcloud Custom Player on Heroku因为在我能够启动并运行它之后,我发现它的加载时间比我上面引用的原始播放器要快得多(尽管那个播放器仍然非常棒)......

但是,我现在仍然像以前一样执行相同的任务 - 如何将专辑封面添加到脚本并相应地输出?

下面粘贴的是Heroku球员:

// # SoundCloud Custom Player

// Make sure to require [SoundManager2](http://www.schillmania.com/projects/soundmanager2/) before this file on your page.
// And set the defaults for it first:

soundManager.url = 'http://localhost:8888/wp-content/themes/earpeacerecords/swf';
soundManager.flashVersion = 9;
soundManager.useFlashBlock = false;
soundManager.useHighPerformance = true;
soundManager.wmode = 'transparent';
soundManager.useFastPolling = true;

// Wait for jQuery to load properly

$(function(){

// Wait for SoundManager2 to load properly

soundManager.onready(function() {

// ## SoundCloud
// Pass a consumer key, which can be created [here](http://soundcloud.com/you/apps), and your playlist url.
// If your playlist is private, make sure your url includes the secret token you were given.

var consumer_key = "915908f3466530d0f70ca198eac4288f",
url = "http://soundcloud.com/poe-epr/sets/eprtistmix1";

// Resolve the given url and get the full JSON-worth of data from SoundCloud regarding the playlist and the tracks within.

$.getJSON('http://api.soundcloud.com/resolve?url=' + url + '&format=json&consumer_key=' + consumer_key + '&callback=?', function(playlist){

// I like to fill out the player by passing some of the data from the first track.
// In this case, you'll just want to pass the first track's title.

$('.title').text(playlist.tracks[0].title);

// Loop through each of the tracks

$.each(playlist.tracks, function(index, track) {

// Create a list item for each track and associate the track *data* with it.

$('<li>' + track.title + '</li>').data('track', track).appendTo('.tracks');

// * Get appropriate stream url depending on whether the playlist is private or public.
// * If the track includes a *secret_token* add a '&' to the url, else add a '?'.
// * Finally, append the consumer key and you'll have a working stream url.

url = track.stream_url;

(url.indexOf("secret_token") == -1) ? url = url + '?' : url = url + '&';

url = url + 'consumer_key=' + consumer_key;

// ## SoundManager2
// **Create the sound using SoundManager2**

soundManager.createSound({

// Give the sound an id and the SoundCloud stream url we created above.

id: 'track_' + track.id,
url: url,

// On play & resume add a *playing* class to the main player div.
// This will be used in the stylesheet to hide/show the play/pause buttons depending on state.

onplay: function() {

$('.player').addClass('playing');

$('.title').text(track.title);

},
onresume: function() {

$('.player').addClass('playing');

},

// On pause, remove the *playing* class from the main player div.

onpause: function() {
$('.player').removeClass('playing');
},

// When a track finished, call the Next Track function. (Declared at the bottom of this file).

onfinish: function() {
nextTrack();
}

});

});

});

// ## GUI Actions

// Bind a click event to each list item we created above.

$('.tracks li').live('click', function(){

// Create a track variable, grab the data from it, and find out if it's already playing *(set to active)*

var $track = $(this),
data = $track.data('track'),
playing = $track.is('.active');

if (playing) {

// If it is playing: pause it.

soundManager.pause('track_' + data.id);

} else {

// If it's not playing: stop all other sounds that might be playing and play the clicked sound.

if ($track.siblings('li').hasClass('active')) { soundManager.stopAll(); }

soundManager.play('track_' + data.id);

}

// Finally, toggle the *active* state of the clicked li and remove *active* from and other tracks.

$track.toggleClass('active').siblings('li').removeClass('active');

});

// Bind a click event to the play / pause button.

$('.play, .pause').live('click', function(){

if ( $('li').hasClass('active') == true ) {

// If a track is active, play or pause it depending on current state.

soundManager.togglePause( 'track_' + $('li.active').data('track').id );

} else {

// If no tracks are active, just play the first one.

$('li:first').click();

}

});

// Bind a click event to the next button, calling the Next Track function.

$('.next').live('click', function(){
nextTrack();
});

// Bind a click event to the previous button, calling the Previous Track function.

$('.prev').live('click', function(){
prevTrack();
});

// ## Player Functions

// **Next Track**

var nextTrack = function(){

// Stop all sounds

soundManager.stopAll();

// Click the next list item after the current active one.
// If it does not exist *(there is no next track)*, click the first list item.

if ( $('li.active').next().click().length == 0 ) {
$('.tracks li:first').click();
}

}

// **Previous Track**

var prevTrack = function(){

// Stop all sounds

soundManager.stopAll();

// Click the previous list item after the current active one.
// If it does not exist *(there is no previous track)*, click the last list item.

if ( $('li.active').prev().click().length == 0 ) {
$('.tracks li:last').click();
}

}

});

});

编辑 #2

所以我奇怪地能够解决一些问题......但是我不知道它的语义是否正确......
$.getJSON('http://api.soundcloud.com/resolve?url=' + url + '&format=json&consumer_key=' + consumer_key + '&callback=?', function(playlist){

// I like to fill out the player by passing some of the data from the first track.
// In this case, you'll just want to pass the first track's title.

$('.title').text(playlist.tracks[0].title);
$('.album_art').attr('src', playlist.artwork_url);

// Loop through each of the tracks

$.each(playlist.tracks, function(index, track) {

// Create a list item for each track and associate the track *data* with it.

$('<li>' + '<img src="' + playlist.artwork_url + '">' + track.title + '</li>').data('track', track).appendTo('.tracks');

// * Get appropriate stream url depending on whether the playlist is private or public.
// * If the track includes a *secret_token* add a '&' to the url, else add a '?'.
// * Finally, append the consumer key and you'll have a working stream url.

url = track.stream_url;

(url.indexOf("secret_token") == -1) ? url = url + '?' : url = url + '&';

url = url + 'consumer_key=' + consumer_key;

// ## SoundManager2
// **Create the sound using SoundManager2**

soundManager.createSound({

// Give the sound an id and the SoundCloud stream url we created above.

id: 'track_' + track.id,
url: url,

// On play & resume add a *playing* class to the main player div.
// This will be used in the stylesheet to hide/show the play/pause buttons depending on state.

onplay: function() {

$('.player').addClass('playing');

$('.title').text(track.title);

},
onresume: function() {

$('.player').addClass('playing');

},

// On pause, remove the *playing* class from the main player div.

onpause: function() {
$('.player').removeClass('playing');
},

// When a track finished, call the Next Track function. (Declared at the bottom of this file).

onfinish: function() {
nextTrack();
}

});

});

编辑 #3

以下是与播放器配合使用的 HTML 和 CSS 标记,以便更好地说明...

HTML


            <div class='title'></div>
<a class='prev'>Previous</a>
<a class='play'>Play</a>
<a class='pause'>Pause</a>
<a class='next'>Next</a>
</div>

CSS
/* 
-------------------------------------------------------------------------
Soundcloud Player
-------------------------------------------------------------------------
*/

#sticky_header #sticky_content .player {
height: 570px;
overflow: hidden;
}

#sticky_header #sticky_content .tracks {

}

#sticky_header #sticky_content .tracks li {
cursor: pointer;
height: 40px;
text-align: left;
}

#sticky_header #sticky_content .tracks li img.album_art {
width: 40px;
height: 40px;
border-radius: 5px;
margin-right: 15px;
}

#sticky_header #sticky_content .title {

}

#sticky_header #sticky_content .prev {

}

#sticky_header #sticky_content .play {
display: block;
}

#sticky_header #sticky_content .playing .play {
display: none;
}

#sticky_header #sticky_content .pause {
display: none;
}

#sticky_header #sticky_content .playing .pause {
display: block;
}

#sticky_header #sticky_content .next {}

最佳答案

要获取图像,您可以使用以下代码:

//get element by id from your iframe
var widget = SC.Widget(document.getElementById('soundcloud_widget'));
widget.getCurrentSound(function(music){
artwork_url = music.artwork_url.replace('-large', '-t200x200');
$('#song1').css('background', 'url(\"'+artwork_url+'\") ');
});

通常,您会在末尾获得一个带有“-large”的链接,并且大小为 100x100。如果你想要其他尺寸,你必须像我一样用“.replace”改变结尾。您可以在此处找到可用尺寸列表:

https://developers.soundcloud.com/docs/api/reference#tracks
(我的尺寸 200x200 未列出但有效。也许每百像素还有更多尺寸。)

目前该代码仅适用于实际播放的歌曲。对我来说,这不是解决方案,因为我需要播放列表中的所有图像。

关于soundcloud - 从 Soundcloud API 获取artwork_url 并在自定义 SC/SM2 播放器中显示专辑封面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15624181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com