-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
77 lines (72 loc) · 3.29 KB
/
script.js
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
/*
I used a bit of jQuery here, but I think I'm more comfortable with vanilla JavaScript since typing speed isn't really a bottleneck for me yet. It's still great for cross-browser compatability and a few things though.
*/
var channelNames = [
"freecodecamp",
"storbeck",
"terakilobyte",
"ESL_SC2",
"habathcx",
"brunofin",
"comster404",
"RobotCaleb",
"thomasballinger",
"noobs2ninjas",
"beohoff",
'pink_sparkles',
]
var channelList; //maybe or maybe not remove once done coding?
$( document ).ready(function() {
channelNames.map(function(x) {
createChannelLine(x, 'streamer-list');
});
});
var defaultAvatar = ''; /*'http://dummyimage.com/50x50/ecf0e7/5c5457.jpg&text=0x3F';*/
// info is pulled by 'username'
// this function will create the DOM elements of each line
// each line will be defined by ID = username
function createChannelLine(username, listID) {
var list = $('#' + listID);
list.append('<a id="' + username + '" class="streamer"></a>')
var channelContainer = document.getElementById(username);
// CHANNEL AVATAR - class="avatar"
$('#' + username).append('<img src="' + defaultAvatar + '"class="avatar">');
// container for NAME and GAME&DESCRIPTION
$('#' + username).append('<div class="textbox"></div>');
// CHANNEL NAME - class="username"
$('#' + username + " .textbox").append('<div class="username">' + username + '</div>');
// CURRENT GAME&DESCRIPTION - class="current"
$('#' + username + " .textbox").append('<div class="current"><br>Offline<br> </div>');
var urlRequest = 'https://api.twitch.tv/kraken'
// get account info and refresh
$.getJSON('https://api.twitch.tv/kraken/channels/' + username + '?callback=?', function (channel) {
console.log('channel', channel);
channelContainer.getElementsByClassName("avatar")[0].src = channel.logo || defaultAvatar;
var channelLink = channel.url;
channelContainer.href = channel.url;
});
// check if streaming, if so update what they are streaming
$.getJSON('https://api.twitch.tv/kraken/streams/' + username + '?callback=?', function (data) {
console.log('stream', data);
if (data.stream) {
console.log('stream should update');
console.log(channelContainer.getElementsByClassName("current"));
console.log(data);
var gameAndDescription = data.stream.game + ": " + data.stream.channel.status;
channelContainer.getElementsByClassName("current")[0].innerHTML = gameAndDescription;
channelContainer.getElementsByClassName("current")[0].parentElement.parentElement.style.borderColor = 'black';
// since channel is streaming, move this channel to top of list
var channelAtTopOfList = document.getElementsByClassName('streamer')[0];
var onlineChannel = document.getElementById(data.stream.channel.display_name);
channelContainer.parentNode.insertBefore(channelContainer, channelAtTopOfList)
// maybe also get the data.stream.channel.banner?
} else if (data.status == 422) {
console.log("DANGER WILL ROBINSON DANGER");
channelContainer.getElementsByClassName("current")[0].innerHTML = "Account has been deleted";
// since channel was deleted, move this channel to bottom of list!
var channelList = document.getElementsByClassName('streamer');
var channelAtBottomOfList = channelList[channelList.length];
channelContainer.parentNode.insertBefore(channelContainer, channelAtBottomOfList)
}
});
}