-
-
Save JDTm/9eb4e0e3559996483fe0697706f2a1f2 to your computer and use it in GitHub Desktop.
// Variables used by Scriptable. | |
// These must be at the very top of the file. Do not edit. | |
// icon-color: deep-gray; icon-glyph: dumbbell; | |
// | |
// HEAVILY "inspired" by masselmello's "rsg_group_mcfit_high5_johnreed_capacity_widget.js" | |
// See: https://gist.github.com/masselmello/6d4f4c533b98b2550ee23a7a5e6c6cff | |
// Thanks also to SS89 for the changes from McFit to FitStar: https://gist.github.com/ss89 | |
// Version: 1.0.1 | |
// ## Changelog | |
// Version 1.0.0 24.05.2021 - First Version München Giesing only! Further versions will use Parameters! | |
// Version 1.0.1 26.05.2021 - Added Paramfunction, fixed read Gymname from URL, added last update time | |
// Version 1.0.2 12.01.2023 - Changed Perlach 2 to Perlach Plaza | |
let url = 'https://www.fit-star.de/fitnessstudio/muenchen-perlach-plaza' | |
let param = args.widgetParameter | |
if (param != null && param.length > 0) { | |
url = param | |
} | |
regex = new RegExp("([^/]+)(?=[^/]*/?$)","g") | |
//const gymname = regex.exec(url) | |
gymname = regex.exec(url) | |
gymname = (gymname[0]) | |
console.log(gymname) | |
// List of all Studios: | |
/* | |
https://www.fit-star.de/studios/ | |
München-Berg am Laim /fitnessstudio/muenchen-berg-am-laim | |
München-Giesing /fitnessstudio/muenchen-giesing | |
München-Laim /fitnessstudio/muenchen-laim | |
München-Neuhausen /fitnessstudio/muenchen-neuhausen | |
München-Pasing /fitnessstudio/muenchen-pasing | |
München-Perlach Plaza /fitnessstudio/muenchen-perlach-plaza | |
München-Sendling /fitnessstudio/muenchen-sendling | |
München-Trudering /fitnessstudio/muenchen-trudering | |
Berlin /fitnessstudio/berlin-moabit | |
Berlin-Moabit /fitnessstudio/berlin-moabit | |
Erlangen /fitnessstudio/erlangen-innenstadt | |
Erlangen-Innenstadt /fitnessstudio/erlangen-innenstadt | |
Frankfurt /fitnessstudio/frankfurt-innenstadt | |
Frankfurt-Innenstadt /fitnessstudio/frankfurt-innenstadt | |
Fürth /fitnessstudio/fuerth-suedstadt | |
Fürth-Südstadt /fitnessstudio/fuerth-suedstadt | |
Leipzig /fitnessstudio/leipzig-suedvorstadt | |
Leipzig-Südvorstadt /fitnessstudio/leipzig-suedvorstadt | |
Nürnberg /fitnessstudio/nuernberg-zentrum | |
Nürnberg-Zentrum /fitnessstudio/nuernberg-zentrum | |
*/ | |
const currentGymCapacity = await fetchGymCapacity() | |
const widget = new ListWidget() | |
await createWidget() | |
if (!config.runsInWidget) { | |
await widget.presentSmall() | |
} | |
Script.setWidget(widget) | |
Script.complete() | |
//Create the widget | |
async function createWidget() { | |
const headlineText = widget.addText("🏋️ Capacity") | |
headlineText.font = Font.mediumRoundedSystemFont(19) | |
const gymNameText = widget.addText(gymname.toString()) | |
// const gymNameText = widget.addText("München Giesing") | |
gymNameText.font = Font.regularSystemFont(10) | |
widget.addSpacer(10) | |
const capacityText = widget.addText(currentGymCapacity.toString() + "%") | |
capacityText.font = Font.mediumRoundedSystemFont(50) | |
if (currentGymCapacity < 30) { | |
capacityText.textColor = new Color("#33cc33") | |
} else if (currentGymCapacity < 50){ | |
capacityText.textColor = new Color("#ff9900") | |
}else{ | |
capacityText.textColor = new Color("#ff3300") | |
} | |
widget.addSpacer(10) | |
let df = new DateFormatter() | |
df.dateFormat = 'HH:mm' | |
const lastupdate = widget.addText( | |
`Stand: ${df.string(new Date())}` | |
); | |
lastupdate.font = Font.regularSystemFont(10) | |
} | |
//Fetches the current capacity of the FitStar gym | |
async function fetchGymCapacity() { | |
const req = new Request(url) | |
const result = await req.loadString() | |
r = new RegExp("JSON.parse\\(JSON.stringify\\(\\[\\[(\\d+)","g") | |
res = r.exec(result) | |
console.log(res) | |
return parseInt(res[1]) | |
} |
How to add your Studio
Get your Studio URL here: https://www.fit-star.de/studios/
Sample: https://www.fit-star.de/fitnessstudio/berlin-moabit/
Paste it to the scriptable Parameter
Cool! Danke :)
First Version München Giesing only
The only real one anyway ;)
@JDTm I Created a quick & dirty fork of this in order to incorporate the graphs (today in yellow + same day last week in grey):
You might want to have a look at the fetchGymStats
function, which now parses the entire JSON object and makes the dict available as its return value. More convenient than extracting every parameter using a regex. https://gist.github.com/v4lli/b123fd0c766ad6a8f92a0df374c965bc
@v4lli i didn't saw your comment. Very intersting, i will fork it again, need the Studio Name + Parameter input.
The Yellow line is not working anymore?
Seems to work for me
Studio was "empty", so the yellow line was not visible.
When its still interesting, i found this:
First Version for the Fit Star Widget - without parameters - hardcoded for München Giesing.
HEAVILY "inspired" by masselmello's "rsg_group_mcfit_high5_johnreed_capacity_widget.js" https://gist.github.com/masselmello/6d4f4c533b98b2550ee23a7a5e6c6cff
To Do List: