Cleanup: Move JS Files Locally
Moved remote JS files to local, (all under MIT liscense (i hope)) Added version number, plans for semantic versioning and better 'stable' releases
This commit is contained in:
parent
ff09e518b8
commit
2d70c5306e
6 changed files with 29 additions and 147 deletions
|
|
@ -1,134 +0,0 @@
|
||||||
function Pop() {
|
|
||||||
// var cssRuleFile = "/src/css/style.css"; // will be the link once this css file became available online
|
|
||||||
var cssRuleFile = "https://cookieconsent.popupsmart.com/src/css/style.css"; // will be the link once this css file became available online
|
|
||||||
|
|
||||||
let lnk = document.createElement("link");
|
|
||||||
lnk.setAttribute("rel", "stylesheet");
|
|
||||||
lnk.setAttribute("type", "text/css");
|
|
||||||
lnk.setAttribute("href", cssRuleFile);
|
|
||||||
document.getElementsByTagName("head")[0].appendChild(lnk);
|
|
||||||
|
|
||||||
let styl = "undefined";
|
|
||||||
var conDivObj;
|
|
||||||
|
|
||||||
var fadeInTime = 10; // If needed could be served as an customizable option to the user
|
|
||||||
var fadeOutTime = 10;
|
|
||||||
|
|
||||||
let cookie = {
|
|
||||||
name: "cookieconsent_status",
|
|
||||||
path: "/",
|
|
||||||
expiryDays: 365 * 24 * 60 * 60 * 5000,
|
|
||||||
};
|
|
||||||
|
|
||||||
let content = {
|
|
||||||
/// Add a field for link color
|
|
||||||
message:
|
|
||||||
"This website uses cookies to ensure you get the best experience on our website.",
|
|
||||||
btnText: "Got it!",
|
|
||||||
mode: " banner bottom",
|
|
||||||
theme: " theme-classic",
|
|
||||||
palette: " palette1",
|
|
||||||
link: "Learn more",
|
|
||||||
href: "https://www.cookiesandyou.com",
|
|
||||||
target: "_blank",
|
|
||||||
};
|
|
||||||
|
|
||||||
let createPopUp = function () {
|
|
||||||
console.log(content);
|
|
||||||
if (typeof conDivObj === "undefined") {
|
|
||||||
conDivObj = document.createElement("DIV");
|
|
||||||
conDivObj.style.opacity = 0;
|
|
||||||
conDivObj.setAttribute("id", "spopupCont");
|
|
||||||
}
|
|
||||||
conDivObj.innerHTML =
|
|
||||||
'<div id="poper" class="window ' +
|
|
||||||
content.mode +
|
|
||||||
content.theme +
|
|
||||||
content.palette +
|
|
||||||
'"><span id="msg" class="message">' +
|
|
||||||
content.message +
|
|
||||||
'<a id="plcy-lnk" class="policylink" href="' +
|
|
||||||
content.href +
|
|
||||||
'"' +
|
|
||||||
" target=" +
|
|
||||||
content.target +
|
|
||||||
">" +
|
|
||||||
content.link +
|
|
||||||
'</a></span><div id="btn" class="compliance"><a id="cookie-btn" class="spopupbtnok" >' +
|
|
||||||
content.btnText +
|
|
||||||
'</a></div><span class="credit"><a href="https://popupsmart.com" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 60 60" fill="currentColor"><path id="popupsmart" d="M56.627,12.279a22.441,22.441,0,0,0-9.549-9.074c-4.122-2.088-8.951-3.2-15.722-3.2H28.644c-6.769,0-11.6,1.112-15.72,3.2a22.425,22.425,0,0,0-9.551,9.072C1.174,16.191,0,20.783,0,27.214v5.578c0,6.434,1.173,11.024,3.373,14.934A22.412,22.412,0,0,0,12.924,56.8c4.12,2.094,8.949,3.206,15.72,3.206h2.711c6.771,0,11.6-1.112,15.72-3.206a22.427,22.427,0,0,0,9.551-9.072c2.2-3.91,3.373-8.5,3.373-14.934V27.216C60,20.78,58.827,16.19,56.627,12.279ZM30,45.006c-.237,0-.473-.005-.708-.015l-.211-.012c-.14-.008-.28-.019-.419-.031-.123-.011-.245-.022-.367-.036l-.191-.024a14.979,14.979,0,0,1-2.672-.59V44.3a14.861,14.861,0,0,1-6.294-3.955,1.406,1.406,0,1,0-2.036,1.94,17.648,17.648,0,0,0,8.33,4.944v.354a5.214,5.214,0,1,1-10.428,0V30.046c0-.013,0-.026,0-.039a15,15,0,1,1,15,15Z" transform="translate(0 -0.005)"></path></svg><span>Powered by Popupsmart</span></a></span></div>';
|
|
||||||
|
|
||||||
document.body.appendChild(conDivObj);
|
|
||||||
fadeIn(conDivObj);
|
|
||||||
|
|
||||||
document
|
|
||||||
.getElementById("cookie-btn")
|
|
||||||
.addEventListener("click", function () {
|
|
||||||
saveCookie();
|
|
||||||
fadeOut(conDivObj);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
let fadeOut = function (element) {
|
|
||||||
var op = 1;
|
|
||||||
var timer = setInterval(function () {
|
|
||||||
if (op <= 0.1) {
|
|
||||||
clearInterval(timer);
|
|
||||||
conDivObj.parentElement.removeChild(conDivObj);
|
|
||||||
}
|
|
||||||
element.style.opacity = op;
|
|
||||||
element.style.filter = "alpha(opacity=" + op * 100 + ")";
|
|
||||||
op -= op * 0.1;
|
|
||||||
}, fadeOutTime);
|
|
||||||
};
|
|
||||||
let fadeIn = function (element) {
|
|
||||||
var op = 0.1;
|
|
||||||
var timer = setInterval(function () {
|
|
||||||
if (op >= 1) {
|
|
||||||
clearInterval(timer);
|
|
||||||
}
|
|
||||||
element.style.opacity = op;
|
|
||||||
element.style.filter = "alpha(opacity=" + op * 100 + ")";
|
|
||||||
op += op * 0.1;
|
|
||||||
}, fadeInTime);
|
|
||||||
};
|
|
||||||
|
|
||||||
let checkCookie = function (key) {
|
|
||||||
var keyValue = document.cookie.match("(^|;) ?" + key + "=([^;]*)(;|$)");
|
|
||||||
return keyValue ? true : false;
|
|
||||||
};
|
|
||||||
|
|
||||||
let saveCookie = function () {
|
|
||||||
var expires = new Date();
|
|
||||||
expires.setTime(expires.getTime() + cookie.expiryDays);
|
|
||||||
document.cookie =
|
|
||||||
cookie.name +
|
|
||||||
"=" +
|
|
||||||
"ok" +
|
|
||||||
";expires=" +
|
|
||||||
expires.toUTCString() +
|
|
||||||
"path=" +
|
|
||||||
cookie.path;
|
|
||||||
};
|
|
||||||
|
|
||||||
this.init = function (param) {
|
|
||||||
if (checkCookie(cookie.name)) return;
|
|
||||||
|
|
||||||
if (typeof param === "object") {
|
|
||||||
if ("ButtonText" in param) content.btnText = param.ButtonText;
|
|
||||||
if ("Mode" in param) content.mode = " " + param.Mode;
|
|
||||||
if ("Theme" in param) content.theme = " " + param.Theme;
|
|
||||||
if ("Palette" in param) content.palette = " " + param.Palette;
|
|
||||||
if ("Message" in param) content.message = param.Message;
|
|
||||||
if ("LinkText" in param) content.link = param.LinkText;
|
|
||||||
if ("Location" in param) content.href = param.Location;
|
|
||||||
if ("Target" in param) content.target = param.Target;
|
|
||||||
if ("Time" in param)
|
|
||||||
setTimeout(function () {
|
|
||||||
createPopUp();
|
|
||||||
}, param.Time * 1000);
|
|
||||||
else createPopUp();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
window.start = new Pop();
|
|
||||||
9
Server/static/ext/sha256.min.js
vendored
Normal file
9
Server/static/ext/sha256.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
Server/static/ext/socket.io.min.js
vendored
Normal file
7
Server/static/ext/socket.io.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -235,7 +235,6 @@ h4 {
|
||||||
|
|
||||||
.versionNumber {
|
.versionNumber {
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-style: italic;
|
|
||||||
text-align: left;
|
text-align: left;
|
||||||
width: 80%;
|
width: 80%;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,14 +7,11 @@
|
||||||
<link rel="manifest" href="/static/manifest.json"/>
|
<link rel="manifest" href="/static/manifest.json"/>
|
||||||
<link rel="shortcut icon" href="/static/favicon.ico">
|
<link rel="shortcut icon" href="/static/favicon.ico">
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-sha256/0.11.0/sha256.min.js"></script>
|
<script src="/static/ext/sha256.min.js"></script>
|
||||||
<!-- above allows use of sha256() on http -->
|
<!-- above allows use of sha256() on http -->
|
||||||
<script src="https://cdn.socket.io/4.7.5/socket.io.min.js"></script>
|
<script src="/static/ext/socket.io.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body id="test-body">
|
<body id="test-body">
|
||||||
<!--Cookie Popup(does it matter if im not tracking them? i have no idea)-->
|
|
||||||
<script type="text/javascript" src="/static/ext/popper.js"></script><script> window.start.init({Palette:"palette2",Mode:"floating left",Theme:"classic",LinkText:" Learn More!",Message:"This website uses cookies to save necessary data to your device, and no tracking is performed.",Time:"0",})</script>
|
|
||||||
|
|
||||||
<div class="intro">
|
<div class="intro">
|
||||||
<h1 id="title">Jukebox Remote</h1>
|
<h1 id="title">Jukebox Remote</h1>
|
||||||
<p>Add songs to the shared playlist below!</p>
|
<p>Add songs to the shared playlist below!</p>
|
||||||
|
|
@ -115,7 +112,8 @@ changes visibility with JS-->
|
||||||
<p class="italic" >Wipe the playlist, except the currently playing song. With PartyMode enabled, a second song will be added back randomly</p>
|
<p class="italic" >Wipe the playlist, except the currently playing song. With PartyMode enabled, a second song will be added back randomly</p>
|
||||||
<button id="clear-button">Clear Playlist</button>
|
<button id="clear-button">Clear Playlist</button>
|
||||||
</div>
|
</div>
|
||||||
<p class="versionNumber">PartyJukebox is under an <a href="https://github.com/kristy-fournier/PartyJukebox/blob/main/LICENSE.md" target="_blank">AGPLV3</a> liscense. You can access the source code <a href=https://github.com/kristy-fournier/PartyJukebox target="_blank">here</a>.</p>
|
<p class="versionNumber italic">PartyJukebox is under an <a href="https://github.com/kristy-fournier/PartyJukebox/blob/main/LICENSE.md" target="_blank">AGPLV3</a> liscense. You can access the source code <a href=https://github.com/kristy-fournier/PartyJukebox target="_blank">here</a>.</p>
|
||||||
|
<p class="versionNumber">Release {{ REL_VER_NUM }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--All the buttons are down here but settings is just doing its own thing-->
|
<!--All the buttons are down here but settings is just doing its own thing-->
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,14 @@ from flask import request,render_template
|
||||||
from flask_cors import CORS
|
from flask_cors import CORS
|
||||||
from flask_socketio import SocketIO
|
from flask_socketio import SocketIO
|
||||||
import sqlite3 as sql
|
import sqlite3 as sql
|
||||||
import vlc,threading,time,random,argparse,dotenv,os,hashlib,string
|
import vlc,threading,random,argparse,dotenv,os,hashlib,string,getpass
|
||||||
|
|
||||||
|
# So i'm famously bad at following Semantic versioning, we're gonna see how this goes
|
||||||
|
REL_VER_NUM = "0.0.1"
|
||||||
|
|
||||||
# Argparse Stuff
|
# Argparse Stuff
|
||||||
parser=argparse.ArgumentParser(description="Options for the Webby Bits")
|
parser=argparse.ArgumentParser(description="Options for the Webby Bits")
|
||||||
# parser.add_argument('-p','--port',help="Port to host on, not the same as the web (client) port",default='19054')
|
parser.add_argument('-a','--admin',help="Set as True to be prompted to",default=False)
|
||||||
parser.add_argument('-a','--admin',help="Add an admin password to be used in the client. DO NOT use a password you use elsewhere",default="")
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
dotenv.load_dotenv()
|
dotenv.load_dotenv()
|
||||||
portTheUserPicked=os.getenv("SERVER_PORT")
|
portTheUserPicked=os.getenv("SERVER_PORT")
|
||||||
|
|
@ -18,8 +20,8 @@ portTheUserPicked=os.getenv("SERVER_PORT")
|
||||||
ERR_NO_ADMIN = ({"error":"no-admin","data":None},401)
|
ERR_NO_ADMIN = ({"error":"no-admin","data":None},401)
|
||||||
ERR_200 = ({"error":"OK","data":None},200)
|
ERR_200 = ({"error":"OK","data":None},200)
|
||||||
ERR_MISSING_ARGS = ({"error":"Request missing required arguments","data":None}),400
|
ERR_MISSING_ARGS = ({"error":"Request missing required arguments","data":None}),400
|
||||||
if args.admin:
|
if bool(args.admin) and args.admin.lower() != "false":
|
||||||
ADMIN_PASS = hashlib.sha256(bytes(args.admin,'utf-8')).hexdigest()
|
ADMIN_PASS = hashlib.sha256(bytes(getpass.getpass("Enter AdminPass: "),'utf-8')).hexdigest()
|
||||||
else:
|
else:
|
||||||
tempPass = ''.join(random.choices(string.ascii_letters + string.digits +"?"+"!",k=20))
|
tempPass = ''.join(random.choices(string.ascii_letters + string.digits +"?"+"!",k=20))
|
||||||
print("No adminPass was set, the auto generated one is: "+tempPass)
|
print("No adminPass was set, the auto generated one is: "+tempPass)
|
||||||
|
|
@ -142,7 +144,7 @@ def handleConnect():
|
||||||
|
|
||||||
@app.route("/",methods=['GET'])
|
@app.route("/",methods=['GET'])
|
||||||
def returnStaticFile():
|
def returnStaticFile():
|
||||||
return render_template("index.html")
|
return render_template("index.html",REL_VER_NUM=REL_VER_NUM)
|
||||||
|
|
||||||
@app.route("/controls", methods=['POST'])
|
@app.route("/controls", methods=['POST'])
|
||||||
def playerControls():
|
def playerControls():
|
||||||
|
|
@ -320,5 +322,6 @@ if __name__ == "__main__":
|
||||||
queueThread = threading.Thread(target=playQueuedSongs)
|
queueThread = threading.Thread(target=playQueuedSongs)
|
||||||
queueThread.daemon = True
|
queueThread.daemon = True
|
||||||
queueThread.start()
|
queueThread.start()
|
||||||
|
print(f"PartyJukebox v{REL_VER_NUM} running on port {portTheUserPicked}")
|
||||||
socketio.run(app=app,host='0.0.0.0', port=portTheUserPicked)
|
socketio.run(app=app,host='0.0.0.0', port=portTheUserPicked)
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue