/
haudio.html
executable file
·166 lines (156 loc) · 5.55 KB
/
haudio.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<!--#set var="title" value="Playdar - hAudio Microformat Demo" --><!--#include virtual="../inc/header.html" -->
<h2>hAudio Demo</h2>
<!--#include virtual="demolist.html" -->
<div class="box" id="playdar_stat">Checking for local Playdar service...</div>
<p>
This demo isn't really about microformats. It uses a super-simple hAudio implementation
to represent tracks, but you could write a custom parser to find elements on any site
that represent artist/track names.
</p>
<input type="button" value="Microformats Go!" id="gomicroformats" onclick="go_microformats()" disabled="disabled" />
<ul id="tracks">
<li>
<div class="haudio">
<span class="contributor">Rick Astley</span> -
<span class="fn">Never Gonna Give You Up</span>
</div>
</li>
<li>
<div class="haudio">
<span class="contributor">Weezer</span> -
<span class="fn">Undone - The Sweater Song</span>
</div>
</li>
<li>
<div class="haudio">
<span class="contributor">Metallica</span> -
<span class="fn">Enter Sandman</span>
</div>
</li>
<li>
<div class="haudio">
<span class="contributor">The Beatles</span> -
<span class="fn">Yellow Submarine</span>
</div>
</li>
<li>
<div class="haudio">
<span class="contributor">Guns N' Roses</span> -
<span class="fn">Sweet Child O' Mine</span>
</div>
</li>
<li>
<div class="haudio">
<span class="contributor">Joe Satriani</span> -
<span class="fn">Surfing with the Alien</span>
</div>
</li>
<li>
<div class="haudio">
<span class="contributor">Massive Attack</span> -
<span class="fn">Angel</span>
</div>
</li>
<li>
<div class="haudio">
<span class="contributor">Nightwish</span> -
<span class="fn">Angels Fall First</span>
</div>
</li>
<li>
<div class="haudio">
<span class="contributor">Big Bad Sun</span> -
<span class="fn">Sweet Melissa</span>
</div>
(this one is a a Magnatune artist)
</li>
<li>
<div class="haudio">
<span class="contributor">Dream Theatre</span> -
<span class="fn">Pull Me Udner</span>
</div>
(intentionally misspelled)
</li>
<li>
<div class="haudio">
<span class="contributor">Dire Straights</span> -
<span class="fn">01 - sultans of swing</span>
</div>
(intentionally misspelled)
</li>
</ul>
<script type="text/javascript" src="/static/soundmanager2-nodebug-jsmin.js"></script>
<script type="text/javascript">
// create a custom playdar callback that will handle results for this query:
var results_handler = function (response, finalanswer) {
if (response.results.length) {
// generate tooltip with details:
var tt = "Sources: ";
for (var k = 0; k < response.results.length; ++k) {
var r = response.results[k];
tt += r.source + "/" + r.bitrate + "kbps/" + Playdar.Util.mmss(r.duration) + " ";
}
// update status element:
$(response.qid).className = 'playdar_found';
var sound = Playdar.player.register_stream(response.results[0]);
$(response.qid).innerHTML = "<a href=\"#\" title=\""+tt+"\" class=\"playbutton\">" + response.results.length + "<span style=\"display: none;\">" + response.results[0].sid + "</span></a>";
} else if (finalanswer) {
$(response.qid).className = 'playdar_notfound';
$(response.qid).innerHTML = ':(';
}
};
Playdar.setup({
receiverurl: "http://<!--#echo var="domain" -->/demos/playdarauth.html",
website: "http://<!--#echo var="domain" -->/demos/",
name: "Playdar Demos"
});
Playdar.client.register_listeners({
onStat: function (detected) {
var text;
if (detected) {
text = "<b style='color:green;'>Playdar ready</b>";
} else {
text = "<b style='color:red;'>Playdar unavailable</b><br/>You need Playdar, the music content resolver, installed and running. See <a href=\"http://<!--#echo var="domain" -->/\"><!--#echo var="domain" --></a>.";
}
$('playdar_stat').update(text);
},
onAuth: function () {
$('gomicroformats').disabled = false;
},
onResults: results_handler
});
soundManager.url = '\/static\/soundmanager2_flash9.swf';
soundManager.flashVersion = 9;
soundManager.onload = function () {
Playdar.setup_player(soundManager);
Playdar.client.init();
};
function go_microformats() {
$('tracks').observe('click', function (e) {
var el = e.element();
if (el.match('a.playbutton')) {
e.stop();
var sid = el.down('span').innerHTML;
Playdar.player.play_stream(sid);
}
});
var mkstatuselem = function (id) {
var d = document.createElement('span');
d.id = id;
d.className = 'playdar_searching';
d.innerHTML=" ";
return d;
};
var divs = $$('div.haudio');
for (var i = 0; i < divs.length; ++i) {
var artist = divs[i].select('span.contributor')[0].innerHTML.replace(/^\s+|\s+$/g, '');
var track = divs[i].select('span.fn')[0].innerHTML.replace(/^\s+|\s+$/g, '');
var uuid = Playdar.Util.generate_uuid();
// add a "searching..." status :
divs[i].appendChild(mkstatuselem(uuid));
Playdar.client.resolve(artist, "", track, uuid);
}
}
</script>
</body>
</html>