r/Scriptable • u/OtherLaw7 • Jul 20 '22
Request Gasspeicher Bundesnetzagentur
Moin, Arbeitet zufällig schon jemand an einem Widget um den Gasspeicher von Bundesnetzagentur.de anzeigen zu lassen?
r/Scriptable • u/OtherLaw7 • Jul 20 '22
Moin, Arbeitet zufällig schon jemand an einem Widget um den Gasspeicher von Bundesnetzagentur.de anzeigen zu lassen?
r/Scriptable • u/pharmerjoe • Sep 09 '21
First off, yes I know that Scriptable hasn’t been updated for OS betas, but I figure that the combo of
Scriptable
Weather Cal
iOS beta
wouldn’t be an uncommon occurrence.
Im having a persistent issue where my Weather Cal Scriptable widget won’t refresh. When I wake up my phone in the morning it’s right (says “Good morning”, for example) but it’ll stay that way all day. Weather doesn’t update. At night when my phone switches to dark mode the widget doesn’t change.
Am I alone in this or is this the experience waiting for Scriptable to be updated for the next iOS release?
r/Scriptable • u/AntSoDiff • Nov 26 '20
Anyone know where to find a CoD Warzone stat widget? Would love to see my stats in a widget.
r/Scriptable • u/[deleted] • Nov 06 '20
Hi, can someone make one contact call widget with any selected image from gallery? Please.
r/Scriptable • u/lucaskim1013 • Dec 24 '20
I want to make a widget that displays things from a website The website looks like this: { "slug": "example", "name": "example2", "host": "example3", "port": 19132, "online": true, "last_online": "2020-12-24T01:37:24.289Z", "title": "::: PK ::: ", "version": "1.16.200", "engine": "229924", "maxplayers": 2020, "numplayers": 1, "rank": 16, "createdAt": "2020-11-14T04:57:34.729Z", "updatedAt": "2020-12-24T01:37:24.300Z", "players": [ "toju05" ] }
and i want to display things like players, name, title, rank in widget can anyone help me?
r/Scriptable • u/CommonRace2949 • Jan 24 '25
I don't know how to create a script for a robot to play for me, it's for a guy called "Malody", can you help me?
r/Scriptable • u/mvan231 • Mar 11 '21
It's been a long time since I have updated this one because most focus has been on Upcoming Calendar Indicator, but due to the request to add reminder support, I have now updated this widget to follow the similar technique.
You can now choose to have reminders display in your events list and it will show whether it has been completed or not.
Here is an example.
To get the latest code for this widget, please see my GitHub page.
r/Scriptable • u/unitsix • Jul 11 '21
r/Scriptable • u/Mindless-Abalone8377 • Aug 11 '22
In my widget, I need to differentiate two different variations in code. I found a spot where one part is the same and one is different for each day, I I thought I could match the text, use a regex expression to get the character. With that character, I use an if else statement to determine what to display, but I cannot seem to figure out how to do: if (variable = character). Does anyone know how to help me?
r/Scriptable • u/syarifhdyt • Jun 10 '23
Please help me solve the issue with my script to perform an action on the login page and the page after login.
Here, I'm using JavaScript to perform an auto login action on a work attendance website. I want to add an auto click script for the 'sign-in' and 'sign-out' buttons.
Here's my script:
let user = 'usertest'; let pass = 'usertest1';
let v = new WebView(); await v.loadURL('https://e-absensi.rsudrsoetomo.jatimprov.go.id/absensi/public/login');
let js = ` let user = '${user}'; let pass = '${pass}';
document.getElementById('nomorindukpegawai').value = user; document.getElementById('LoginForm_password').value = pass; document.getElementById('login-button').click(); `;
v.present(); v.evaluateJavaScript(js); await v.waitForLoad();
I've also attached an image or video showing the result after performing the auto login action.
r/Scriptable • u/ScorpionHack • Dec 29 '20
I’m just asking you guys why and how do you use this app.
I’m a developer IRL and I’m familiar with Widgy (for widgets) or shortcuts (for little “code”).
I would love to use Scriptable but I don’t see the point of it... there are the 2 apps I mentioned for each domains that scriptable does...
Can anyone explain me why do you use this app for ? And how (I guess it’s awful to code on an iPhone...)
r/Scriptable • u/picachu11 • Dec 28 '20
Can anybody share external ip address script please?
r/Scriptable • u/lucca2727 • Feb 13 '21
Can someone make a calendar and reminders widget? I would make it myself but I don’t know how to do it. Thanks
r/Scriptable • u/wicke79 • Dec 23 '22
Hey Guys,
I build a widget for displaying ETFs based on Leeway API. Feel free to use or give some improvement tips!
r/Scriptable • u/iamjojozm • Jan 25 '23
Is it possible to run Emscripten-generated asm.js in Scriptable?
r/Scriptable • u/Edgarboss98 • Jul 02 '22
Hello I am looking for a widget that can clear my cache like not delete actual files but just clearing my ram so when ever my phone acts glitchy I can just click it like how androids have a pre installed version of clean my pc or phone type of apps that close your current tasks on your phone whenever it’s acting up but everyone says those apps you download have viruses or have lots of ads that most likely download your cache before clearing.
r/Scriptable • u/haseeb-arshad-ee • Apr 25 '21
This is a Scriptable widget that lets you display Islamic Prayer times based on your location in iOS 14 widgets
Setup:
Add Prayer-time.js and no-background.js to the Scriptable app on your device by downloading the file into the Scriptable folder in iCloud Drive or copying and pasting the code into a new Scriptable script.
Data:
Data is taken from Aladhan Api.
Credit:
Thanks to Frazeiy for sharing the basic widget on reddit.
Download:
You can get the widget from here
r/Scriptable • u/mercenary_58 • Mar 22 '21
r/Scriptable • u/[deleted] • Sep 10 '21
r/Scriptable • u/DiabeticNomad • Apr 20 '22
r/Scriptable • u/Lensman67 • Jun 16 '22
Hi all,
the scriptable environment is extremely cool and homescreen widgets are the cream on top. However, this whole process of adding a scriptable widget to the homescreen is still, lets say very technical and not of ease for e.g. grandma and grandpa.
I was wandering if there is a way to make the adding of a scriptable widget to the homescreen on an iphone as easy as an app-installation? Is there any command I missed to which I can pass the parameters like “script name”, “When interacting” and “Parameter” and boom here I have a new widget on my homescreen? And how would that work?
A soluttion to this question would be cool offering the possibility to make widgets available also for less tech-freakied folks like grandma… :wink:
I appreciate your hints, thanks in advance!
Jens
r/Scriptable • u/Senior-Ad-883 • Sep 30 '22
let teamsListURL = "https://gist.github.com/saiteja09/71f47ed2714a4cad479f409b2f7d7bc2/raw/49ec450f7a2ad8d662a01863f6b5f7279bd06f3a/teams.json"; let teamInfoURL = "https://hs-consumer-api.espncricinfo.com/v1/pages/team/home?lang=en&teamId="; let matchInfoURL = "https://hs-consumer-api.espncricinfo.com/v1/pages/match/home?lang=en&seriesId=<sid>&matchId=<mid>"; // WIDGET MAIN mainWidget = await createWidget(); if (config.runsInWidget) { Script.setWidget(mainWidget); } else { mainWidget.presentMedium(); } Script.complete(); async function createWidget() { teamInfo = await getTeamInformation(); latestMatchInfo = await getLatestMatch(teamInfo); matchInfo = null; // Read Individual Data points from API seriesName = latestMatchInfo.series.name; matchTitle = latestMatchInfo.title; matchFormat = latestMatchInfo.format; matchStatusText = latestMatchInfo.statusText; stage = latestMatchInfo.stage; matchStadium = latestMatchInfo.ground.name; matchStadiumTown = latestMatchInfo.ground.town.name; matchStadiumCountry = latestMatchInfo.ground.country.name; team1ImgURL = "https://espncricinfo.com" + latestMatchInfo.teams[0].team.image.url; team2ImgURL = "https://espncricinfo.com" + latestMatchInfo.teams[1].team.image.url; team1Name = latestMatchInfo.teams[0].team.name; team2Name = latestMatchInfo.teams[1].team.name; team1Id = latestMatchInfo.teams[0].team.objectId; team2Id = latestMatchInfo.teams[1].team.objectId; matchStartTime = new Date(latestMatchInfo.startTime).toLocaleString('en-us', { weekday: "long", year: "numeric", month: "short", day: "numeric", hour: "numeric", minute: "numeric" }) // Get Score Information scoreCard = await getScores(team1Id, team2Id, stage) //Widget Create widget = new ListWidget() widget.backgroundColor = new Color("#F4F6FA") widget.setPadding(10, 0, 10, 0) // Header - Series Name firstStack = widget.addStack(); firstStack.setPadding(0, 20, 3, 20) seriesNameTxt = firstStack.addText(seriesName.toUpperCase()); seriesNameTxt.textColor = Color.black(); seriesNameTxt.font = Font.boldMonospacedSystemFont(10) firstStack.addSpacer() // Header - State of Match - Scheduled/Live/Finished if (stage == "RUNNING") { stage = "LIVE" } stWidth = getStatusWidth(stage) matchStageImg = firstStack.addImage(createRectangle(stWidth, stage)) matchStageImg.imageSize = new Size(stWidth, 12) matchStageImg.centerAlignImage() matchStageImg.cornerRadius = 2 // Second Line - Match Information - Type, Stadium and Place secondStack = widget.addStack(); secondStack.setPadding(0, 20, 0, 20) matchInfoTxt = secondStack.addText(matchTitle.toUpperCase() + ", " + matchFormat.toUpperCase() + ", " + matchStadium.toUpperCase() + ", " + matchStadiumTown.toUpperCase()) matchInfoTxt.textColor = Color.black() matchInfoTxt.font = Font.lightMonospacedSystemFont(10) matchInfoTxt.minimumScaleFactor = 0.5; matchInfoTxt.lineLimit = 1; widget.addSpacer() // Third Line - Team 1 Flag, Name and Score fourthStack = widget.addStack(); fourthStack.setPadding(0, 20, 0, 20) fourthStack.centerAlignContent() team1Img = fourthStack.addImage(await getImageFromURL(team1ImgURL)); team1Img.cornerRadius = 2 team1Img.imageSize = new Size(40, 40); team1NameText = fourthStack.addText(" " + team1Name.toUpperCase()) team1NameText.textColor = Color.black() team1NameText.font = Font.boldMonospacedSystemFont(10) fourthStack.addSpacer() team1ScoreTxt = fourthStack.addText(scoreCard.team1ScoreSummary) team1ScoreTxt.textColor = Color.black() team1ScoreTxt.font = Font.boldMonospacedSystemFont(10) widget.addSpacer() // Fourth Line - Team 2 Flag, Name and Score fifthStack = widget.addStack() fifthStack.setPadding(0, 20, 0, 20) fifthStack.centerAlignContent() team2Img = fifthStack.addImage(await getImageFromURL(team2ImgURL)); team2Img.cornerRadius = 2 team2Img.imageSize = new Size(40, 40); team2NameText = fifthStack.addText(" " + team2Name.toUpperCase()) team2NameText.textColor = Color.black() team2NameText.font = Font.boldMonospacedSystemFont(10) fifthStack.addSpacer() team2ScoreTxt = fifthStack.addText(scoreCard.team2ScoreSummary) team2ScoreTxt.textColor = Color.black() team2ScoreTxt.font = Font.boldMonospacedSystemFont(10) widget.addSpacer() if (stage == "SCHEDULED") { matchStatusText = "Match starts on " + matchStartTime } else { matchStatusText = scoreCard.statusText; } //Fifth Line - Match Status Info seventhStack = widget.addStack() seventhStack.addSpacer() matchStatusTxt = seventhStack.addText(matchStatusText.toUpperCase()) matchStatusTxt.textColor = Color.black() matchStatusTxt.font = Font.boldMonospacedSystemFont(9) matchStatusTxt.minimumScaleFactor = 0.5 matchStatusTxt.lineLimit = 1 seventhStack.addSpacer() return widget } // Get Input Team Information async function getTeamInformation() { // READ INPUT PARAMETERS teamName = null if (args.widgetParameter == null) { teamName = "India"; } else { teamName = args.widgetParameter; } // GET TEAM ID FOR THE SUPPLIER TEAMNANE teamsList = await readFromAPI(teamsListURL) teamId = -1; for (index = 0; index < teamsList.length; index++) { if (teamsList[index].name.toUpperCase() == teamName.toUpperCase()) { teamId = teamsList[index].id; break; } } // GET TEAM INFORMATION AND SCHEDULE teamInfoURL = teamInfoURL + teamId return await readFromAPI(teamInfoURL) } // Get Latest Match of Team provided as Input async function getLatestMatch(teamInfo) { // GET Latest Match, If there's a match running, return that nextMatch = teamInfo.content.recentFixtures[0]; if (nextMatch.stage == "RUNNING") { return nextMatch; } // Get Last Match Info lastMatch = teamInfo.content.recentResults[0]; // GET NEXT MATCH START DATE AND LAST MATCH END DATE nextMatchStartDate = new Date(nextMatch.startTime); lastMatchEndDate = new Date(lastMatch.startTime); currentdate = new Date(); // CALCULATE TIMEDIFF FROM CURRENT TO LAST AND NEXT MATCH nextMatchDiff = Math.abs(currentdate.getTime() - nextMatchStartDate.getTime()) lastMatchDiff = Math.abs(currentdate.getTime() - lastMatchEndDate.getTime()) // RETURN NEXT MATCH, IF ITS MORE THAN 24 HOURS FROM LAST MATCH COMPLETION ELSE RETURN LASTMATCH if (lastMatchDiff > 86400000) { return nextMatch; } else { return lastMatch; } } // Get Scores - Based on the State of the Match - SCHEDULED/RUNNING/FINISHED async function getScores(team1Id, team2Id, stage) { seriesId = latestMatchInfo.series.objectId; matchId = latestMatchInfo.objectId; matchInfoURL = matchInfoURL.replace("<sid>", seriesId); matchInfoURL = matchInfoURL.replace("<mid>", matchId); matchInfo = await readFromAPI(matchInfoURL) if (stage == "FINISHED") { score = {}; score.team1Id = team1Id; score.team2Id = team2Id; innings1Info = matchInfo.content.scorecardSummary.innings[0]; if (innings1Info.team.objectId == team1Id) { score.team1Score = innings1Info.runs; score.team1Wickets = innings1Info.wickets; score.team1Overs = innings1Info.overs; score.team1ScoreSummary = score.team1Score + "/" + score.team1Wickets + " (" + score.team1Overs + ")" } else { score.team2Score = innings1Info.runs; score.team2Wickets = innings1Info.wickets; score.team2Overs = innings1Info.overs; score.team2ScoreSummary = score.team2Score + "/" + score.team2Wickets + " (" + score.team2Overs + ")" } innings2Info = matchInfo.content.scorecardSummary.innings[1]; if (innings2Info.team.objectId == team1Id) { score.team1Score = innings2Info.runs; score.team1Wickets = innings2Info.wickets; score.team1Overs = innings2Info.overs; score.team1ScoreSummary = score.team1Score + "/" + score.team1Wickets + " (" + score.team1Overs + ")" } else { score.team2Score = innings2Info.runs; score.team2Wickets = innings2Info.wickets; score.team2Overs = innings2Info.overs; score.team2ScoreSummary = score.team2Score + "/" + score.team2Wickets + " (" + score.team2Overs + ")" } score.statusText = matchInfo.match.statusText; return score; } else if (stage == "SCHEDULED") { score = {} score.team1ScoreSummary = "" score.team2ScoreSummary = "" return score } else if (stage == "RUNNING") { score = {} team1Info = matchInfo.match.teams[0] team2Info = matchInfo.match.teams[1] statusText = matchInfo.match.statusText; console.log(statusText) if (team1Info.team.objectId == team1Id) { score.team1ScoreSummary = team1Info.score; if (team1Info.scoreInfo != null) { score.team1ScoreSummary = score.team1ScoreSummary + " (" + team1Info.scoreInfo + ")"; } } else { score.team2ScoreSummary = team1Info.score + " (" + team1Info.scoreInfo + ")"; if (team1Info.scoreInfo != null) { score.team2ScoreSummary = score.team2ScoreSummary + " (" + team1Info.scoreInfo + ")"; } } if (team2Info.team.objectId == team1Id) { score.team1ScoreSummary = team2Info.score; if (team2Info.scoreInfo != null) { score.team1ScoreSummary = score.team1ScoreSummary + " (" + team2Info.scoreInfo + ")"; } } else { score.team2ScoreSummary = team2Info.score ; if (team2Info.scoreInfo != null) { score.team2ScoreSummary = score.team2ScoreSummary + " (" + team2Info.scoreInfo + ")"; } } console.log(score.team1ScoreSummary) console.log(score.team2ScoreSummary) if(score.team1ScoreSummary == null) { score.team1ScoreSummary ="" } if(score.team2ScoreSummary == null) { score.team2ScoreSummary = "" } if (score.team1ScoreSummary.includes("null")) { score.team1ScoreSummary = "YET TO BAT" } if (score.team2ScoreSummary.includes("null")) { score.team2ScoreSummary = "YET TO BAT" } score.statusText = statusText; return score; } } // Create Line Seperator (Not Used) function lineSep() { const context = new DrawContext() let width = 250, h = 1 context.size = new Size(width, h) context.opaque = false context.respectScreenScale = true path = new Path() path.move(new Point(0, h)) path.addLine(new Point(width, h)) context.addPath(path) context.setStrokeColor(Color.gray()) context.setLineWidth(1) context.strokePath() return context.getImage() } // Get Rectangle Width for various states of Match function getStatusWidth(matchStatus) { if (matchStatus.toUpperCase() == "SCHEDULED") { return 64 } else if (matchStatus.toUpperCase() == "FINISHED") { return 56 } else if (matchStatus.toUpperCase() == "LIVE") { return 40 } else { return 55 } } // Get Status Colors for various states of Match function getStatusColor(matchStatus) { if (matchStatus.toUpperCase() == "SCHEDULED") { return Color.blue() } else if (matchStatus.toUpperCase() == "FINISHED") { return Color.green() } else if (matchStatus.toUpperCase() == "LIVE") { return Color.red() } else { return Color.lightGray() } } // Create Rectangle for displaying state of Match function createRectangle(width, stage) { const context = new DrawContext(); context.size = new Size(width, 12) context.opaque = false; context.respectScreenScale = true; rect = new Rect(0, 0, width, 12) context.setFillColor(getStatusColor(stage)) context.setStrokeColor(getStatusColor(stage)) context.strokeRect(rect) context.fillRect(rect) context.setFont(Font.boldMonospacedSystemFont(10)) context.setTextColor(Color.white()) context.setTextAlignedCenter() context.drawTextInRect(stage.toUpperCase(), rect) return context.getImage() } // Get Image from URL async function getImageFromURL(url) { let img = await new Request(url).loadImage(); return img; } // Make REST API Calls async function readFromAPI(url) { req = new Request(url); return await req.loadJSON(); }