Added contact link, commented Bandcamp related stuff
This commit is contained in:
24
README.md
24
README.md
@@ -1 +1,23 @@
|
||||
Mix Youtube videos like a pro DJ!
|
||||
#Mix Youtube videos like a pro DJ!
|
||||
|
||||
##About
|
||||
This website is a tribute to the old twoyoutubevideosandamotherfuckingcrossfader.com.
|
||||
It's a simple way to play music from Youtube and smoothly fade between tracks thanks to the crossfader.
|
||||
|
||||
##What's next?
|
||||
###Maybe one day
|
||||
- Search videos straight from the app (needs API key and calls)
|
||||
- Compatibility with Bandcamp music (not sure if it can be done without too much hacks)
|
||||
###Should be done quickly
|
||||
- Clean code (especially old P5JS)
|
||||
- Sanitize it (naming, organization, comments...)
|
||||
- Add current tracks/playlists as hashes in the URL so we can share track combinations
|
||||
|
||||
##External resources and inspiration
|
||||
###Bandcamp fetching
|
||||
- https://gist.github.com/Romern/cd7f1e9a742d27eb3ac104201f6ae87c
|
||||
- https://stackoverflow.com/questions/65085046/how-do-i-pull-album-art-thumbnail-from-bandcamp
|
||||
- https://github.com/89z/mech/blob/master/bandcamp/bandcamp.go
|
||||
- https://github.com/openwhyd/openwhyd/blob/master/app/controllers/api/bandcampExtractor.js
|
||||
- https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/extractor/bandcamp.py
|
||||
- https://github.com/masterT/bandcamp-scraper
|
||||
|
@@ -357,3 +357,8 @@ input[type=range]#crossfader::-ms-thumb {
|
||||
.footer span {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
span.spacer {
|
||||
display: inline-block;
|
||||
width: 3em;
|
||||
}
|
||||
|
12
index.html
12
index.html
@@ -64,11 +64,11 @@
|
||||
</div>
|
||||
<input class='load-button' type="button" value="Load new track or playlist">
|
||||
</div>
|
||||
<div class="hidden">
|
||||
<!-- <iframe style="border: 0; width: 480px; height: 270px;" src="https://bandcamp.com/EmbeddedPlayer/album=78256716/size=large/bgcol=ffffff/linkcol=0687f5/artwork=small/track=1064671887/transparent=true/" seamless><a href="https://clett.bandcamp.com/album/tancarville">Tancarville by Clett</a></iframe> -->
|
||||
<!-- For a single track:
|
||||
<iframe style="border: 0; width: 480px; height: 270px;" src="https://bandcamp.com/EmbeddedPlayer/album=78256716/size=large/bgcol=ffffff/linkcol=0687f5/artwork=small/track=1064671887/transparent=true/" seamless><a href="https://clett.bandcamp.com/album/tancarville">Tancarville by Clett</a></iframe>-->
|
||||
</div>
|
||||
<!-- <div class="hidden">
|
||||
<iframe style="border: 0; width: 480px; height: 270px;" src="https://bandcamp.com/EmbeddedPlayer/album=78256716/size=large/bgcol=ffffff/linkcol=0687f5/artwork=small/track=1064671887/transparent=true/" seamless><a href="https://clett.bandcamp.com/album/tancarville">Tancarville by Clett</a></iframe>
|
||||
For a single track:
|
||||
<iframe style="border: 0; width: 480px; height: 270px;" src="https://bandcamp.com/EmbeddedPlayer/album=78256716/size=large/bgcol=ffffff/linkcol=0687f5/artwork=small/track=1064671887/transparent=true/" seamless><a href="https://clett.bandcamp.com/album/tancarville">Tancarville by Clett</a></iframe>
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
<div id="crossfader-wrapper">
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
<h1>🔊 Mix like a pro youtube DJ! 🎧</h1>
|
||||
<div class="footer">
|
||||
<p><span id='shooting-stars-enable'></span> ⚒ <a href="https://tflcl.xyz">Made by tflcl.xyz</a> 🧩</p>
|
||||
<p><span id='shooting-stars-enable'></span> <span class="spacer"></span> <a href="https://tflcl.xyz" target="_blank" >⚒ Made by tflcl.xyz 🧩</a> <span class="spacer"></span> <a href="#" id="contact-me">💌 Contact me 💌</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
40
js/main.js
40
js/main.js
@@ -54,6 +54,7 @@ class player {
|
||||
let resp = check_url(url);
|
||||
|
||||
if (resp < 0) {
|
||||
alert('Wrong URL...');
|
||||
console.log('Nothing to load!');
|
||||
} else if (resp == 0) {
|
||||
let newTrackID = get_video_id(url);
|
||||
@@ -66,10 +67,13 @@ class player {
|
||||
console.log('track to load: ' + newTrackID);
|
||||
this.load(newTrackID);
|
||||
} else {
|
||||
alert('Wrong URL...');
|
||||
console.log('Nothing to load!');
|
||||
}
|
||||
} else if (resp == 1) {
|
||||
fetch_bandcamp_url(url);
|
||||
// fetch_bandcamp_url(url);
|
||||
alert('Wrong URL...');
|
||||
console.log('Nothing to load!');
|
||||
}
|
||||
|
||||
|
||||
@@ -181,12 +185,15 @@ function get_playlist_id(url) {
|
||||
let regPlaylist = /[?&]list=([^#\&\?]+)/;
|
||||
let regIndex = /[?&]index=([^#]+)/;
|
||||
let match = url.match(regPlaylist);
|
||||
console.log('match ' + match);
|
||||
let matchIndex = url.match(regIndex);
|
||||
console.log('matchindex ' + matchIndex);
|
||||
// console.log('regexp ' + match.match(/=LL([^#\&\?]*)/));
|
||||
let index = 0;
|
||||
if (matchIndex != null) {
|
||||
index = matchIndex[1] - 1;
|
||||
}
|
||||
if (match != null) {
|
||||
if (match != null && match[1].lenght > 2) { // lenght > 2 prevents from trying to load a "list=LL" (liked videos of signed-in user)
|
||||
return [match[1], index];
|
||||
} else {
|
||||
return [0,0];
|
||||
@@ -225,6 +232,12 @@ function componentToHex(c) {
|
||||
// -----------------------------------
|
||||
// BANDCAMP Tests
|
||||
// -----------------------------------
|
||||
// let surl = 'https://bandcamp.com/api/bcsearch_public_api/1/autocomplete_elastic';
|
||||
// let req = {"search_text": "techno",
|
||||
// "search_filter": "",
|
||||
// "full_page": false,
|
||||
// "fan_id": null
|
||||
// };
|
||||
// let bcURL = 'https://clett.bandcamp.com/track/placenta';
|
||||
// let request = new Request(bcURL);
|
||||
// let headers = new Headers({
|
||||
@@ -309,9 +322,9 @@ function newShootingStar() {
|
||||
newShootingStar();
|
||||
|
||||
// Enable/disable shooting stars
|
||||
let separatorSpan = document.createElement('span');
|
||||
separatorSpan.innerHTML = ' - ';
|
||||
document.getElementById('shooting-stars-enable').after(separatorSpan);
|
||||
// let separatorSpan = document.createElement('span');
|
||||
// separatorSpan.innerHTML = ' - ';
|
||||
// document.getElementById('shooting-stars-enable').after(separatorSpan);
|
||||
document.getElementById('shooting-stars-enable').innerHTML = '⭐️Disable shooting stars⭐️';
|
||||
|
||||
document.getElementById('shooting-stars-enable').addEventListener('click', () => {
|
||||
@@ -345,3 +358,20 @@ document.getElementById('shooting-stars-enable').addEventListener('click', () =>
|
||||
// processingIsOn = true;
|
||||
// }
|
||||
// });
|
||||
|
||||
/*-------------------------------------------------------
|
||||
- EMAIL OBFUSCATION - found here http://www.grall.name/posts/1/antiSpam-emailAddressObfuscation.html
|
||||
-------------------------------------------------------*/
|
||||
document.getElementById('contact-me').addEventListener('click', (e) => {
|
||||
console.log('okay');
|
||||
var y = decode("pbagnpg@gsypy.klm"); //https://rot13.com/
|
||||
e.target.setAttribute("href", "mailto:" + y);
|
||||
})
|
||||
|
||||
function decode(a) {
|
||||
// ROT13 : a Caesar cipher
|
||||
// letter -> letter' such that code(letter') = (code(letter) + 13) modulo 26
|
||||
return a.replace(/[a-zA-Z]/g, function(c){
|
||||
return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);
|
||||
})
|
||||
};
|
||||
|
Reference in New Issue
Block a user