Guest User

Untitled

a guest
Apr 25th, 2021
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. // Get the data from the printer friendly version (more thin)
  3. var url="https://magicseaweed.com/Dromi-Herzlyia-Marina-Surf-Report/4744/Print-Ready/";
  4. let req=new Request(url);
  5. let html=await req.loadString();
  6.  
  7. // Read the location name//
  8. let locationTitle=html.match("<h1.*?>(.*)</h1>")[1].trim();
  9.  
  10. // Create the Widget
  11. let widget=new ListWidget();
  12. widget.backgroundColor=Color.blue();
  13. let titleText=widget.addText(locationTitle);
  14. titleText.textColor=Color.white();
  15. titleText.font=Font.systemFont(16);
  16. let dateText = widget.addText("");
  17. dateText.textColor=Color.white();
  18. dateText.font=Font.systemFont(12);
  19. widget.addSpacer(5);
  20. // Build the day panels
  21. let dayPanel=widget.addStack();
  22. dayPanel.layoutHorizontally();
  23. var firstDayCol=dayPanel.addStack();
  24. firstDayCol.layoutVertically();
  25. dayPanel.addSpacer(20);        
  26. var secondDayCol=dayPanel.addStack();
  27. secondDayCol.layoutVertically();
  28.  
  29. // Scan the table rows
  30. let regExRow=new RegExp("<tr.*?>(.*?)</tr>","ig");
  31. let dateTitle="";
  32. let resultRow;
  33. let itemCount=0;
  34. while(resultRow=regExRow.exec(html))
  35. {
  36.   // Search for second day forecast -> tommorow's forecast
  37.   if(resultRow[0].indexOf("data-forecast-day='2'")>0)
  38.   {
  39.     // See if we need to get the date
  40.     if(dateTitle.length==0)
  41.     {
  42.       let rowDate=resultRow[0].match("data-date-anchor=\"(.*?)\"");
  43.       if(rowDate!=null)
  44.       {
  45.         let dayOfWeek=rowDate[1].substr(0, rowDate[1].length-4);
  46.         let dayOfMonth=rowDate[1].substr(dayOfWeek.length, 2);
  47.         let monthNum=rowDate[1].substr(dayOfWeek.length+2, 2);
  48.         dateTitle=dayOfWeek+" "+dayOfMonth+"/"+monthNum;
  49.         dateText.text="("+dateTitle+")";
  50.       }
  51.     }
  52.    
  53.     // Get the first three cells of data from tbe row
  54.     let rowData=Array(3);
  55.     let dataIndex=0;
  56.     let regExCell=new RegExp("<td.*?>(.*?)</td>","ig");
  57.     let resultCell;
  58.     while(resultCell=regExCell.exec(resultRow[1]))
  59.     {
  60.       let regExText=new RegExp("<.*?>(.*?)<", "ig");
  61.       let resultText;
  62.       while(resultText=regExText.exec(resultCell[1]))
  63.       {
  64.         let s=resultText[1].trim();
  65.         if(s.length>0)
  66.         {
  67.           rowData[dataIndex]=s;
  68.           dataIndex++;
  69.           if(dataIndex>2) break;
  70.         }
  71.       }
  72.       if(dataIndex>2) break;
  73.     }
  74.     // Check if we have data
  75.     if(dataIndex>0)
  76.     {
  77.       itemCount++;
  78.       destPanel=firstDayCol;
  79.       if(itemCount>4)
  80.       {
  81.         destPanel=secondDayCol;
  82.       }
  83.       // The array contains the hour, and two wave's heights in meters
  84.       let dataPanel=destPanel.addStack();
  85.       dataPanel.layoutHorizontally();
  86.       let hourPanel=dataPanel.addStack();
  87.       hourPanel.size=new Size(50, -1);
  88.       let hourText=hourPanel.addText(rowData[0]);
  89.       hourText.textColor=Color.white();
  90.       hourText.leftAlignText();
  91.       hourText.font=Font.systemFont(14);
  92.       dataPanel.addSpacer(10);
  93.       let waveText=dataPanel.addText(rowData[1]+"-"+rowData[2]+"m");
  94. waveText.textColor=Color.white();
  95. waveText.font=Font.systemFont(14);
  96.     }
  97.   }
  98. }
  99.  
  100. //widget.refreshAfterDate=new Date(Date.now());
  101.  
  102. if(config.runsInWidget)
  103. {
  104.   Script.setWidget(widget);
  105.   Script.complete();
  106. }
  107. else
  108. {
  109.   widget.presentMedium();
  110. }
Advertisement
Add Comment
Please, Sign In to add comment