Twitch Streamer Status
How do I make an twitch streamer status?
A Twitch.tv streamer status tool built for a freeCodeCamp Zipline. Uses the Twitch API, Bootstrap, and jQuery.. What is a twitch streamer status? How do you make a twitch streamer status? This script and codes were developed by Zac Clemans on 14 January 2023, Saturday.
Twitch Streamer Status - Script Codes HTML Codes
<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>Twitch Streamer Status</title> <meta name="viewport" content="width=device-width, initial-scale=1">
<link href='https://fonts.googleapis.com/css?family=Share+Tech' rel='stylesheet' type='text/css'> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css"> <link rel='stylesheet prefetch' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css'> <link rel="stylesheet" href="css/style.css">
</head>
<body> <h1>Twitch Streamer Status</h1>
<div class="main-container container"> <ul class="streamer-status-tabs nav nav-tabs nav-justified"> <li class="active"><a class="all-tab" data-toggle="tab" href="#">All</a></li> <li><a class="online-tab" data-toggle="tab" href="#">Online</a></li> <li><a class="offline-tab" data-toggle="tab" href="#">Offline</a></li> </ul> <div id="list-container"> </div>
</div>
<div class="add-search-container container"> <div class="row add-container"> <input id="add-streamer-text" class="col-xs-8 input-text" type="text" value="Add Streamer Name"> <button id="add-streamer-btn" class="col-xs-4"><i class="glyphicon glyphicon-plus"></i></button> </div> <div class="row search-container"> <input id="search-streamer-text" class="col-xs-8 input-text" type="text" value="Search Streamer Name"> <button id="search-streamer-btn" class="col-xs-4"><i class="glyphicon glyphicon-search"></i></button> </div>
</div> <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src='http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js'></script> <script src="js/index.js"></script>
</body>
</html>
Twitch Streamer Status - Script Codes CSS Codes
body { font-family: "Share Tech";
}
h1 { text-align: center; font-weight: bold; color: rgb(100, 65, 165);
}
.main-container { margin: 75px auto 25px auto;
}
.nav-tabs > li > a { font-size: 20px; color: rgb(100, 65, 165); border: 1px solid rgb(221, 221, 221); background: rgb(255, 255, 255);
}
/*.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover { background: rgb(200, 200, 200);
}*/
#list-container { border: 1px solid rgb(221, 221, 221); border-top: none; padding-top: 20px; background: rgb(255, 255, 255);
}
.streamer-row { display: flex; align-items: center; min-height: 70px; margin: 0 0 3px 0; padding-top: 5px; padding-bottom: 5px; border-bottom: 2px solid rgb(242, 242, 242)
}
.streamer-link, .streamer-preview, .streamer-name, .streamer-game, .streamer-remove { text-align: center; font-size: 18px;
}
.streamer-preview { min-width: 60px; min-height: 60px; max-width: 60px; max-height: 60px; border: 3px solid rgb(100, 65, 165); border-radius: 50%;
}
.streamer-name { font-weight: bold;
}
.streamer-game { font-style: italic;
}
.streamer-remove { font-size: 16px; color: rgb(255, 26, 26);
}
.streamer-remove:hover { cursor: pointer;
}
.online a, .offline a { color: rgb(100, 65, 165);
}
.online a .streamer-game { color: rgb(0, 230, 76);
}
.offline a .streamer-game { color: rgb(255, 26, 26);
}
.add-search-container { text-align: center;
} .add-container, .search-container { margin-bottom: 10px; } #add-streamer-text, #search-streamer-text { width: 80%; height: 50px; color: rgb(100, 65, 165); font-size: 20px; font-weight: bold; padding-left: 10px; border: 1px solid rgb(200, 200, 200); } #add-streamer-btn, #search-streamer-btn { width: 19%; height: 50px; font-size: 18px; font-weight: bold; color: rgb(100, 65, 165); background: rgb(242, 242, 242); border: 1px solid rgb(200, 200, 200); }
Twitch Streamer Status - Script Codes JS Codes
var users = ["freecodecamp", "storbeck", "terakilobyte", "habathcx","robotcaleb","thomasballinger","noobs2ninjas","beohoff", "ogamingsc2"];
var $addStreamer = $("#add-streamer-text");
var $searchStreamer = $("#search-streamer-text");
var $addStreamerBtn = $("#add-streamer-btn");
var $searchStreamerBtn = $("#search-streamer-btn");
function getChannelData(users){ $("#list-container").empty(); users.forEach(function(user){ $.getJSON("https://api.twitch.tv/kraken/streams/" + user + "?callback=?", function(data){ var name, logo, game, status, link; var channelLink; var broadcastClass; if (data.stream == null){ if (data.error){ game = "Account closed or doesn't exist" status = ""; broadcastClass = "offline"; } else { game = "Offline"; status = ""; broadcastClass = "offline"; } } else { game = data.stream.game; status = " - " + data.stream.channel.status; broadcastClass = "online"; } console.log(user + " " + game); if (data.error){ name = user; logo = "https://partnernoc.cpanel.net/images/logo-unavailable.jpg"; link = "https://www.twitch.tv"; var streamerRow = createStreamerRow(name, logo, game, status, link, broadcastClass); $("#list-container").append(streamerRow); } else{ channelLink = data._links.channel $.getJSON(channelLink + "?callback=?", function(data){ name = data.display_name; logo = data.logo != undefined ? data.logo : "https://partnernoc.cpanel.net/images/logo-unavailable.jpg"; link = data.url; var streamerRow = createStreamerRow(name, logo, game, status, link, broadcastClass); broadcastClass == "online" ? $("#list-container").prepend(streamerRow) : $("#list-container").append(streamerRow); $(".streamer-remove").on('click', function(){ var toRemove = $(this).siblings("a").children("div").children("div").children("div").children(".streamer-name").text().toLowerCase(); var removeIndex = users.indexOf(toRemove); if (removeIndex > -1){ users.splice(removeIndex, 1); getChannelData(users); } }); }); } }); });
}
function createStreamerRow(name, logo, game, status, link, broadcastClass){ //return "<div class='" + broadcastClass + " streamer-row row'>" + "<a class='row col-xs-11 streamer-link' href='" + link + "' target='_blank'>" + "<img class='col-xs-2 streamer-preview' src='" + logo + "'/>" + "<div class='row col-xs-10'><h4 class='col-xs-12 col-sm-3 streamer-name'>" + name + "</h4>" + "<h4 class='col-xs-12 col-sm-9 streamer-game'>" + game + status + "</h4></div></a>" + "<i class='col-xs-1 streamer-remove glyphicon glyphicon-remove'></i>" + "</div>"; return "<div class='" + broadcastClass + " streamer-row row'>" + "<a class='col-xs-11 streamer-link' href='" + link + "' target='_blank'><div class='row'><div class='col-xs-12 col-sm-2'><img class='streamer-preview' src='" + logo + "'/></div><div class='col-xs-12 col-sm-10'><div class='row'><h4 class='col-xs-12 col-sm-3 streamer-name'>" + name + "</h4><h4 class='col-xs-12 col-sm-9 streamer-game'>" + game + status + "</h4></div></div></div></a><i class='col-xs-1 streamer-remove glyphicon glyphicon-remove'></i></div>";
}
$(document).ready(function(){ getChannelData(users); $addStreamerBtn.on('click', function(){ console.log($addStreamer.val()); users.push($addStreamer.val().toLowerCase()); console.log(users); getChannelData(users); $addStreamer.val("Add Streamer Name"); }); $searchStreamerBtn.on('click', function(){ var filteredUsers = users.filter(function(user){ return user.indexOf($searchStreamer.val().toLowerCase()) != -1; }); if ($searchStreamer.val() == ""){ getChannelData(users); } else{ getChannelData(filteredUsers); } $searchStreamer.val("Search Streamer Name"); }); $addStreamer.on('keyup', function(e){ if (e.which === 13){ $addStreamerBtn.click(); } }); $searchStreamer.on('keyup', function(e){ if (e.which == 13){ $searchStreamerBtn.click(); } }); $addStreamer.on('focus', function(){ $(this).select(); }); $searchStreamer.on('focus', function(){ $(this).select(); }); $(".streamer-status-tabs > li > a").on('click', function(){ if ($(this).hasClass("online-tab")){ $(".offline").hide(); $(".online").show() } else if ($(this).hasClass("offline-tab")){ $(".online").hide(); $(".offline").show(); } else{ $(".online, .offline").show(); } });
});
Developer | Zac Clemans |
Username | thalpha |
Uploaded | January 14, 2023 |
Rating | 3 |
Size | 3,948 Kb |
Views | 10,120 |
Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!
Name | Size |
D3 Map Project | 3,119 Kb |
FCC Camper Leaderboard Redux Refactor | 9,125 Kb |
Game of Life | 4,856 Kb |
Tic-Tac-Toe | 5,278 Kb |
D3 Scatterplot Project | 3,150 Kb |
Pomodoro Timer | 3,706 Kb |
JQuery Calculator | 3,124 Kb |
Recipe Box Redux Refactor | 11,597 Kb |
Hero arrow test | 1,482 Kb |
Local Weather App - Refactor | 5,264 Kb |
Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!
Name | Username | Size |
Display properties | Hamzaerbay | 1,886 Kb |
A Pen by Kenny Mark | Kennymark | 5,574 Kb |
PNotify Demo | Adittmar | 1,731 Kb |
Animate a paper plane along an SVG path, looking ahead | PotatoDie | 3,734 Kb |
Scroll using CSS | Casperovic | 2,159 Kb |
Simple, flat contact form | Zeaklous | 2,719 Kb |
Experiment | Toddmoy | 2,849 Kb |
Multiple jCarousel | Pafnuty | 2,461 Kb |
Part 19 Bootstrap split button dropdown | Venkatesha | 1,601 Kb |
Cloudy Spiral CSS animation | Hakimel | 6,587 Kb |
Surf anonymously, prevent hackers from acquiring your IP address, send anonymous email, and encrypt your Internet connection. High speed, ultra secure, and easy to use. Instant setup. Hide Your IP Now!