Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
- <meta name="description" content="SmuTTY: Download and view all cards available in Smutstone!">
- <meta name="author" content="">
- <title>SmuTTY - Download all Smutstone cards</title>
- <!-- Bootstrap core CSS -->
- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
- <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
- <style>
- header {
- padding: 154px 0 100px;
- }
- @media (min-width: 992px) {
- header {
- padding: 156px 0 100px;
- }
- }
- section {
- padding: 150px 0;
- }
- .image-card {
- width: 19% !important;
- }
- </style>
- </head>
- <body id="page-top" onload="createGallery()">
- <!-- Navigation -->
- <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top" id="mainNav">
- <div class="container">
- <a class="navbar-brand js-scroll-trigger" href="#page-top">SmuTTY</a>
- <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
- <span class="navbar-toggler-icon"></span>
- </button>
- <div class="collapse navbar-collapse" id="navbarResponsive">
- <ul class="navbar-nav ml-auto">
- <li class="nav-item">
- <a class="nav-link js-scroll-trigger" href="#about">About</a>
- </li>
- <li class="nav-item">
- <a class="nav-link js-scroll-trigger" href="#cards-section">Cards</a>
- </li>
- <li class="nav-item">
- <a class="nav-link" href="#" data-toggle="modal" data-target="#downloadModal">Download</a>
- </li>
- </ul>
- </div>
- </div>
- </nav>
- <header class="bg-info text-white" id="head">
- <div class="container text-center">
- <h1>Welcome to SmuTTY</h1>
- <p class="lead">View and download every existing Smutstone card :)</p>
- </div>
- </header>
- <section id="about">
- <div class="container">
- <div class="row">
- <div class="col-lg-8 mx-auto">
- <h2>About SmuTTY</h2>
- <p class="lead">
- SmuTTY is a little tool I wrote for viewing <a href="https://smutstone.com" target="_blank">Smutstone</a> cards.
- I even implemented a downloader to download a zip file containing all those cards.
- It doesn't matter how far you are or if you are even playing the game, here you can view and download every card in every seduction stage.<br><br>
- Have fun guys ;)
- </p>
- </div>
- </div>
- </div>
- </section>
- <section id="cards-section" class="bg-light">
- <div class="container">
- <div class="row">
- <div class="col-lg-12 text-center">
- <div id="cards">
- <!-- Content filled up by js -->
- </div>
- </div>
- </div>
- </div>
- </section>
- <!-- Download Modal-->
- <div class="modal fade" id="downloadModal" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true">
- <div class="modal-dialog" role="document">
- <div class="modal-content">
- <div class="modal-header">
- <h5 class="modal-title text-secondary" id="modalLabel">Download all images?</h5>
- <button class="close" type="button" data-dismiss="modal" aria-label="Close">
- <span aria-hidden="true">×</span>
- </button>
- </div>
- <div class="modal-body text-secondary" id="modalBody">Click "Download" below to obtain a zip containing all images shown on this page.</div>
- <div class="modal-footer">
- <button class="btn btn-secondary" id="modalCancel" type="button" data-dismiss="modal">Cancel</button>
- <a class="btn btn-danger" href="#" onclick="createZip()">Download</a>
- </div>
- </div>
- </div>
- </div>
- <footer class="py-3 bg-dark">
- <div class="container">
- <p class="m-0 text-center text-white">©opyright: None ;)</p>
- </div>
- </footer>
- </body>
- <script src="https://code.jquery.com/jquery-3.4.0.min.js" integrity="sha256-BJeo0qm959uMBGb65z40ejJYGSgR7REI4+CW1fNKwOg=" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js" integrity="sha384-leGYpHE9Tc4N9OwRd98xg6YFpB9shlc/RkilpFi0ljr3QD4tFoFptZvgnnzzwG4Q" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
- <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.2.0/jszip.min.js" integrity="sha384-ggk621VQWvSvcW2M45vjOS2b4wU7zpEamUx5sNdziv/RNEbmGNsAUHPemMHEicXv" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.min.js" integrity="sha384-VgWGwiEJnh9P379lbU8DxPcfRuFkfLl0uPuL9tolOHtm2tx8Qy8d/KtvovfM0Udh" crossorigin="anonymous"></script>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip-utils/0.0.2/jszip-utils.min.js" integrity="sha384-ZbOxlAjQZ5+AoE3plRuEC6mpbZCVvqvG6E8GNxtPR3SDZYQTGThUf2AFe7Eh+yLl" crossorigin="anonymous"></script>
- <script>
- var BASE_URL = 'https://cdn.smutstone.com/s2/';
- var FILE_NAME = "smutty.zip";
- var zip = new JSZip();
- var zipContent = null;
- var imageData = [];
- var downloadCount = 0;
- var createdZip = false;
- var workingOnZip = false;
- var modalModified = false;
- //Creates function used in conf.js
- //Modified to extract an array containing the image data
- function webpackJsonp(x0, data, x1)
- {
- var e = {};
- data[117](e, null, function(x) { return {_tr:function (x) { return x }}; });
- e.exports.forEach(function (item, index) {
- //Check if card with this name already exists (duplicate)
- for(var i = 0; i<imageData.length; i++) {
- if(imageData[i].name === item.name)
- return;
- }
- var dict = {};
- dict.cardId = item.cardId;
- dict.name = item.name;
- //Check if element exists
- var exists = true;
- if(typeof item === 'undefined' || typeof item.big === 'undefined' || typeof item .big._2x === 'undefined') {
- exists = false;
- return;
- }
- dict.pictureURLs = [BASE_URL + item.big._2x];
- item.evolution.stages.forEach(function (subitem, subindex)
- {
- if(typeof subitem === 'undefined' || typeof subitem.changes === 'undefined' || typeof subitem.changes.big === 'undefined' || typeof subitem.changes.big._2x === 'undefined') {
- exists = false;
- return;
- }
- dict.pictureURLs.push(BASE_URL + subitem.changes.big._2x);
- });
- if(!exists)
- return;
- imageData.push(dict)
- })
- }
- function addImageToZip(url, filename, zip)
- {
- var dlProgress = document.getElementById('dlProgress');
- JSZipUtils.getBinaryContent(url, function (err, data) {
- if(err) {
- alert("Problem happened when download img: " + url);
- console.error("Problem happened when download img: "+ url);
- } else {
- zip.file(filename, data, {binary:true});
- console.log(url + " downloaded!");
- downloadCount += 1;
- //1/5 * 100 = 25
- dlProgress.style.cssText = "width: "+downloadCount / imageData.length * 25+"%";
- if(downloadCount === imageData.length * 5)
- downloadZip();
- }
- });
- }
- function resetModal() {
- $("#downloadModal").modal("hide");
- document.getElementById("modalLabel").innerText = "Download all images?";
- document.getElementById("modalBody").innerHTML = "Click \"Download\" below to obtain a zip containing all images shown on this page.";
- document.getElementById("modalCancel").removeAttribute("disabled");
- modalModified = false;
- }
- function downloadZip()
- {
- if(downloadCount < imageData.length * 5)
- alert("Download not finished yet!");
- else {
- if (zipContent == null) {
- if (!workingOnZip) {
- workingOnZip = true;
- zip.generateAsync({type: "blob"}).then(function (content) {
- zipContent = content;
- saveAs(zipContent, FILE_NAME);
- resetModal();
- });
- }
- }
- else {
- saveAs(zipContent, FILE_NAME);
- resetModal();
- }
- }
- }
- function createZip()
- {
- if(!modalModified) {
- document.getElementById("modalLabel").innerText = "Downloading...";
- document.getElementById("modalBody").innerHTML = "<div class=\"progress mb-1\">" +
- "<div class=\"progress-bar progress-bar-striped progress-bar-animated bg-danger\" id='dlProgress' role=\"progressbar\" " +
- "aria-valuenow=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div></div>" +
- "This may take some time. Please be patient...";
- document.getElementById("modalCancel").setAttribute("disabled", "true");
- modalModified = true;
- }
- if(createdZip)
- downloadZip();
- else {
- createdZip = true;
- imageData.forEach(function (item, index) {
- var card = zip.folder(item.cardId + " - " + item.name);
- console.log("Downloading " + item.name + " (" + item.cardId + ")...");
- item.pictureURLs.forEach(function (item, index) {
- addImageToZip(item, index + 1 + ".jpg", card);
- });
- });
- }
- }
- function createGallery()
- {
- var c = document.getElementById("cards");
- imageData.forEach(function (item, index) {
- var div = document.createElement("div");
- var head = document.createElement("h3");
- var text = document.createTextNode(item.name + ": ");
- head.classList.add("text-left", "text-secondary", "mt-4");
- head.appendChild(text);
- div.append(head);
- item.pictureURLs.forEach(function (subitem, subindex) {
- var img = document.createElement("img");
- var a = document.createElement("a");
- a.href = subitem;
- a.target="_blank";
- img.src=subitem;
- img.alt=subindex + 1 + "★";
- img.classList.add("border", "border-dark", "rounded", "image-card", "mx-1");
- a.append(img);
- div.append(a);
- });
- c.appendChild(div);
- });
- }
- //Template Javascript (for the animations...)
- (function($) {
- "use strict"; // Start of use strict
- // Smooth scrolling using jQuery easing
- $('a.js-scroll-trigger[href*="#"]:not([href="#"])').click(function() {
- if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
- var target = $(this.hash);
- target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
- if (target.length) {
- $('html, body').animate({
- scrollTop: (target.offset().top - 70)
- }, 1000, "easeInOutExpo");
- return false;
- }
- }
- });
- // Closes responsive menu when a scroll trigger link is clicked
- $('.js-scroll-trigger').click(function() {
- $('.navbar-collapse').collapse('hide');
- });
- // Activate scrollspy to add active class to navbar items on scroll
- $('body').scrollspy({
- target: '#mainNav',
- offset: 80
- });
- // Collapse Navbar
- var navbarCollapse = function() {
- if ($("#mainNav").offset().top > 100) {
- $("#mainNav").addClass("navbar-shrink");
- } else {
- $("#mainNav").removeClass("navbar-shrink");
- }
- };
- // Collapse now if page is not at top
- navbarCollapse();
- // Collapse the navbar when page is scrolled
- $(window).scroll(navbarCollapse);
- })(jQuery);
- </script>
- <script src="https://cdn.smutstone.com/s_nut/328439c1.conf.js"></script>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement