├── .babelrc ├── .eslintignore ├── .eslintrc ├── .gitignore ├── .nojekyll ├── README.md ├── Terms Of Service.md ├── assets ├── BenguiatProITC-BoldCond.eot ├── BenguiatProITC-BoldCond.ttf ├── BenguiatProITC-BoldCond.woff ├── ITC-Avant-Garde-Gothic.ttf ├── KasselLabsLogo.png ├── bg.jpg ├── bitcoin.svg ├── grain.png ├── images │ ├── favicon-16x16.png │ └── favicon-32x32.png ├── music.mp3 ├── swic.jpg └── wic.jpg ├── config ├── default.json └── production.json ├── deployGithub.sh ├── donateButtons.html ├── index.html ├── package-lock.json ├── package.json ├── preview.png ├── scripts ├── bitcoinEther.js ├── components │ └── .gitkeep ├── downloadVideo.js ├── errorFunction.js ├── index.js ├── makeTheStrangerIntro.jsx ├── strangerScript.js └── urls.js ├── styles ├── _strangerintro.scss └── index.scss ├── termsOfService.html ├── webpack.config.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-0", "react"] 3 | } 4 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "indent": [ 4 | 2, 5 | 2, 6 | {"VariableDeclarator": { "var": 2, "let": 2, "const": 3}} 7 | ], 8 | "linebreak-style": [2, "unix"], 9 | "semi": [2, "always"], 10 | "comma-dangle": [2, "always-multiline"] 11 | }, 12 | "env": { 13 | "es6": true, 14 | "browser": true 15 | }, 16 | "extends": "eslint:recommended", 17 | "ecmaFeatures": { 18 | modules: true, 19 | "experimentalObjectRestSpread": true 20 | }, 21 | "globals": { 22 | "require": false, 23 | "module": true, 24 | "Environment": false, 25 | "__dirname": false, 26 | "process": false 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # vim temporary files 2 | *.sw* 3 | 4 | # Dependencies 5 | node_modules/ 6 | bower_components/ 7 | 8 | # Built files 9 | dist/ 10 | /.project 11 | *.log 12 | 13 | .DS_Store -------------------------------------------------------------------------------- /.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/.nojekyll -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Stranger Things Intro Creator [DEPRECATED] 2 | 3 | This repo is deprecated 4 | 5 |  6 | 7 | Go to website: [https://strangerthingsintrocreator.kassellabs.io/](https://strangerthingsintrocreator.kassellabs.io/) 8 | -------------------------------------------------------------------------------- /Terms Of Service.md: -------------------------------------------------------------------------------- 1 | Last updated: February 25, 2017. 2 | 3 | These Terms of Service ("Terms", "Terms of Service") refers to the Stranger Things Intro Creator website (brorlandi.github.io/StrangerThingsIntroCreator) (the "Service") operated by Kassel Labs ("us", "we", or "our"). 4 | Your access to and use of the Service is conditioned on your acceptance of and compliance with these Terms. These Terms apply to all visitors, users and others who access or use the Service. 5 | 6 | #### About the Service 7 | 8 | This website is not related or to Netflix. The music and the Stranger Things logo are copyrights of Netflix. This website is developed by fans only. 9 | 10 | We are not responsible for the content inserted in our service. This service should not be used to publish content to suggest violence, discrimination, illegal acts, transgression and hatred. 11 | You must not defame, stalk, bully, abuse, harass, threaten, impersonate or intimidate people or entities via the Service. 12 | The content published in the service is registered by a unique key available in the URL. The content of this service is publicly available to anyone who knows the URL. You can not prevent others from accessing your content if it was published to the service. If you want your content removed from the site, please contact us via email. We don't share users' personal information with anyone. 13 | 14 | #### About Download Videos 15 | 16 | The videos are rendered on a 1920 x 1080 pixel resolution, thus, we do not guarantee that the rendered videos are identical to the creations in this service. The quality may differ depending on the device on which the content is displayed. You can see a sample of the video rendered here: 17 | [https://youtu.be/Q0eEXKyA540](https://youtu.be/Q0eEXKyA540) 18 | 19 | The videos are rendered in our servers and takes 50 minutes on average to be rendered. To deliver this feature for free we have a queue of videos to be rendered. You will be prompted to put your email in. Your email will be only used to send a link to download the video when it’s ready. We don’t send spam and we don’t share your email address with third parties. 20 | 21 | We are not responsible for any errors (typos, misspellings) made when rendering the video, the rendered video is reproduced exactly how it was received. Any fix(es) requested in a rendered text will be subject to our current availability. 22 | 23 | We cannot ensure the video will be properly delivered when it was caused by any issues that are beyond the domains of Stranger Things Intro Creator (misspelled email, user inbox is full, inactive user account, the email service sent the video notification e-mail to spam). 24 | 25 | The videos have rendered content, logo and music, copyrighted to Netflix and its reproduction may depend on the terms of service of third party applications. We are not responsible for the reproduction of videos on third party services. The reproduction of the videos for commercial use is subject to the copyrights of Netflix. 26 | 27 | Sharing the rendered video on services like Facebook and YouTube may violate copyright, which is not allowed by such services. In those cases it may be better to use the shareable link to Stranger Things Intro Creator’s Web Intro. 28 | 29 | #### About Donations 30 | 31 | Donations are used to maintain the video rendering servers up. 32 | 33 | As a reward for donors who donate at least 7 US Dollars we will provide the video before the entire queue. The donation must be in the exact value or greater than 7 US Dollars. Multiple donations that add up to the value of 7 US Dollars will not be accepted to get the video earlier. 34 | 35 | You must use the same email you have used in your PayPal account used to donate to ask for the video rendering. We are not responsible for misspelled emails, user inbox is full, inactivate user account and spam filters. 36 | 37 | Donators will generally get their video within 1-4 hours, but the time it takes for a given video to be ready may vary on how many video requests were made recently. You should receive a confirmation email about your donation and your video being processed, if not, contact us. 38 | 39 | Only donations made via the website buttons will be processed. If you make a donation directly to our PayPal account it will not be processed automatically, please contact us if it's the case. 40 | 41 | If you want to donate a greater value to get more videos, you can, contact us for further details. 42 | 43 | We use PayPal to receive donations and it’s only way we accept donations at the time. 44 | 45 | #### About third parties 46 | 47 | Our Service may contain links to third-party web sites or services that are not owned or controlled by Stranger Things Intro Creator. Stranger Things Intro Creator has no control over, and assumes no responsibility for: the content, privacy policies, or practices of any third party web sites or services. You further acknowledge and agree that Stranger Things Intro Creator shall not be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with use of or reliance on any such content, goods or services available on or through any such web sites or services. 48 | 49 | We reserve the right, at our sole discretion, to modify or replace these Terms at any time. 50 | 51 | If you have any questions about these Terms, please contact us via kassellabs@gmail.com. 52 | -------------------------------------------------------------------------------- /assets/BenguiatProITC-BoldCond.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/assets/BenguiatProITC-BoldCond.eot -------------------------------------------------------------------------------- /assets/BenguiatProITC-BoldCond.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/assets/BenguiatProITC-BoldCond.ttf -------------------------------------------------------------------------------- /assets/BenguiatProITC-BoldCond.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/assets/BenguiatProITC-BoldCond.woff -------------------------------------------------------------------------------- /assets/ITC-Avant-Garde-Gothic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/assets/ITC-Avant-Garde-Gothic.ttf -------------------------------------------------------------------------------- /assets/KasselLabsLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/assets/KasselLabsLogo.png -------------------------------------------------------------------------------- /assets/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/assets/bg.jpg -------------------------------------------------------------------------------- /assets/bitcoin.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/grain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/assets/grain.png -------------------------------------------------------------------------------- /assets/images/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/assets/images/favicon-16x16.png -------------------------------------------------------------------------------- /assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /assets/music.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/assets/music.mp3 -------------------------------------------------------------------------------- /assets/swic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/assets/swic.jpg -------------------------------------------------------------------------------- /assets/wic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/assets/wic.jpg -------------------------------------------------------------------------------- /config/default.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /config/production.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /deployGithub.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [[ $# -eq 0 ]] ; then 3 | echo 'Use: ./deployGithub.sh "Commit message"' 4 | exit 1 5 | fi 6 | 7 | git checkout master 8 | npm run build 9 | git checkout gh-pages 10 | git pull 11 | mv dist/* ./ 12 | mv dist/.* ./ 13 | git add . 14 | git commit -m "$1" 15 | git push 16 | git checkout master 17 | -------------------------------------------------------------------------------- /donateButtons.html: -------------------------------------------------------------------------------- 1 |
You can donate Bitcoins and Ether to the following Wallets. Please send us an email to tell us about your donation.
8 |Bitcoin: 1KAYmrrYYobx2k6p5zxkziGeggbXqPdYJ6
9 |Ether: 0xe5c26Be15597B3b03519f2517592AE2dBdFf4E63
10 | `, 11 | allowOutsideClick: false, 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /scripts/components/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrOrlandi/StrangerThingsIntroCreator/b8d5fb8836ab423554120893b27b4b0427bbb8fe/scripts/components/.gitkeep -------------------------------------------------------------------------------- /scripts/downloadVideo.js: -------------------------------------------------------------------------------- 1 | const $ = require('jquery'); 2 | 3 | import swal from 'sweetalert2'; 4 | import ajaxErrorFunction from 'errorFunction'; 5 | 6 | const calcTime = function(queue){ 7 | let minutes = (queue+1)*50; 8 | let hours = Math.floor(minutes/60); 9 | let days = Math.floor(hours/24); 10 | let time = ""; 11 | if(days > 0){ 12 | time += days + " days"; 13 | } 14 | if(days < 3){ 15 | hours = hours%24; 16 | minutes = minutes%60; 17 | if(hours > 0){ 18 | time += " " +hours + " hours"; 19 | } 20 | if(minutes > 0){ 21 | time += " " +minutes + " minutes"; 22 | } 23 | } 24 | return time; 25 | }; 26 | 27 | const requestVideo = function(donate,key, email){ 28 | if(email === false) return false; 29 | 30 | var url = "https://upsidedown.nihey.org/request?code="+ key +"&email=" + email; 31 | $.ajax({ 32 | url: url, 33 | type: 'GET', 34 | crossDomain: true, 35 | success: function(data){ 36 | var queue = data.queue; 37 | swal({ 38 | title: ''+
40 | 'Your video has been queued. Your current position on the queue is '+
41 | (queue+1) + ', which will take up to '+ calcTime(queue) +'.
'+
42 | 'The link to download the video will be sent to the e-mail:
'+
43 | '
But as you donated, we will bump you up on the queue.'+ 48 | ' Thank you so much for supporting us! You should receive the confirmation email within a few minutes.'+ 49 | '
' 50 | ) : 51 | '' 52 | ) + 53 | 'By using this website you are agreeing to our Terms of Service.
' 54 | }); 55 | }, 56 | error: ajaxErrorFunction('Error when request video download.') 57 | }); 58 | }; 59 | 60 | export default function downloadVideo(openingKey){ 61 | // check if download is available: 62 | $.ajax({ 63 | url: "https://upsidedown.nihey.org/status?code="+openingKey, 64 | crossDomain: true, 65 | success: (data) => { 66 | var queue = data.queue; 67 | 68 | if (data.status === 'not_queued') { 69 | queue = data.queueSize; 70 | } 71 | 72 | // video already rendered 73 | if(data.url){ 74 | swal({ 75 | title: ''+
77 | 'This video has already been generated, click the link below to download.
'+
78 | ''+data.url+'
'+ 86 | 'Type your email below and you will receive a message with the URL to download your video when it\'s ready'+ 87 | '
', 88 | input: 'email', 89 | showCancelButton: true, 90 | inputPlaceholder: "Your e-mail...", 91 | showLoaderOnConfirm: true, 92 | }; 93 | 94 | swal({ 95 | title: ''+
97 | 'We want to provide videos for free, but we have to use a server to render it, which costs money.
'+
98 | 'There are '+(queue+1)+' videos in front of you and it will take '+calcTime(queue)+' to be processed.
'+
99 | 'Can\'t wait for it? Donate at least $7 Dollars, you will jump the queue and your video will be ready in few hours.
'+
100 | 'The video will be rendered in Full HD quality and MP4 file. To see a sample video click '+
101 | 'here.
'+
102 | 'Attention! Make sure there are no typos in your text, there will be no correction after the video rendering.
'+
103 | 'By using this website you are agreeing to our Terms of Service.'+
104 | '
', 113 | ' Please, use the same email from you PayPal account.', 114 | " You'll be able to add as many e-mails as you want to", 115 | ' this video without having to donate again. Just add', 116 | ' your other emails after the first one, without donating.', 117 | ' Attention! Make sure there are no typos in your text, you will need to request a new video download and donate again.', 118 | ' By using this website you are agreeing to our Terms of Service.', 119 | '
' 120 | ].join(''); 121 | 122 | generateAlert.title = 'Thanks for your support! Remember, at least $7 Dollars for the rendered video.
Click on the button below and proceed to the donation via PayPal.
' 124 | +''+generateAlert.html+donateText; 125 | 126 | swal(generateAlert).then(requestVideo.bind(window, true, openingKey)); 127 | },(_cancel_) => { 128 | swal(generateAlert).then(requestVideo.bind(window, false, openingKey)); 129 | }); 130 | }, 131 | error: ajaxErrorFunction('Error when request video information to download.') 132 | }); 133 | } 134 | -------------------------------------------------------------------------------- /scripts/errorFunction.js: -------------------------------------------------------------------------------- 1 | import swal from 'sweetalert2'; 2 | 3 | export default function ajaxErrorFunction(bodyMessage){ 4 | var body = encodeURI("Hi, the website didn't work as expected. \n\n"+bodyMessage); 5 | return function (){ 6 | swal({ 7 | title: 'Something went wrong! Sorry about that! Please try again, if this error repeats please contact us: : '+
9 | '
kassellabs@gmail.com
'+ 201 | 'You have changed some of the text inputs. You need to play the new intro to save and request a download.
', 202 | showCancelButton: true, 203 | confirmButtonText: "Ok, play it!", 204 | confirmButtonColor: "#807300", 205 | animation: "slide-from-top" 206 | }).then(() => { 207 | this.submitStranger(e); 208 | },() => { 209 | console.log("cancel"); 210 | }); 211 | return; 212 | } 213 | 214 | downloadVideo(openingKey); 215 | } 216 | 217 | handleInputChange = (e)=>{ 218 | var opening = this.state.opening; 219 | opening[e.target.name] = e.target.value; 220 | this.setState(opening); 221 | } 222 | 223 | componentDidUpdate(prevProps, prevState){ 224 | if(this.state.opening.logo !== prevState.opening.logo && this.refs.logo){ 225 | this.refs.logo.value = this.state.opening.logo; 226 | } 227 | } 228 | 229 | shouldComponentUpdate(_, nextState) { 230 | if(nextState.shouldAlertAboutSpace !== this.state.shouldAlertAboutSpace) { 231 | return false; 232 | } 233 | return true; 234 | } 235 | 236 | _onKeyUpLogo = (event) => { 237 | if(' ' !== event.key) { 238 | return; 239 | } 240 | 241 | this.refs.logo.value = this.refs.logo.value.replace(' ',''); 242 | 243 | if(this.state.shouldAlertAboutSpace) { 244 | swal("Sorry!", "White space is not allowed in the title! For a better animation try to use only one word per line.", "warning"); 245 | this.setState({ 246 | shouldAlertAboutSpace: false, 247 | }) 248 | } 249 | } 250 | 251 | render(){ 252 | const recommendChrome = 'We recommend using Google Chrome for the best experience.'; 253 | const isNotChrome = !browser.isBrowser('chrome'); 254 | 255 | var notice; 256 | if(this.state.canPlay == 'can'){ 257 | notice =
258 | The following animation is performance intensive, and will play audio. If you
259 | experience any issues, try sizing down your browser and refreshing.
260 | {isNotChrome && recommendChrome}
261 |
264 | Unfortunately this website uses many features only found in the latest
265 | version of Google Chrome. You can still run this, but it may not look
266 | as intended. Please try running it in Chrome for the best experience.
267 |
268 |
269 | Download Chrome
270 |
271 |
274 | Unfortunately your browser doesn't support this website. Please download
275 | Google Chrome, and try running it again.
276 |
277 |
278 | Download Chrome
279 |
280 |