From 9f53aa6cbac218a7d5057c1248349247a77568a2 Mon Sep 17 00:00:00 2001 From: martind2000 Date: Thu, 20 Apr 2017 13:42:55 +0100 Subject: [PATCH] new password bb object --- app/app.js | 43 +-------- app/js/modules/password.js | 72 +++++++++++++++ .../fonts/Roboto_Condensed-normal-400.woff | Bin 18364 -> 18796 bytes app/live/js/app.js | 2 +- gulpfile.js | 2 +- lib/newdata.json | 2 +- lib/password.js | 86 +++++++++--------- views/pages/slackV2-min.ejs | 8 +- views/pages/slackV2.ejs | 11 ++- 9 files changed, 130 insertions(+), 96 deletions(-) create mode 100644 app/js/modules/password.js diff --git a/app/app.js b/app/app.js index c7a48a7..dbeeb9c 100644 --- a/app/app.js +++ b/app/app.js @@ -1,46 +1,5 @@ (function() { - - let formatPassword = function(data) { - let dest$ = $('#passwordOut'); - let html = new EJS({url: '/template/password.ejs'}).render(data); - dest$.empty(); - dest$.append(html); - dest$.show(); - }; - - let generatePassword = function(from, to) { - let url = '/generate'; - - $.ajax({ - type: 'GET', - url: url, - data: '', - dataType: 'json', - - timeout: 10000, - - headers: { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS', - 'Access-Control-Allow-Headers': 'Content-Type' - - }, - success: function(data) { - formatPassword(data); - }, - error: function(xhr, type) { - console.log('ajax error'); - console.log(xhr); - console.log(type); - } - }); - }; - - $('#newPassword').on('click', function() { - generatePassword(); - }); - - document.title = 'Slack'; + document.title = 'Slack'; })(); let popitout = function(url) { diff --git a/app/js/modules/password.js b/app/js/modules/password.js new file mode 100644 index 0000000..e265105 --- /dev/null +++ b/app/js/modules/password.js @@ -0,0 +1,72 @@ +/** + * Created by mdonnel on 20/04/2017. + */ +Array.prototype.random = function () { + return this[Math.floor((Math.random() * this.length))]; +}; + +let PasswordView = Backbone.View.extend({ + el: $('#passwords'), + + initialize: function () { + this.alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; + this.whitespace = ['.', '~', '#', '!', '$', '+', '-', '+']; + this.numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; + this.left = ['Alabama', + 'Alaska', + 'Arizona', + 'Maryland', + 'Nevada', + 'Mexico', + 'Texas', + 'Utah', + 'Glasgow', + 'Inverness', + 'Edinburgh', + 'Dumbarton', + 'Balloch', + 'Renton', + 'Cardross', + 'Dundee', + 'Paisley', + 'Hamilton', + 'Greenock', + 'Falkirk', + 'Irvine', + 'Renfrew', + 'Erskine', + 'London', + 'Hammersmith', + 'Islington', + 'Silver', 'Black', 'Yellow', 'Purple', 'White', 'Pink', 'Red', 'Orange', 'Brown', 'Green', 'Blue', 'Amber', 'Aqua', 'Azure', 'Bronze', 'Coral', 'Copper', 'Crimson', 'Cyan', 'Ginger', 'Gold', 'Indigo', 'Jade' + + ]; + + this.right = ['Aganju', 'Cygni', 'Akeron', 'Antares', 'Aragoth', 'Ardus', 'Carpenter', 'Cooper', 'Dahin', 'Capella', 'Endriago', 'Gallina', 'Fenris', 'Freya', 'Glenn', 'Grissom', 'Jotunheim', 'Kailaasa', 'Lagarto', 'Muspelheim', 'Nifleheim', 'Primus', 'Vega', 'Ragnarok', 'Shepard', 'Slayton', 'Tarsis', 'Mercury', 'Venus', 'Mars', 'Earth', 'Terra', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto', 'Europa', 'Ganymede', 'Callisto', 'Titan', 'Juno', 'Eridanus', 'Scorpius', 'Crux', 'Cancer', 'Taurus', 'Lyra', 'Andromeda', 'Virgo', 'Aquarius', 'Cygnus', 'Corvus', 'Taurus', 'Draco', 'Perseus', 'Pegasus', 'Gemini', 'Columbia', 'Bootes', 'Orion', 'Deneb', 'Merope', 'Agate', 'Amber', 'Beryl', 'Calcite', 'Citrine', 'Coral', 'Diamond', 'Emerald', 'Garnet', 'Jade', 'Lapis', 'Moonstone', 'Obsidian', 'Onyx', 'Opal', 'Pearl', 'Quartz', 'Ruby', 'Sapphire', 'Topaz', 'Iron', 'Lead', 'Nickel', 'Copper', 'Zinc', 'Tin', 'Manes', 'Argon', 'Neon', 'Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot', 'Golf', 'Hotel', 'India', 'Juliett', 'Kilo', 'Lima', 'Mike', 'November', 'Oscar', 'Papa', 'Quebec', 'Romeo', 'Sierra', 'Tango', 'Uniform', 'Victor', 'Whisky', 'Xray', 'Yankee', 'Zulu']; + _.bindAll(this, 'newClick'); + }, + events: { + 'click #newPassword': 'newClick' + }, + numberCluster: function () { + return this.numbers.random() + this.numbers.random() + this.numbers.random(); + }, + randomAmount: function (i) { + let str = ''; + + for (let t = 0; t < i; t++) { + str = str + this.alpha.random(); + } + + return str; + }, + newClick: function () { + let $passwordOut = $('#passwordOut'); + let long = (this.left.random() + ' ' + this.right.random() + ' ' + this.numberCluster()).split(' ').join(this.whitespace.random()); + let short = (this.randomAmount(5) + ' ' + this.randomAmount(5)).split(' ').join(this.whitespace.random()); + + let template = `
Long: ${long}
Short: ${short}
`; + $passwordOut.empty().append(template).removeClass('mui--hide'); + } +}); + diff --git a/app/live/fonts/Roboto_Condensed-normal-400.woff b/app/live/fonts/Roboto_Condensed-normal-400.woff index d1dc4de711bcc93bd66c43cab54d353d7001d1ab..71d860bae3b7261a2ad43f1ffe071a22691fea39 100644 GIT binary patch literal 18796 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 literal 18364 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';this.$html=$(t),this.$events.append(this.$html),this.$myEvent=$("#"+this.id)}});BitcoinModel=Backbone.Model.extend({initialize:function(){this.set("url","/btc");var t={lastGBP:0,lastUSD:0,lows:{gbp:0,usd:0},highs:{gbp:0,usd:0},eclass:""};this.set("btcdata",t),this.update()},update:function(){var t,e,i;this.getBTC(),t=new Date,e=6e4-t.getTime()%6e4,i=function(){this.update()},setTimeout(i.bind(this),e+10)},recalc:function(){var t=this.get("btcdata"),e=t.lastGBP,i=void 0,n=t.gbp,s=t.usd,o=t.lows,a=t.highs,r=t.eclass;0!==t.lastGBP?r=n>e?"up":"down":(o.gbp=n,o.usd=s,a.gbp=n,a.usd=s),e=n,i=s,n"+E.locationName+" TO "+E.filterLocationName+'\n \n \n \n \n \n ',"object"===_typeof(E.trainServices)&&null!==E.trainServices){e=!0,i=!1,n=void 0;try{for(s=E.trainServices[Symbol.iterator]();!(e=(o=s.next()).done);e=!0)a=o.value,r=a.destination[0],l=null!==r.via?""+r.via+"":"",d=null!==a.platform?a.platform:"💠",c=null!==a.sta?a.sta:"D "+a.std,h=null!==a.eta?a.eta:a.etd,t=a.isCancelled?t+"\n \n \n \n \n ":t+"\n \n \n \n \n "}catch(t){i=!0,n=t}finally{try{!e&&s.return&&s.return()}finally{if(i)throw n}}}if("object"===_typeof(E.busServices)&&null!==E.busServices){u=!0,m=!1,p=void 0;try{for(f=E.busServices[Symbol.iterator]();!(u=(g=f.next()).done);u=!0)b=g.value,v=b.destination[0],w=null!==v.via?""+v.via+"":"",y=null!==b.platform?b.platform:"",T=null!==b.sta?b.sta:"D "+b.std,$=null!==b.eta?b.eta:b.etd,t=t+"\n \n \n \n \n "}catch(t){m=!0,p=t}finally{try{!u&&f.return&&f.return()}finally{if(m)throw p}}}t+="
DestinationTimeStatusPlatform
"+r.locationName+" "+l+""+c+'❌ '+a.cancelReason+"
"+r.locationName+" "+l+""+c+""+h+""+d+"
🚌 "+v.locationName+" "+w+""+T+""+$+""+y+"
",this.$traintext.empty().html(t),this.$traintext.removeClass("mui--hide").addClass("mui--show")}else this.$traintext.removeClass("mui--show").addClass("mui--hide")},initView:function(){var t,e=this,i=this.model.get("target"),n="
"+i.toUpperCase()+':
';this.$html=$(n),this.$html.on("click",function(){e.model.getRoute()}),this.$trains.append(this.$html),this.$button=$("#"+i),t="click #$(target)",this.events[t]="showTrains"},showTrains:function(){}}),WeatherModel=Backbone.Model.extend({initialize:function(){var t=this.get("geo");this.set("url","https://api.darksky.net/forecast/9ad2a41d420f3cf4960571bb886f710c/"+t.coords.latitude.toString()+","+t.coords.longitude.toString()+"?units=uk2&exclude=minutely,hourly,alerts,flags"),this.update()},update:function(){var t,e,i;this.getWeather(),t=new Date,e=18e5-t.getTime()%18e5,i=function(){this.update()},setTimeout(i.bind(this),e+10)},getWeather:function(){var t=this;$.ajax({type:"GET",url:t.get("url"),data:"",dataType:"jsonp",timeout:1e4,context:$("body"),contentType:"application/json",headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"PUT, GET, POST, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type"},success:function(e){var i={temperature:e.currently.temperature,icon:e.currently.icon,summary:e.currently.summary,daily:e.daily.summary};t.set(i)},error:function(t,e){}})}}),Weather=Backbone.View.extend({tagName:"div",initialize:function(){_.bindAll(this,"render"),this.model.bind("change",this.render),this.$weatherText=$("#weatherDescription"),this.$weatherTemp=$("#temp"),this.$weatherIcon=$("#weatherIcon")},render:function(){var t='';this.$weatherTemp.empty().html(parseInt(this.model.get("temperature"))+"°c "),this.$weatherText.empty().html(this.model.get("summary")),this.$weatherIcon.empty().html(t)}}),WeatherSlim=Backbone.View.extend({tagName:"div",initialize:function(){_.bindAll(this,"render"),this.model.bind("change",this.render),this.$weather=$("#weather"),this.render()},render:function(){var t=this.model.get("summary"),e=this.model.get("temperature"),i=this.model.get("daily"),n=t+" "+e+"° "+i+"";this.$weather.empty().html(n)}}),function(){var t=function(t){var e=$("#passwordOut"),i=new EJS({url:"/template/password.ejs"}).render(t);e.empty(),e.append(i),e.show()},e=function(e,i){$.ajax({type:"GET",url:"/generate",data:"",dataType:"json",timeout:1e4,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"PUT, GET, POST, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type"},success:function(e){t(e)},error:function(t,e){}})};$("#newPassword").on("click",function(){e()}),document.title="Slack"}(),popitout=function(t){var e=window.open(t,"name","height=600,width=570");return window.focus&&e.focus(),!1},popitoutSmall=function(t){var e=window.open(t,"name","height=400,width=520");return window.focus&&e.focus(),!1}; \ No newline at end of file +"use strict";var BitcoinModel,Bitcoin,FxModel,FxView,_typeof,TrainModel,TrainView,WeatherModel,Weather,WeatherSlim,PasswordView,popitout,popitoutSmall,EventModel=Backbone.Model.extend({initialize:function(){this.update()},getDays:function(t,e){var i=void 0,n=void 0;return i=t.getTime(),n=e.getTime(),(n-i)/864e5},update:function(){var t,e=new Date,i=36e5-e.getTime()%36e5,n={};n.days=Math.ceil(this.getDays(e,this.get("event"))),n.weeks=Math.ceil(this.getDays(e,this.get("event"))/7),this.set("data",n),t=function(){this.update()},setTimeout(t.bind(this),i+10)}}),EventView=Backbone.View.extend({tagName:"div",initialize:function(){_.bindAll(this,"render"),this.model.bind("change",this.render),this.id="e_"+Math.random().toString(36).substr(2,9),this.$events=$("#events"),this.$myEvent=null,this.$el=this.$events,this.initView(),this.render()},render:function(){var t=this.model.get("label"),e=this.model.get("data"),i=t+" "+e.days+" days / "+e.weeks+" weeks";this.$myEvent.empty().append(i)},initView:function(){var t="
';this.$html=$(t),this.$events.append(this.$html),this.$myEvent=$("#"+this.id)}});BitcoinModel=Backbone.Model.extend({initialize:function(){this.set("url","/btc");var t={lastGBP:0,lastUSD:0,lows:{gbp:0,usd:0},highs:{gbp:0,usd:0},eclass:""};this.set("btcdata",t),this.update()},update:function(){var t,e,i;this.getBTC(),t=new Date,e=6e4-t.getTime()%6e4,i=function(){this.update()},setTimeout(i.bind(this),e+10)},recalc:function(){var t=this.get("btcdata"),e=t.lastGBP,i=void 0,n=t.gbp,a=t.usd,s=t.lows,o=t.highs,r=t.eclass;0!==t.lastGBP?r=n>e?"up":"down":(s.gbp=n,s.usd=a,o.gbp=n,o.usd=a),e=n,i=a,n"+k.locationName+" TO "+k.filterLocationName+'\n \n \n \n \n \n ',"object"===_typeof(k.trainServices)&&null!==k.trainServices){e=!0,i=!1,n=void 0;try{for(a=k.trainServices[Symbol.iterator]();!(e=(s=a.next()).done);e=!0)o=s.value,r=o.destination[0],l=null!==r.via?""+r.via+"":"",d=null!==o.platform?o.platform:"💠",h=null!==o.sta?o.sta:"D "+o.std,u=null!==o.eta?o.eta:o.etd,t=o.isCancelled?t+"\n \n \n \n \n ":t+"\n \n \n \n \n "}catch(t){i=!0,n=t}finally{try{!e&&a.return&&a.return()}finally{if(i)throw n}}}if("object"===_typeof(k.busServices)&&null!==k.busServices){c=!0,m=!1,p=void 0;try{for(g=k.busServices[Symbol.iterator]();!(c=(f=g.next()).done);c=!0)b=f.value,v=b.destination[0],w=null!==v.via?""+v.via+"":"",y=null!==b.platform?b.platform:"",T=null!==b.sta?b.sta:"D "+b.std,$=null!==b.eta?b.eta:b.etd,t=t+"\n \n \n \n \n "}catch(t){m=!0,p=t}finally{try{!c&&g.return&&g.return()}finally{if(m)throw p}}}t+="
DestinationTimeStatusPlatform
"+r.locationName+" "+l+""+h+'❌ '+o.cancelReason+"
"+r.locationName+" "+l+""+h+""+u+""+d+"
🚌 "+v.locationName+" "+w+""+T+""+$+""+y+"
",this.$traintext.empty().html(t),this.$traintext.removeClass("mui--hide").addClass("mui--show")}else this.$traintext.removeClass("mui--show").addClass("mui--hide")},initView:function(){var t,e=this,i=this.model.get("target"),n="
"+i.toUpperCase()+':
';this.$html=$(n),this.$html.on("click",function(){e.model.getRoute()}),this.$trains.append(this.$html),this.$button=$("#"+i),t="click #$(target)",this.events[t]="showTrains"},showTrains:function(){}}),WeatherModel=Backbone.Model.extend({initialize:function(){var t=this.get("geo");this.set("url","https://api.darksky.net/forecast/9ad2a41d420f3cf4960571bb886f710c/"+t.coords.latitude.toString()+","+t.coords.longitude.toString()+"?units=uk2&exclude=minutely,hourly,alerts,flags"),this.update()},update:function(){var t,e,i;this.getWeather(),t=new Date,e=18e5-t.getTime()%18e5,i=function(){this.update()},setTimeout(i.bind(this),e+10)},getWeather:function(){var t=this;$.ajax({type:"GET",url:t.get("url"),data:"",dataType:"jsonp",timeout:1e4,context:$("body"),contentType:"application/json",headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"PUT, GET, POST, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type"},success:function(e){var i={temperature:e.currently.temperature,icon:e.currently.icon,summary:e.currently.summary,daily:e.daily.summary};t.set(i)},error:function(t,e){}})}}),Weather=Backbone.View.extend({tagName:"div",initialize:function(){_.bindAll(this,"render"),this.model.bind("change",this.render),this.$weatherText=$("#weatherDescription"),this.$weatherTemp=$("#temp"),this.$weatherIcon=$("#weatherIcon")},render:function(){var t='';this.$weatherTemp.empty().html(parseInt(this.model.get("temperature"))+"°c "),this.$weatherText.empty().html(this.model.get("summary")),this.$weatherIcon.empty().html(t)}}),WeatherSlim=Backbone.View.extend({tagName:"div",initialize:function(){_.bindAll(this,"render"),this.model.bind("change",this.render),this.$weather=$("#weather"),this.render()},render:function(){var t=this.model.get("summary"),e=this.model.get("temperature"),i=this.model.get("daily"),n=t+" "+e+"° "+i+"";this.$weather.empty().html(n)}}),Array.prototype.random=function(){return this[Math.floor(Math.random()*this.length)]},PasswordView=Backbone.View.extend({el:$("#passwords"),initialize:function(){this.alpha=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9"],this.whitespace=[".","~","#","!","$","+","-","+"],this.numbers=["0","1","2","3","4","5","6","7","8","9"],this.left=["Alabama","Alaska","Arizona","Maryland","Nevada","Mexico","Texas","Utah","Glasgow","Inverness","Edinburgh","Dumbarton","Balloch","Renton","Cardross","Dundee","Paisley","Hamilton","Greenock","Falkirk","Irvine","Renfrew","Erskine","London","Hammersmith","Islington","Silver","Black","Yellow","Purple","White","Pink","Red","Orange","Brown","Green","Blue","Amber","Aqua","Azure","Bronze","Coral","Copper","Crimson","Cyan","Ginger","Gold","Indigo","Jade"],this.right=["Aganju","Cygni","Akeron","Antares","Aragoth","Ardus","Carpenter","Cooper","Dahin","Capella","Endriago","Gallina","Fenris","Freya","Glenn","Grissom","Jotunheim","Kailaasa","Lagarto","Muspelheim","Nifleheim","Primus","Vega","Ragnarok","Shepard","Slayton","Tarsis","Mercury","Venus","Mars","Earth","Terra","Jupiter","Saturn","Uranus","Neptune","Pluto","Europa","Ganymede","Callisto","Titan","Juno","Eridanus","Scorpius","Crux","Cancer","Taurus","Lyra","Andromeda","Virgo","Aquarius","Cygnus","Corvus","Taurus","Draco","Perseus","Pegasus","Gemini","Columbia","Bootes","Orion","Deneb","Merope","Agate","Amber","Beryl","Calcite","Citrine","Coral","Diamond","Emerald","Garnet","Jade","Lapis","Moonstone","Obsidian","Onyx","Opal","Pearl","Quartz","Ruby","Sapphire","Topaz","Iron","Lead","Nickel","Copper","Zinc","Tin","Manes","Argon","Neon","Alpha","Bravo","Charlie","Delta","Echo","Foxtrot","Golf","Hotel","India","Juliett","Kilo","Lima","Mike","November","Oscar","Papa","Quebec","Romeo","Sierra","Tango","Uniform","Victor","Whisky","Xray","Yankee","Zulu"],_.bindAll(this,"newClick")},events:{"click #newPassword":"newClick"},numberCluster:function(){return this.numbers.random()+this.numbers.random()+this.numbers.random()},randomAmount:function(t){var e,i="";for(e=0;e
Short: "+i+"
";t.empty().append(n).removeClass("mui--hide")}}),function(){document.title="Slack"}(),popitout=function(t){var e=window.open(t,"name","height=600,width=570");return window.focus&&e.focus(),!1},popitoutSmall=function(t){var e=window.open(t,"name","height=400,width=520");return window.focus&&e.focus(),!1}; \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 2e53e17..1432ad0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -23,7 +23,7 @@ let dest = 'app/live'; let fontOptions = { }; gulp.task('appJS', function() { - return gulp.src(['app/js/modules/events.js', 'app/js/modules/bitcoin.js', 'app/js/modules/fx.js', 'app/js/modules/train.js','app/js/modules/weather.js', 'app/app.js']) + return gulp.src(['app/js/modules/events.js', 'app/js/modules/bitcoin.js', 'app/js/modules/fx.js', 'app/js/modules/train.js','app/js/modules/weather.js','app/js/modules/password.js', 'app/app.js']) .pipe(stripDebug()) .pipe(jshint('.jshintrc')) .pipe(jshint.reporter('default')) diff --git a/lib/newdata.json b/lib/newdata.json index 7a535aa..79ae73d 100644 --- a/lib/newdata.json +++ b/lib/newdata.json @@ -1 +1 @@ -{"last":1492506285344,"data":{"trains":{"last":"2017-04-18T09:02:27.613Z","data":[]},"weather":{"currently":"Mostly Cloudy. Around 0 to 11 degrees.","today":"Light rain starting in the evening.","later":"Mixed precipitation throughout the week, with temperatures falling to 7°C on Tuesday.","alerts":{},"data":{"latitude":55.95,"longitude":-4.566667,"timezone":"Europe/London","offset":1,"currently":{"time":1492506147,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","nearestStormDistance":6,"nearestStormBearing":227,"precipIntensity":0,"precipProbability":0,"temperature":5.57,"apparentTemperature":3.85,"dewPoint":0.47,"humidity":0.7,"windSpeed":4.91,"windBearing":83,"visibility":7.96,"cloudCover":0.78,"pressure":1033.48,"ozone":327.78},"minutely":{"summary":"Mostly cloudy for the hour.","icon":"partly-cloudy-day","data":[{"time":1492506120,"precipIntensity":0,"precipProbability":0},{"time":1492506180,"precipIntensity":0,"precipProbability":0},{"time":1492506240,"precipIntensity":0,"precipProbability":0},{"time":1492506300,"precipIntensity":0,"precipProbability":0},{"time":1492506360,"precipIntensity":0,"precipProbability":0},{"time":1492506420,"precipIntensity":0,"precipProbability":0},{"time":1492506480,"precipIntensity":0,"precipProbability":0},{"time":1492506540,"precipIntensity":0,"precipProbability":0},{"time":1492506600,"precipIntensity":0,"precipProbability":0},{"time":1492506660,"precipIntensity":0,"precipProbability":0},{"time":1492506720,"precipIntensity":0,"precipProbability":0},{"time":1492506780,"precipIntensity":0,"precipProbability":0},{"time":1492506840,"precipIntensity":0,"precipProbability":0},{"time":1492506900,"precipIntensity":0,"precipProbability":0},{"time":1492506960,"precipIntensity":0,"precipProbability":0},{"time":1492507020,"precipIntensity":0,"precipProbability":0},{"time":1492507080,"precipIntensity":0,"precipProbability":0},{"time":1492507140,"precipIntensity":0,"precipProbability":0},{"time":1492507200,"precipIntensity":0,"precipProbability":0},{"time":1492507260,"precipIntensity":0,"precipProbability":0},{"time":1492507320,"precipIntensity":0,"precipProbability":0},{"time":1492507380,"precipIntensity":0,"precipProbability":0},{"time":1492507440,"precipIntensity":0,"precipProbability":0},{"time":1492507500,"precipIntensity":0,"precipProbability":0},{"time":1492507560,"precipIntensity":0,"precipProbability":0},{"time":1492507620,"precipIntensity":0,"precipProbability":0},{"time":1492507680,"precipIntensity":0,"precipProbability":0},{"time":1492507740,"precipIntensity":0,"precipProbability":0},{"time":1492507800,"precipIntensity":0,"precipProbability":0},{"time":1492507860,"precipIntensity":0,"precipProbability":0},{"time":1492507920,"precipIntensity":0,"precipProbability":0},{"time":1492507980,"precipIntensity":0,"precipProbability":0},{"time":1492508040,"precipIntensity":0,"precipProbability":0},{"time":1492508100,"precipIntensity":0,"precipProbability":0},{"time":1492508160,"precipIntensity":0,"precipProbability":0},{"time":1492508220,"precipIntensity":0,"precipProbability":0},{"time":1492508280,"precipIntensity":0,"precipProbability":0},{"time":1492508340,"precipIntensity":0,"precipProbability":0},{"time":1492508400,"precipIntensity":0,"precipProbability":0},{"time":1492508460,"precipIntensity":0,"precipProbability":0},{"time":1492508520,"precipIntensity":0,"precipProbability":0},{"time":1492508580,"precipIntensity":0,"precipProbability":0},{"time":1492508640,"precipIntensity":0,"precipProbability":0},{"time":1492508700,"precipIntensity":0,"precipProbability":0},{"time":1492508760,"precipIntensity":0,"precipProbability":0},{"time":1492508820,"precipIntensity":0,"precipProbability":0},{"time":1492508880,"precipIntensity":0,"precipProbability":0},{"time":1492508940,"precipIntensity":0,"precipProbability":0},{"time":1492509000,"precipIntensity":0,"precipProbability":0},{"time":1492509060,"precipIntensity":0,"precipProbability":0},{"time":1492509120,"precipIntensity":0,"precipProbability":0},{"time":1492509180,"precipIntensity":0,"precipProbability":0},{"time":1492509240,"precipIntensity":0,"precipProbability":0},{"time":1492509300,"precipIntensity":0,"precipProbability":0},{"time":1492509360,"precipIntensity":0,"precipProbability":0},{"time":1492509420,"precipIntensity":0,"precipProbability":0},{"time":1492509480,"precipIntensity":0,"precipProbability":0},{"time":1492509540,"precipIntensity":0,"precipProbability":0},{"time":1492509600,"precipIntensity":0,"precipProbability":0},{"time":1492509660,"precipIntensity":0,"precipProbability":0},{"time":1492509720,"precipIntensity":0,"precipProbability":0}]},"hourly":{"summary":"Light rain starting this evening.","icon":"rain","data":[{"time":1492506000,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":5.57,"apparentTemperature":3.86,"dewPoint":0.51,"humidity":0.7,"windSpeed":4.9,"windBearing":82,"visibility":7.87,"cloudCover":0.78,"pressure":1033.48,"ozone":327.78},{"time":1492509600,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":6.63,"apparentTemperature":4.89,"dewPoint":0.39,"humidity":0.64,"windSpeed":5.4,"windBearing":95,"visibility":10,"cloudCover":0.79,"pressure":1033.55,"ozone":327.75},{"time":1492513200,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":7.75,"apparentTemperature":6.03,"dewPoint":0.85,"humidity":0.62,"windSpeed":6,"windBearing":109,"visibility":10,"cloudCover":0.78,"pressure":1033.53,"ozone":327.36},{"time":1492516800,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":8.82,"apparentTemperature":7.12,"dewPoint":1.35,"humidity":0.59,"windSpeed":6.61,"windBearing":119,"visibility":10,"cloudCover":0.78,"pressure":1033.5,"ozone":326.54},{"time":1492520400,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":10.03,"apparentTemperature":10.03,"dewPoint":2.26,"humidity":0.58,"windSpeed":6.61,"windBearing":125,"visibility":10,"cloudCover":0.79,"pressure":1033.43,"ozone":325.15},{"time":1492524000,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":11.04,"apparentTemperature":11.04,"dewPoint":3.12,"humidity":0.58,"windSpeed":6.42,"windBearing":128,"visibility":10,"cloudCover":0.79,"pressure":1033.33,"ozone":323.34},{"time":1492527600,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":11.69,"apparentTemperature":11.69,"dewPoint":3.62,"humidity":0.58,"windSpeed":6.15,"windBearing":134,"visibility":10,"cloudCover":0.8,"pressure":1033.26,"ozone":321.51},{"time":1492531200,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0.0254,"precipProbability":0.01,"precipType":"rain","temperature":10.96,"apparentTemperature":10.96,"dewPoint":3.44,"humidity":0.6,"windSpeed":6.05,"windBearing":132,"visibility":10,"cloudCover":0.8,"pressure":1033.25,"ozone":319.61},{"time":1492534800,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0.0991,"precipProbability":0.15,"precipType":"rain","temperature":9.96,"apparentTemperature":8.62,"dewPoint":3.29,"humidity":0.63,"windSpeed":6.11,"windBearing":132,"visibility":10,"cloudCover":0.8,"pressure":1033.27,"ozone":317.7},{"time":1492538400,"summary":"Light Rain","icon":"rain","precipIntensity":0.2769,"precipProbability":0.52,"precipType":"rain","temperature":8.92,"apparentTemperature":7.39,"dewPoint":3.16,"humidity":0.67,"windSpeed":6.1,"windBearing":130,"visibility":10,"cloudCover":0.8,"pressure":1033.35,"ozone":316.37},{"time":1492542000,"summary":"Drizzle","icon":"rain","precipIntensity":0.1422,"precipProbability":0.25,"precipType":"rain","temperature":8.09,"apparentTemperature":6.36,"dewPoint":3.14,"humidity":0.71,"windSpeed":6.25,"windBearing":126,"visibility":10,"cloudCover":0.87,"pressure":1033.51,"ozone":316.01},{"time":1492545600,"summary":"Drizzle","icon":"rain","precipIntensity":0.1778,"precipProbability":0.34,"precipType":"rain","temperature":7.41,"apparentTemperature":5.48,"dewPoint":3.23,"humidity":0.75,"windSpeed":6.41,"windBearing":122,"visibility":10,"cloudCover":0.93,"pressure":1033.7,"ozone":316.23},{"time":1492549200,"summary":"Drizzle","icon":"rain","precipIntensity":0.1422,"precipProbability":0.25,"precipType":"rain","temperature":6.94,"apparentTemperature":4.89,"dewPoint":3.33,"humidity":0.78,"windSpeed":6.54,"windBearing":119,"visibility":10,"cloudCover":1,"pressure":1033.8,"ozone":316.44},{"time":1492552800,"summary":"Drizzle","icon":"rain","precipIntensity":0.1753,"precipProbability":0.33,"precipType":"rain","temperature":6.84,"apparentTemperature":4.66,"dewPoint":3.33,"humidity":0.78,"windSpeed":6.91,"windBearing":121,"visibility":10,"cloudCover":1,"pressure":1033.75,"ozone":316.55},{"time":1492556400,"summary":"Overcast","icon":"cloudy","precipIntensity":0.094,"precipProbability":0.13,"precipType":"rain","temperature":6.87,"apparentTemperature":4.58,"dewPoint":3.5,"humidity":0.79,"windSpeed":7.33,"windBearing":122,"visibility":10,"cloudCover":1,"pressure":1033.6,"ozone":316.64},{"time":1492560000,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0305,"precipProbability":0.02,"precipType":"rain","temperature":6.99,"apparentTemperature":4.69,"dewPoint":3.68,"humidity":0.79,"windSpeed":7.43,"windBearing":124,"visibility":10,"cloudCover":1,"pressure":1033.44,"ozone":316.4},{"time":1492563600,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0381,"precipProbability":0.03,"precipType":"rain","temperature":7.03,"apparentTemperature":4.71,"dewPoint":3.96,"humidity":0.81,"windSpeed":7.57,"windBearing":127,"visibility":10,"cloudCover":1,"pressure":1033.23,"ozone":315.6},{"time":1492567200,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0838,"precipProbability":0.11,"precipType":"rain","temperature":6.93,"apparentTemperature":4.64,"dewPoint":4.13,"humidity":0.82,"windSpeed":7.38,"windBearing":134,"visibility":10,"cloudCover":1,"pressure":1032.99,"ozone":314.46},{"time":1492570800,"summary":"Overcast","icon":"cloudy","precipIntensity":0.1219,"precipProbability":0.2,"precipType":"rain","temperature":6.79,"apparentTemperature":4.47,"dewPoint":4.32,"humidity":0.84,"windSpeed":7.37,"windBearing":140,"visibility":10,"cloudCover":1,"pressure":1032.8,"ozone":313.38},{"time":1492574400,"summary":"Overcast","icon":"cloudy","precipIntensity":0.1041,"precipProbability":0.16,"precipType":"rain","temperature":6.74,"apparentTemperature":4.43,"dewPoint":4.61,"humidity":0.86,"windSpeed":7.27,"windBearing":145,"visibility":10,"cloudCover":1,"pressure":1032.67,"ozone":312.46},{"time":1492578000,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0533,"precipProbability":0.05,"precipType":"rain","temperature":6.62,"apparentTemperature":4.32,"dewPoint":4.82,"humidity":0.88,"windSpeed":7.19,"windBearing":150,"visibility":10,"cloudCover":1,"pressure":1032.6,"ozone":311.59},{"time":1492581600,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0229,"precipProbability":0.01,"precipType":"rain","temperature":6.71,"apparentTemperature":4.46,"dewPoint":5.18,"humidity":0.9,"windSpeed":7.02,"windBearing":163,"visibility":10,"cloudCover":1,"pressure":1032.6,"ozone":310.81},{"time":1492585200,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0508,"precipProbability":0.05,"precipType":"rain","temperature":7.22,"apparentTemperature":5.16,"dewPoint":5.82,"humidity":0.91,"windSpeed":6.73,"windBearing":172,"visibility":10,"cloudCover":0.98,"pressure":1032.68,"ozone":310.16},{"time":1492588800,"summary":"Overcast","icon":"cloudy","precipIntensity":0.1092,"precipProbability":0.17,"precipType":"rain","temperature":7.67,"apparentTemperature":5.75,"dewPoint":6.36,"humidity":0.91,"windSpeed":6.6,"windBearing":183,"visibility":10,"cloudCover":0.97,"pressure":1032.83,"ozone":309.59},{"time":1492592400,"summary":"Drizzle","icon":"rain","precipIntensity":0.1397,"precipProbability":0.24,"precipType":"rain","temperature":8.21,"apparentTemperature":6.38,"dewPoint":6.91,"humidity":0.92,"windSpeed":6.65,"windBearing":194,"visibility":9.56,"cloudCover":0.94,"pressure":1032.95,"ozone":308.98},{"time":1492596000,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0.1118,"precipProbability":0.17,"precipType":"rain","temperature":9.06,"apparentTemperature":7.46,"dewPoint":7.33,"humidity":0.89,"windSpeed":6.43,"windBearing":205,"visibility":10,"cloudCover":0.88,"pressure":1032.99,"ozone":308.25},{"time":1492599600,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0.0584,"precipProbability":0.06,"precipType":"rain","temperature":10.12,"apparentTemperature":10.12,"dewPoint":7.88,"humidity":0.86,"windSpeed":6.64,"windBearing":216,"visibility":10,"cloudCover":0.82,"pressure":1033.01,"ozone":307.48},{"time":1492603200,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":11.25,"apparentTemperature":11.25,"dewPoint":8.53,"humidity":0.83,"windSpeed":7.24,"windBearing":224,"visibility":10,"cloudCover":0.77,"pressure":1033.02,"ozone":306.82},{"time":1492606800,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":12.11,"apparentTemperature":12.11,"dewPoint":9.19,"humidity":0.82,"windSpeed":7.85,"windBearing":228,"visibility":10,"cloudCover":0.75,"pressure":1033.06,"ozone":306.35},{"time":1492610400,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":12.78,"apparentTemperature":12.78,"dewPoint":9.72,"humidity":0.82,"windSpeed":8.43,"windBearing":230,"visibility":10,"cloudCover":0.72,"pressure":1033.12,"ozone":305.99},{"time":1492614000,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":13.14,"apparentTemperature":13.14,"dewPoint":10.03,"humidity":0.81,"windSpeed":8.81,"windBearing":232,"visibility":10,"cloudCover":0.71,"pressure":1033.19,"ozone":305.57},{"time":1492617600,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":12.34,"apparentTemperature":12.34,"dewPoint":9.69,"humidity":0.84,"windSpeed":8.64,"windBearing":233,"visibility":10,"cloudCover":0.74,"pressure":1033.2,"ozone":304.97},{"time":1492621200,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":11.21,"apparentTemperature":11.21,"dewPoint":9.1,"humidity":0.87,"windSpeed":8.36,"windBearing":235,"visibility":10,"cloudCover":0.79,"pressure":1033.21,"ozone":304.31},{"time":1492624800,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":10.1,"apparentTemperature":10.1,"dewPoint":8.48,"humidity":0.9,"windSpeed":8.04,"windBearing":236,"visibility":10,"cloudCover":0.82,"pressure":1033.27,"ozone":303.84},{"time":1492628400,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":9.51,"apparentTemperature":7.66,"dewPoint":8.17,"humidity":0.91,"windSpeed":7.79,"windBearing":235,"visibility":10,"cloudCover":0.85,"pressure":1033.44,"ozone":303.71},{"time":1492632000,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":9.34,"apparentTemperature":7.53,"dewPoint":8.23,"humidity":0.93,"windSpeed":7.46,"windBearing":232,"visibility":10,"cloudCover":0.87,"pressure":1033.68,"ozone":303.77},{"time":1492635600,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":9.38,"apparentTemperature":7.63,"dewPoint":8.48,"humidity":0.94,"windSpeed":7.24,"windBearing":231,"visibility":8.74,"cloudCover":0.89,"pressure":1033.88,"ozone":303.87},{"time":1492639200,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":9.45,"apparentTemperature":7.75,"dewPoint":8.64,"humidity":0.95,"windSpeed":7.08,"windBearing":229,"visibility":8.53,"cloudCover":0.88,"pressure":1034,"ozone":303.91},{"time":1492642800,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":9.38,"apparentTemperature":7.71,"dewPoint":8.66,"humidity":0.95,"windSpeed":6.95,"windBearing":227,"visibility":8.26,"cloudCover":0.87,"pressure":1034.07,"ozone":304},{"time":1492646400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":9.17,"apparentTemperature":7.48,"dewPoint":8.53,"humidity":0.96,"windSpeed":6.86,"windBearing":225,"visibility":8.1,"cloudCover":0.86,"pressure":1034.07,"ozone":304.29},{"time":1492650000,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipIntensity":0.1194,"precipProbability":0.19,"precipType":"rain","temperature":9.26,"apparentTemperature":7.57,"dewPoint":8.67,"humidity":0.96,"windSpeed":6.91,"windBearing":226,"visibility":8.16,"cloudCover":0.88,"pressure":1033.99,"ozone":304.82},{"time":1492653600,"summary":"Light Rain","icon":"rain","precipIntensity":0.2642,"precipProbability":0.51,"precipType":"rain","temperature":9.29,"apparentTemperature":7.58,"dewPoint":8.73,"humidity":0.96,"windSpeed":6.99,"windBearing":227,"visibility":8.33,"cloudCover":0.9,"pressure":1033.85,"ozone":305.55},{"time":1492657200,"summary":"Light Rain","icon":"rain","precipIntensity":0.3505,"precipProbability":0.55,"precipType":"rain","temperature":9.18,"apparentTemperature":7.42,"dewPoint":8.66,"humidity":0.97,"windSpeed":7.12,"windBearing":228,"visibility":8.44,"cloudCover":0.94,"pressure":1033.73,"ozone":306.63},{"time":1492660800,"summary":"Light Rain","icon":"rain","precipIntensity":0.3277,"precipProbability":0.54,"precipType":"rain","temperature":8.94,"apparentTemperature":7.11,"dewPoint":8.38,"humidity":0.96,"windSpeed":7.22,"windBearing":229,"visibility":8.61,"cloudCover":0.94,"pressure":1033.67,"ozone":308.43},{"time":1492664400,"summary":"Light Rain","icon":"rain","precipIntensity":0.2515,"precipProbability":0.5,"precipType":"rain","temperature":8.72,"apparentTemperature":6.8,"dewPoint":8.1,"humidity":0.96,"windSpeed":7.35,"windBearing":230,"visibility":8.73,"cloudCover":0.93,"pressure":1033.66,"ozone":310.57},{"time":1492668000,"summary":"Drizzle","icon":"rain","precipIntensity":0.1854,"precipProbability":0.36,"precipType":"rain","temperature":8.65,"apparentTemperature":6.68,"dewPoint":7.95,"humidity":0.95,"windSpeed":7.5,"windBearing":232,"visibility":8.84,"cloudCover":0.91,"pressure":1033.67,"ozone":312.07},{"time":1492671600,"summary":"Drizzle","icon":"rain","precipIntensity":0.1651,"precipProbability":0.31,"precipType":"rain","temperature":9.03,"apparentTemperature":7.07,"dewPoint":8.15,"humidity":0.94,"windSpeed":7.82,"windBearing":237,"visibility":8.98,"cloudCover":0.9,"pressure":1033.68,"ozone":312.31},{"time":1492675200,"summary":"Drizzle","icon":"rain","precipIntensity":0.1549,"precipProbability":0.28,"precipType":"rain","temperature":9.66,"apparentTemperature":7.73,"dewPoint":8.57,"humidity":0.93,"windSpeed":8.26,"windBearing":242,"visibility":9.11,"cloudCover":0.9,"pressure":1033.71,"ozone":311.91},{"time":1492678800,"summary":"Drizzle","icon":"rain","precipIntensity":0.1397,"precipProbability":0.24,"precipType":"rain","temperature":10.6,"apparentTemperature":10.6,"dewPoint":9.28,"humidity":0.92,"windSpeed":8.71,"windBearing":246,"visibility":9.25,"cloudCover":0.94,"pressure":1033.78,"ozone":311.77}]},"daily":{"summary":"Mixed precipitation throughout the week, with temperatures falling to 7°C on Tuesday.","icon":"rain","data":[{"time":1492470000,"summary":"Light rain starting in the evening.","icon":"rain","sunriseTime":1492491967,"sunsetTime":1492543872,"moonPhase":0.72,"precipIntensity":0.0432,"precipIntensityMax":0.2769,"precipIntensityMaxTime":1492538400,"precipProbability":0.52,"precipType":"rain","temperatureMin":-0.35,"temperatureMinTime":1492495200,"temperatureMax":11.69,"temperatureMaxTime":1492527600,"apparentTemperatureMin":-2.88,"apparentTemperatureMinTime":1492488000,"apparentTemperatureMax":11.69,"apparentTemperatureMaxTime":1492527600,"dewPoint":0.48,"humidity":0.7,"windSpeed":4.47,"windBearing":92,"visibility":10,"cloudCover":0.63,"pressure":1032.74,"ozone":322.76},{"time":1492556400,"summary":"Mostly cloudy throughout the day.","icon":"partly-cloudy-day","sunriseTime":1492578219,"sunsetTime":1492630395,"moonPhase":0.75,"precipIntensity":0.0457,"precipIntensityMax":0.1397,"precipIntensityMaxTime":1492592400,"precipProbability":0.24,"precipType":"rain","temperatureMin":6.62,"temperatureMinTime":1492578000,"temperatureMax":13.14,"temperatureMaxTime":1492614000,"apparentTemperatureMin":4.32,"apparentTemperatureMinTime":1492578000,"apparentTemperatureMax":13.14,"apparentTemperatureMaxTime":1492614000,"dewPoint":6.95,"humidity":0.87,"windSpeed":5.53,"windBearing":196,"visibility":10,"cloudCover":0.89,"pressure":1033.14,"ozone":308.7},{"time":1492642800,"summary":"Light rain in the morning and afternoon.","icon":"rain","sunriseTime":1492664472,"sunsetTime":1492716917,"moonPhase":0.79,"precipIntensity":0.1321,"precipIntensityMax":0.3505,"precipIntensityMaxTime":1492657200,"precipProbability":0.55,"precipType":"rain","temperatureMin":8.65,"temperatureMinTime":1492668000,"temperatureMax":13.04,"temperatureMaxTime":1492689600,"apparentTemperatureMin":6.68,"apparentTemperatureMinTime":1492668000,"apparentTemperatureMax":13.04,"apparentTemperatureMaxTime":1492689600,"dewPoint":9.18,"humidity":0.92,"windSpeed":8.63,"windBearing":243,"visibility":9.03,"cloudCover":0.88,"pressure":1033.69,"ozone":313.79},{"time":1492729200,"summary":"Light rain until afternoon.","icon":"rain","sunriseTime":1492750726,"sunsetTime":1492803440,"moonPhase":0.82,"precipIntensity":0.0914,"precipIntensityMax":0.4293,"precipIntensityMaxTime":1492776000,"precipProbability":0.58,"precipType":"rain","temperatureMin":6.56,"temperatureMinTime":1492812000,"temperatureMax":11.57,"temperatureMaxTime":1492776000,"apparentTemperatureMin":3.77,"apparentTemperatureMinTime":1492812000,"apparentTemperatureMax":11.57,"apparentTemperatureMaxTime":1492776000,"dewPoint":6.4,"humidity":0.83,"windSpeed":11.17,"windBearing":278,"visibility":10,"cloudCover":0.85,"pressure":1032.24,"ozone":323.98},{"time":1492815600,"summary":"Mostly cloudy throughout the day.","icon":"partly-cloudy-day","sunriseTime":1492836981,"sunsetTime":1492889962,"moonPhase":0.85,"precipIntensity":0.0229,"precipIntensityMax":0.0432,"precipIntensityMaxTime":1492855200,"precipProbability":0.04,"precipType":"rain","temperatureMin":2.28,"temperatureMinTime":1492898400,"temperatureMax":10.3,"temperatureMaxTime":1492873200,"apparentTemperatureMin":-1.11,"apparentTemperatureMinTime":1492898400,"apparentTemperatureMax":10.3,"apparentTemperatureMaxTime":1492873200,"dewPoint":1.74,"humidity":0.71,"windSpeed":10.27,"windBearing":311,"visibility":10,"cloudCover":0.61,"pressure":1031.1,"ozone":338.4},{"time":1492902000,"summary":"Partly cloudy throughout the day.","icon":"partly-cloudy-day","sunriseTime":1492923237,"sunsetTime":1492976485,"moonPhase":0.89,"precipIntensity":0.0203,"precipIntensityMax":0.033,"precipIntensityMaxTime":1492966800,"precipProbability":0.02,"precipType":"rain","temperatureMin":0.31,"temperatureMinTime":1492909200,"temperatureMax":11.21,"temperatureMaxTime":1492959600,"apparentTemperatureMin":-2.41,"apparentTemperatureMinTime":1492909200,"apparentTemperatureMax":11.21,"apparentTemperatureMaxTime":1492959600,"dewPoint":2.39,"humidity":0.81,"windSpeed":6.68,"windBearing":273,"visibility":10,"cloudCover":0.44,"pressure":1026.69,"ozone":338.67},{"time":1492988400,"summary":"Drizzle in the afternoon.","icon":"rain","sunriseTime":1493009493,"sunsetTime":1493063007,"moonPhase":0.92,"precipIntensity":0.066,"precipIntensityMax":0.1651,"precipIntensityMaxTime":1493035200,"precipProbability":0.3,"precipType":"rain","temperatureMin":0.69,"temperatureMinTime":1493071200,"temperatureMax":9.51,"temperatureMaxTime":1493046000,"apparentTemperatureMin":-3.87,"apparentTemperatureMinTime":1493071200,"apparentTemperatureMax":5.97,"apparentTemperatureMaxTime":1493046000,"dewPoint":1.82,"humidity":0.79,"windSpeed":11.57,"windBearing":283,"cloudCover":0.6,"pressure":1016.87,"ozone":361.18},{"time":1493074800,"summary":"Breezy in the morning and flurries in the evening.","icon":"snow","sunriseTime":1493095751,"sunsetTime":1493149530,"moonPhase":0.96,"precipIntensity":0.033,"precipIntensityMax":0.0737,"precipIntensityMaxTime":1493139600,"precipProbability":0.09,"precipType":"snow","precipAccumulation":0.597,"temperatureMin":-0.54,"temperatureMinTime":1493157600,"temperatureMax":7.12,"temperatureMaxTime":1493128800,"apparentTemperatureMin":-5.37,"apparentTemperatureMinTime":1493157600,"apparentTemperatureMax":2.69,"apparentTemperatureMaxTime":1493128800,"dewPoint":-2.13,"humidity":0.69,"windSpeed":15.02,"windBearing":324,"cloudCover":0.2,"pressure":1018.71,"ozone":397.15}]},"flags":{"sources":["datapoint","gfs","cmc","nam","rap","sref","fnmoc","isd","madis","nearest-precip","metwarn","darksky"],"datapoint-stations":["uk-301777","uk-3134","uk-322052","uk-322595","uk-322659","uk-350056","uk-351269","uk-351289","uk-351397","uk-351465","uk-352102","uk-352379","uk-352954","uk-354999","uk-371524","uk-371606"],"isd-stations":["031070-99999","031160-99999","031200-99999","031290-99999","031330-99999","031340-99999","031350-99999","031360-99999","031380-99999","031390-99999","031400-99999","031430-99999","031450-99999","031480-99999","031490-99999","031520-99999"],"madis-stations":["AU945","C9560","C9739","D4018","E0915","E3381","EGPF","EGPK"],"units":"uk2"}}},"history":["On this day in 1914, Harbourne Stephen, the Scottish World War II fighter pilot, was born.","Stephen was a Battle of Britain fighter ace who went on to forge a career for himself as a newspaper executive. On his way to a tally of 23 registered kills (though it was almost certainly higher) he shot down five enemy aircraft in a single day in August 1940. That December he became the first airman to be awarded a DSO in the field. Returning after the war to the field of newspapers, in which he had been a junior before he was called up in 1939, Stephen worked successively for the Beaverbrook press and for \"Thomson Newspapers\" before becoming managing director of The Daily Telegraph and The Sunday Telegraph in 1963.","On 18 April 1937, Sir Edward \"Teddy\" Taylor, the Scottish Conservative politician, was born. MP for Rochford and Southend since 1997, Taylor is a noted Euro-sceptic, who resigned from his government post in 1971, protesting against Britain joining the EEC.","Newspapers report that IBM had become the first computer manufacturer to use a megabit chip -- a memory chip capable of storing 1 million bits of information -- in a commercial product, its Model 3090. The announcement is heralded as a notable triumph for American computer makers, whose work had been perceived as having fallen behind that of the Japanese electronics industry."],"today":"Tuesday April 18, 2017 - The 107th day of 2017, and there are 257 days until the end of the year","tv":{"entries":[{"summary":"2 Broke Girls 6x22 - And 2 Broke Girls: The Movie","dtstart":"2017-04-18T01:30:00.000Z","dtend":"2017-04-18T02:00:00.000Z","description":"As the big premiere of the film about Caroline's life arrives\\,","timeStart":"2:30:00","timeEnd":"3:00:00","duration":"30 minutes","combined":"2:30:00 - '2 Broke Girls 6x22 - And 2 Broke Girls: The Movie, 30 minutes","recur":null,"long":"Tuesday, 2:30:00 - ","longcombined":"Tuesday, 2:30:00 - 2 Broke Girls 6x22 - And 2 Broke Girls: The Movie, 30 minutes"},{"summary":"Better Call Saul 3x2 - Witness","dtstart":"2017-04-18T02:00:00.000Z","dtend":"2017-04-18T03:00:00.000Z","description":"Jimmy and Kim hire an assistant\\; Mike seeks out a mysterious","timeStart":"3:00:00","timeEnd":"4:00:00","duration":"1 hour","combined":"3:00:00 - 'Better Call Saul 3x2 - Witness, 1 hour","recur":null,"long":"Tuesday, 3:00:00 - ","longcombined":"Tuesday, 3:00:00 - Better Call Saul 3x2 - Witness, 1 hour"}]},"cal":{"today":[{"summary":"Glasgow\\, United Kingdom\\, April 2017","dtstart":"2017-04-17T23:00:00.000Z","dtend":"2017-04-18T23:00:00.000Z","description":"Martin Donnelly is in Glasgow\\, United Kingdom from Apr 18\\, 2","timeStart":"0:00:00","timeEnd":"0:00:00","duration":"1 day","combined":"0:00:00 - 'Glasgow\\, United Kingdom\\, April 2017, 1 day","recur":null,"long":"Tuesday, 0:00:00 - ","longcombined":"Tuesday, 0:00:00 - Glasgow\\, United Kingdom\\, April 2017, 1 day"},{"summary":"SCOTRAIL - Dumbarton East to Glasgow Queen Street","dtstart":"2017-04-18T06:28:00.000Z","dtend":"2017-04-18T07:04:00.000Z","description":"View and/or edit details in TripIt : https://www.tripit.com/tr","timeStart":"7:28:00","timeEnd":"8:04:00","duration":"36 minutes","combined":"7:28:00 - 'SCOTRAIL - Dumbarton East to Glasgow Queen Street, 36 minutes","recur":null,"long":"Tuesday, 7:28:00 - ","longcombined":"Tuesday, 7:28:00 - SCOTRAIL - Dumbarton East to Glasgow Queen Street, 36 minutes"},{"summary":"SCOTRAIL - Glasgow Queen Street to Haymarket (Edinburgh)","dtstart":"2017-04-18T07:15:00.000Z","dtend":"2017-04-18T08:04:00.000Z","description":"View and/or edit details in TripIt : https://www.tripit.com/tr","timeStart":"8:15:00","timeEnd":"9:04:00","duration":"49 minutes","combined":"8:15:00 - 'SCOTRAIL - Glasgow Queen Street to Haymarket (Edinburgh), 49 minutes","recur":null,"long":"Tuesday, 8:15:00 - ","longcombined":"Tuesday, 8:15:00 - SCOTRAIL - Glasgow Queen Street to Haymarket (Edinburgh), 49 minutes"}],"tomorrow":[],"week":[{"summary":"Update Timesheet","dtstart":"2017-04-21T14:30:00.965Z","dtend":"2017-04-21T15:30:00.965Z","description":"Update the timesheet using https://outsauce.backofficeportal.co","timeStart":"15:30:00","timeEnd":"16:30:00","duration":"1 hour","combined":"15:30:00 - 'Update Timesheet, 1 hour","recur":"FREQ=WEEKLY;COUNT=15;BYDAY=FR","long":"Friday, 15:30:00 - ","longcombined":"Friday, 15:30:00 - Update Timesheet, 1 hour"},{"summary":"St. George's Day","dtstart":"2017-04-22T23:00:00.000Z","dtend":"2017-04-23T23:00:00.000Z","description":"","timeStart":"0:00:00","timeEnd":"0:00:00","duration":"1 day","combined":"0:00:00 - 'St. George's Day, 1 day","recur":null,"long":"Sunday, 0:00:00 - ","longcombined":"Sunday, 0:00:00 - St. George's Day, 1 day"},{"summary":"St. George's Day-C (E)","dtstart":"2017-04-22T23:00:00.031Z","dtend":"2017-04-23T23:00:00.031Z","description":"\\n\\n","timeStart":"0:00:00","timeEnd":"0:00:00","duration":"1 day","combined":"0:00:00 - 'St. George's Day-C (E), 1 day","recur":"FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=23","long":"Sunday, 0:00:00 - ","longcombined":"Sunday, 0:00:00 - St. George's Day-C (E), 1 day"}]},"swedish":{"xml":{"$":{"xmlns:wotd":"http://www.transparent.com/word-of-the-day/"},"words":{"date":"04-18-2017","langname":"Swedish","wordtype":"noun","word":"(ett) lÀsÄr","wordsound":"http://wotd.transparent.com/swedish/level-1/sound/00413_WOTD_Swedish_Words.mp3","translation":"school year","fnphrase":"Varje höst börjar ett nytt lÀsÄr.","phrasesound":"http://wotd.transparent.com/swedish/level-1/sound/00413_WOTD_Swedish_Sentences.mp3","enphrase":"Every fall, the school year begins anew.","wotd:transliteratedWord":"","wotd:transliteratedSentence":"","notes":""}}},"fitbit":{},"ftse":[{"name":"Standard Life Plc","price":"365.55","change_amount":"+10.15","change_percent":"+2.75%"},{"name":"Reckitt Benckiser Group Plc","price":"7,448.50","change_amount":"+100.00","change_percent":"+1.34%"},{"name":"Taylor Wimpey Plc","price":"196.45","change_amount":"+1.89","change_percent":"+0.96%"},{"name":"Legal & General Group Plc","price":"252.70","change_amount":"+1.10","change_percent":"+0.44%"},{"name":"Kingfisher","price":"328.25","change_amount":"+1.30","change_percent":"+0.40%"},{"name":"St James's Place Plc","price":"1,069.50","change_amount":"+4.00","change_percent":"+0.38%"},{"name":"Rolls Royce Holdings Plc","price":"830.25","change_amount":"+2.00","change_percent":"+0.24%"},{"name":"Paddy Power Betfair Plc","price":"8,535.00","change_amount":"+10.00","change_percent":"+0.12%"},{"name":"Old Mutual Plc","price":"195.10","change_amount":"+0.20","change_percent":"+0.10%"},{"name":"Next Plc","price":"4,196.00","change_amount":"+4.00","change_percent":"+0.10%"}],"quotes":{"quote":"I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth.","author":"Umberto Eco","category":"Famous"}},"expire":3600000,"date":{"year":2017,"month":4,"day":18}} +{"last":1492690512307,"data":{"trains":{"last":"2017-04-20T12:15:01.311Z","data":[]},"weather":{"currently":"Mostly Cloudy. Around 8 to 12 degrees.","today":"Mostly cloudy throughout the day.","later":"Mixed precipitation today through Wednesday, with temperatures falling to 7°C on Tuesday.","alerts":{},"data":{"latitude":55.95,"longitude":-4.566667,"timezone":"Europe/London","offset":1,"currently":{"time":1492690238,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","nearestStormDistance":80,"nearestStormBearing":204,"precipIntensity":0,"precipProbability":0,"temperature":11.03,"apparentTemperature":11.03,"dewPoint":7.82,"humidity":0.81,"windSpeed":9,"windBearing":236,"visibility":8.48,"cloudCover":0.66,"pressure":1033.39,"ozone":304.31},"minutely":{"summary":"Mostly cloudy for the hour.","icon":"partly-cloudy-day","data":[{"time":1492690200,"precipIntensity":0,"precipProbability":0},{"time":1492690260,"precipIntensity":0,"precipProbability":0},{"time":1492690320,"precipIntensity":0,"precipProbability":0},{"time":1492690380,"precipIntensity":0,"precipProbability":0},{"time":1492690440,"precipIntensity":0,"precipProbability":0},{"time":1492690500,"precipIntensity":0,"precipProbability":0},{"time":1492690560,"precipIntensity":0,"precipProbability":0},{"time":1492690620,"precipIntensity":0,"precipProbability":0},{"time":1492690680,"precipIntensity":0,"precipProbability":0},{"time":1492690740,"precipIntensity":0,"precipProbability":0},{"time":1492690800,"precipIntensity":0,"precipProbability":0},{"time":1492690860,"precipIntensity":0,"precipProbability":0},{"time":1492690920,"precipIntensity":0,"precipProbability":0},{"time":1492690980,"precipIntensity":0,"precipProbability":0},{"time":1492691040,"precipIntensity":0,"precipProbability":0},{"time":1492691100,"precipIntensity":0,"precipProbability":0},{"time":1492691160,"precipIntensity":0,"precipProbability":0},{"time":1492691220,"precipIntensity":0,"precipProbability":0},{"time":1492691280,"precipIntensity":0,"precipProbability":0},{"time":1492691340,"precipIntensity":0,"precipProbability":0},{"time":1492691400,"precipIntensity":0,"precipProbability":0},{"time":1492691460,"precipIntensity":0,"precipProbability":0},{"time":1492691520,"precipIntensity":0,"precipProbability":0},{"time":1492691580,"precipIntensity":0,"precipProbability":0},{"time":1492691640,"precipIntensity":0,"precipProbability":0},{"time":1492691700,"precipIntensity":0,"precipProbability":0},{"time":1492691760,"precipIntensity":0,"precipProbability":0},{"time":1492691820,"precipIntensity":0,"precipProbability":0},{"time":1492691880,"precipIntensity":0,"precipProbability":0},{"time":1492691940,"precipIntensity":0,"precipProbability":0},{"time":1492692000,"precipIntensity":0,"precipProbability":0},{"time":1492692060,"precipIntensity":0,"precipProbability":0},{"time":1492692120,"precipIntensity":0,"precipProbability":0},{"time":1492692180,"precipIntensity":0,"precipProbability":0},{"time":1492692240,"precipIntensity":0,"precipProbability":0},{"time":1492692300,"precipIntensity":0,"precipProbability":0},{"time":1492692360,"precipIntensity":0,"precipProbability":0},{"time":1492692420,"precipIntensity":0,"precipProbability":0},{"time":1492692480,"precipIntensity":0,"precipProbability":0},{"time":1492692540,"precipIntensity":0,"precipProbability":0},{"time":1492692600,"precipIntensity":0,"precipProbability":0},{"time":1492692660,"precipIntensity":0,"precipProbability":0},{"time":1492692720,"precipIntensity":0,"precipProbability":0},{"time":1492692780,"precipIntensity":0,"precipProbability":0},{"time":1492692840,"precipIntensity":0,"precipProbability":0},{"time":1492692900,"precipIntensity":0,"precipProbability":0},{"time":1492692960,"precipIntensity":0,"precipProbability":0},{"time":1492693020,"precipIntensity":0,"precipProbability":0},{"time":1492693080,"precipIntensity":0,"precipProbability":0},{"time":1492693140,"precipIntensity":0,"precipProbability":0},{"time":1492693200,"precipIntensity":0,"precipProbability":0},{"time":1492693260,"precipIntensity":0,"precipProbability":0},{"time":1492693320,"precipIntensity":0,"precipProbability":0},{"time":1492693380,"precipIntensity":0,"precipProbability":0},{"time":1492693440,"precipIntensity":0,"precipProbability":0},{"time":1492693500,"precipIntensity":0,"precipProbability":0},{"time":1492693560,"precipIntensity":0,"precipProbability":0},{"time":1492693620,"precipIntensity":0,"precipProbability":0},{"time":1492693680,"precipIntensity":0,"precipProbability":0},{"time":1492693740,"precipIntensity":0,"precipProbability":0},{"time":1492693800,"precipIntensity":0,"precipProbability":0}]},"hourly":{"summary":"Light rain starting tomorrow morning.","icon":"rain","data":[{"time":1492689600,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":11.03,"apparentTemperature":11.03,"dewPoint":7.69,"humidity":0.8,"windSpeed":8.95,"windBearing":236,"visibility":8.07,"cloudCover":0.6,"pressure":1033.42,"ozone":304.29},{"time":1492693200,"summary":"Overcast","icon":"cloudy","precipIntensity":0,"precipProbability":0,"temperature":11.47,"apparentTemperature":11.47,"dewPoint":8.83,"humidity":0.84,"windSpeed":9.21,"windBearing":236,"visibility":10,"cloudCover":0.94,"pressure":1033.27,"ozone":304.38},{"time":1492696800,"summary":"Overcast","icon":"cloudy","precipIntensity":0,"precipProbability":0,"temperature":11.83,"apparentTemperature":11.83,"dewPoint":9.23,"humidity":0.84,"windSpeed":9.37,"windBearing":237,"visibility":10,"cloudCover":0.96,"pressure":1033.08,"ozone":304.51},{"time":1492700400,"summary":"Overcast","icon":"cloudy","precipIntensity":0,"precipProbability":0,"temperature":12.03,"apparentTemperature":12.03,"dewPoint":9.39,"humidity":0.84,"windSpeed":9.37,"windBearing":236,"visibility":10,"cloudCover":0.97,"pressure":1032.87,"ozone":304.94},{"time":1492704000,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":12,"apparentTemperature":12,"dewPoint":9.56,"humidity":0.85,"windSpeed":9.03,"windBearing":234,"visibility":10,"cloudCover":0.91,"pressure":1032.67,"ozone":305.76},{"time":1492707600,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":11.58,"apparentTemperature":11.58,"dewPoint":9.33,"humidity":0.86,"windSpeed":8.63,"windBearing":231,"visibility":10,"cloudCover":0.84,"pressure":1032.49,"ozone":306.89},{"time":1492711200,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":11.06,"apparentTemperature":11.06,"dewPoint":9.07,"humidity":0.88,"windSpeed":8.35,"windBearing":229,"visibility":10,"cloudCover":0.79,"pressure":1032.36,"ozone":308.36},{"time":1492714800,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0.033,"precipProbability":0.02,"precipType":"rain","temperature":10.53,"apparentTemperature":10.53,"dewPoint":8.96,"humidity":0.9,"windSpeed":7.92,"windBearing":225,"visibility":10,"cloudCover":0.84,"pressure":1032.32,"ozone":309.98},{"time":1492718400,"summary":"Mostly Cloudy","icon":"partly-cloudy-night","precipIntensity":0.0838,"precipProbability":0.11,"precipType":"rain","temperature":10.1,"apparentTemperature":10.1,"dewPoint":8.94,"humidity":0.93,"windSpeed":7.7,"windBearing":221,"visibility":9.73,"cloudCover":0.89,"pressure":1032.32,"ozone":311.93},{"time":1492722000,"summary":"Drizzle","icon":"rain","precipIntensity":0.1651,"precipProbability":0.31,"precipType":"rain","temperature":9.78,"apparentTemperature":7.97,"dewPoint":8.93,"humidity":0.94,"windSpeed":7.83,"windBearing":217,"visibility":9.22,"cloudCover":0.94,"pressure":1032.26,"ozone":314.74},{"time":1492725600,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0965,"precipProbability":0.14,"precipType":"rain","temperature":9.58,"apparentTemperature":7.66,"dewPoint":8.9,"humidity":0.96,"windSpeed":8.12,"windBearing":218,"visibility":8.43,"cloudCover":0.97,"pressure":1032.07,"ozone":319.59},{"time":1492729200,"summary":"Light Rain","icon":"rain","precipIntensity":0.2769,"precipProbability":0.52,"precipType":"rain","temperature":9.43,"apparentTemperature":7.42,"dewPoint":8.82,"humidity":0.96,"windSpeed":8.38,"windBearing":218,"visibility":7.68,"cloudCover":0.98,"pressure":1031.8,"ozone":325.29},{"time":1492732800,"summary":"Overcast","icon":"cloudy","precipIntensity":0.1067,"precipProbability":0.16,"precipType":"rain","temperature":9.36,"apparentTemperature":7.26,"dewPoint":8.81,"humidity":0.96,"windSpeed":8.75,"windBearing":219,"visibility":6.75,"cloudCover":1,"pressure":1031.48,"ozone":328.89},{"time":1492736400,"summary":"Drizzle","icon":"rain","precipIntensity":0.2235,"precipProbability":0.47,"precipType":"rain","temperature":9.4,"apparentTemperature":7.24,"dewPoint":8.83,"humidity":0.96,"windSpeed":9.06,"windBearing":219,"visibility":7.38,"cloudCover":1,"pressure":1031.04,"ozone":328.8},{"time":1492740000,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0406,"precipProbability":0.03,"precipType":"rain","temperature":9.51,"apparentTemperature":7.33,"dewPoint":8.93,"humidity":0.96,"windSpeed":9.32,"windBearing":221,"visibility":7.96,"cloudCover":1,"pressure":1030.53,"ozone":326.61},{"time":1492743600,"summary":"Overcast","icon":"cloudy","precipIntensity":0.1168,"precipProbability":0.19,"precipType":"rain","temperature":9.66,"apparentTemperature":7.42,"dewPoint":9.06,"humidity":0.96,"windSpeed":9.75,"windBearing":222,"visibility":8.49,"cloudCover":1,"pressure":1030.12,"ozone":324.01},{"time":1492747200,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0533,"precipProbability":0.05,"precipType":"rain","temperature":9.79,"apparentTemperature":7.47,"dewPoint":9.14,"humidity":0.96,"windSpeed":10.38,"windBearing":226,"visibility":8.07,"cloudCover":1,"pressure":1029.88,"ozone":321.13},{"time":1492750800,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0483,"precipProbability":0.04,"precipType":"rain","temperature":9.88,"apparentTemperature":7.49,"dewPoint":9.14,"humidity":0.95,"windSpeed":10.9,"windBearing":235,"visibility":8.8,"cloudCover":1,"pressure":1029.74,"ozone":317.84},{"time":1492754400,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0483,"precipProbability":0.04,"precipType":"rain","temperature":9.99,"apparentTemperature":7.55,"dewPoint":9.14,"humidity":0.94,"windSpeed":11.34,"windBearing":241,"visibility":9.03,"cloudCover":1,"pressure":1029.69,"ozone":315.45},{"time":1492758000,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0406,"precipProbability":0.03,"precipType":"rain","temperature":10.21,"apparentTemperature":10.21,"dewPoint":9.16,"humidity":0.93,"windSpeed":11.7,"windBearing":244,"visibility":10,"cloudCover":0.99,"pressure":1029.76,"ozone":314.71},{"time":1492761600,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0432,"precipProbability":0.04,"precipType":"rain","temperature":10.54,"apparentTemperature":10.54,"dewPoint":9.26,"humidity":0.92,"windSpeed":11.96,"windBearing":245,"visibility":10,"cloudCover":0.99,"pressure":1029.92,"ozone":314.86},{"time":1492765200,"summary":"Overcast","icon":"cloudy","precipIntensity":0.0864,"precipProbability":0.12,"precipType":"rain","temperature":10.86,"apparentTemperature":10.86,"dewPoint":9.32,"humidity":0.9,"windSpeed":12.79,"windBearing":252,"visibility":10,"cloudCover":0.99,"pressure":1030.11,"ozone":314.94},{"time":1492768800,"summary":"Light Rain","icon":"rain","precipIntensity":0.2337,"precipProbability":0.49,"precipType":"rain","temperature":11.13,"apparentTemperature":11.13,"dewPoint":9.58,"humidity":0.9,"windSpeed":12.12,"windBearing":255,"visibility":10,"cloudCover":0.99,"pressure":1030.26,"ozone":314.47},{"time":1492772400,"summary":"Light Rain","icon":"rain","precipIntensity":0.4216,"precipProbability":0.58,"precipType":"rain","temperature":11.32,"apparentTemperature":11.32,"dewPoint":9.76,"humidity":0.9,"windSpeed":11.41,"windBearing":260,"visibility":10,"cloudCover":0.99,"pressure":1030.42,"ozone":313.93},{"time":1492776000,"summary":"Light Rain","icon":"rain","precipIntensity":0.508,"precipProbability":0.61,"precipType":"rain","temperature":11.43,"apparentTemperature":11.43,"dewPoint":9.84,"humidity":0.9,"windSpeed":10.83,"windBearing":266,"visibility":10,"cloudCover":1,"pressure":1030.54,"ozone":313.72},{"time":1492779600,"summary":"Light Rain","icon":"rain","precipIntensity":0.3988,"precipProbability":0.57,"precipType":"rain","temperature":11.45,"apparentTemperature":11.45,"dewPoint":9.38,"humidity":0.87,"windSpeed":10.59,"windBearing":271,"visibility":10,"cloudCover":0.83,"pressure":1030.64,"ozone":313.77},{"time":1492783200,"summary":"Drizzle","icon":"rain","precipIntensity":0.1854,"precipProbability":0.36,"precipType":"rain","temperature":11.08,"apparentTemperature":11.08,"dewPoint":8.49,"humidity":0.84,"windSpeed":10.57,"windBearing":278,"visibility":10,"cloudCover":0.82,"pressure":1030.7,"ozone":314.16},{"time":1492786800,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0.0254,"precipProbability":0.01,"precipType":"rain","temperature":10.46,"apparentTemperature":10.46,"dewPoint":7.39,"humidity":0.81,"windSpeed":10.53,"windBearing":283,"visibility":10,"cloudCover":0.8,"pressure":1030.77,"ozone":315.5},{"time":1492790400,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":9.62,"apparentTemperature":7.29,"dewPoint":6.17,"humidity":0.79,"windSpeed":10.15,"windBearing":287,"visibility":10,"cloudCover":0.75,"pressure":1030.82,"ozone":318.2},{"time":1492794000,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":8.99,"apparentTemperature":6.65,"dewPoint":5.21,"humidity":0.77,"windSpeed":9.53,"windBearing":291,"visibility":10,"cloudCover":0.69,"pressure":1030.87,"ozone":321.84},{"time":1492797600,"summary":"Mostly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":8.63,"apparentTemperature":6.32,"dewPoint":4.51,"humidity":0.75,"windSpeed":8.97,"windBearing":294,"visibility":10,"cloudCover":0.63,"pressure":1030.98,"ozone":325.82},{"time":1492801200,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":8.18,"apparentTemperature":5.96,"dewPoint":4.32,"humidity":0.77,"windSpeed":8.15,"windBearing":294,"visibility":10,"cloudCover":0.58,"pressure":1031.22,"ozone":330.4},{"time":1492804800,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":7.64,"apparentTemperature":5.5,"dewPoint":4.05,"humidity":0.78,"windSpeed":7.35,"windBearing":293,"visibility":10,"cloudCover":0.51,"pressure":1031.56,"ozone":335.32},{"time":1492808400,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":6.95,"apparentTemperature":4.86,"dewPoint":3.61,"humidity":0.79,"windSpeed":6.68,"windBearing":291,"visibility":10,"cloudCover":0.44,"pressure":1031.85,"ozone":339.17},{"time":1492812000,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":6.3,"apparentTemperature":4.17,"dewPoint":3.12,"humidity":0.8,"windSpeed":6.4,"windBearing":291,"visibility":10,"cloudCover":0.38,"pressure":1032.04,"ozone":341.16},{"time":1492815600,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":5.64,"apparentTemperature":3.47,"dewPoint":2.61,"humidity":0.81,"windSpeed":6.11,"windBearing":292,"visibility":10,"cloudCover":0.33,"pressure":1032.17,"ozone":342.08},{"time":1492819200,"summary":"Partly Cloudy","icon":"partly-cloudy-night","precipIntensity":0,"precipProbability":0,"temperature":4.83,"apparentTemperature":2.61,"dewPoint":1.94,"humidity":0.82,"windSpeed":5.83,"windBearing":291,"visibility":10,"cloudCover":0.27,"pressure":1032.23,"ozone":342.81},{"time":1492822800,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":4.48,"apparentTemperature":2.24,"dewPoint":1.65,"humidity":0.82,"windSpeed":5.72,"windBearing":291,"visibility":10,"cloudCover":0.2,"pressure":1032.18,"ozone":343.56},{"time":1492826400,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":4.51,"apparentTemperature":2.31,"dewPoint":1.72,"humidity":0.82,"windSpeed":5.61,"windBearing":290,"visibility":10,"cloudCover":0.13,"pressure":1032.08,"ozone":344.12},{"time":1492830000,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":4.42,"apparentTemperature":2.24,"dewPoint":1.69,"humidity":0.82,"windSpeed":5.53,"windBearing":289,"visibility":10,"cloudCover":0.08,"pressure":1032.04,"ozone":344.77},{"time":1492833600,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":4.63,"apparentTemperature":2.56,"dewPoint":1.89,"humidity":0.82,"windSpeed":5.34,"windBearing":287,"visibility":10,"cloudCover":0.11,"pressure":1032.08,"ozone":345.92},{"time":1492837200,"summary":"Clear","icon":"clear-night","precipIntensity":0,"precipProbability":0,"temperature":4.68,"apparentTemperature":2.69,"dewPoint":1.94,"humidity":0.82,"windSpeed":5.15,"windBearing":286,"visibility":10,"cloudCover":0.17,"pressure":1032.16,"ozone":347.15},{"time":1492840800,"summary":"Clear","icon":"clear-day","precipIntensity":0,"precipProbability":0,"temperature":4.62,"apparentTemperature":2.71,"dewPoint":1.79,"humidity":0.82,"windSpeed":4.98,"windBearing":286,"visibility":10,"cloudCover":0.24,"pressure":1032.23,"ozone":347.53},{"time":1492844400,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":5.4,"apparentTemperature":3.44,"dewPoint":1.84,"humidity":0.78,"windSpeed":5.42,"windBearing":292,"visibility":10,"cloudCover":0.33,"pressure":1032.3,"ozone":346.55},{"time":1492848000,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":6.28,"apparentTemperature":4.32,"dewPoint":1.84,"humidity":0.73,"windSpeed":5.86,"windBearing":298,"visibility":10,"cloudCover":0.45,"pressure":1032.37,"ozone":344.71},{"time":1492851600,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":7.36,"apparentTemperature":5.43,"dewPoint":2.01,"humidity":0.69,"windSpeed":6.42,"windBearing":301,"visibility":10,"cloudCover":0.53,"pressure":1032.36,"ozone":342.59},{"time":1492855200,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":8.29,"apparentTemperature":6.43,"dewPoint":2.39,"humidity":0.66,"windSpeed":6.82,"windBearing":294,"visibility":10,"cloudCover":0.58,"pressure":1032.26,"ozone":340.08},{"time":1492858800,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":9.31,"apparentTemperature":7.53,"dewPoint":2.86,"humidity":0.64,"windSpeed":7.27,"windBearing":287,"visibility":10,"cloudCover":0.56,"pressure":1032.08,"ozone":337.29},{"time":1492862400,"summary":"Partly Cloudy","icon":"partly-cloudy-day","precipIntensity":0,"precipProbability":0,"temperature":10.37,"apparentTemperature":10.37,"dewPoint":3.44,"humidity":0.62,"windSpeed":7.8,"windBearing":282,"visibility":10,"cloudCover":0.57,"pressure":1031.83,"ozone":335.16}]},"daily":{"summary":"Mixed precipitation today through Wednesday, with temperatures falling to 7°C on Tuesday.","icon":"rain","data":[{"time":1492642800,"summary":"Mostly cloudy throughout the day.","icon":"partly-cloudy-day","sunriseTime":1492664472,"sunsetTime":1492716917,"moonPhase":0.79,"precipIntensity":0.0356,"precipIntensityMax":0.2591,"precipIntensityMaxTime":1492664400,"precipProbability":0.51,"precipType":"rain","temperatureMin":8.92,"temperatureMinTime":1492664400,"temperatureMax":12.03,"temperatureMaxTime":1492700400,"apparentTemperatureMin":7.3,"apparentTemperatureMinTime":1492668000,"apparentTemperatureMax":12.03,"apparentTemperatureMaxTime":1492700400,"dewPoint":8.47,"humidity":0.88,"windSpeed":7.61,"windBearing":226,"visibility":8.15,"cloudCover":0.75,"pressure":1032.98,"ozone":304.55},{"time":1492729200,"summary":"Light rain until afternoon.","icon":"rain","sunriseTime":1492750726,"sunsetTime":1492803440,"moonPhase":0.82,"precipIntensity":0.1194,"precipIntensityMax":0.508,"precipIntensityMaxTime":1492776000,"precipProbability":0.61,"precipType":"rain","temperatureMin":6.3,"temperatureMinTime":1492812000,"temperatureMax":11.45,"temperatureMaxTime":1492779600,"apparentTemperatureMin":4.17,"apparentTemperatureMinTime":1492812000,"apparentTemperatureMax":11.45,"apparentTemperatureMaxTime":1492779600,"dewPoint":7.71,"humidity":0.88,"windSpeed":8.87,"windBearing":257,"visibility":10,"cloudCover":0.85,"pressure":1030.7,"ozone":322.08},{"time":1492815600,"summary":"Partly cloudy throughout the day.","icon":"partly-cloudy-day","sunriseTime":1492836981,"sunsetTime":1492889962,"moonPhase":0.85,"precipIntensity":0,"precipIntensityMax":0,"precipProbability":0,"temperatureMin":4.42,"temperatureMinTime":1492830000,"temperatureMax":11.26,"temperatureMaxTime":1492869600,"apparentTemperatureMin":2.24,"apparentTemperatureMinTime":1492830000,"apparentTemperatureMax":11.26,"apparentTemperatureMaxTime":1492869600,"dewPoint":2.59,"humidity":0.73,"windSpeed":6.71,"windBearing":284,"visibility":10,"cloudCover":0.38,"pressure":1031.24,"ozone":339.41},{"time":1492902000,"summary":"Drizzle in the morning and afternoon.","icon":"rain","sunriseTime":1492923237,"sunsetTime":1492976485,"moonPhase":0.89,"precipIntensity":0.0838,"precipIntensityMax":0.188,"precipIntensityMaxTime":1492959600,"precipProbability":0.37,"precipType":"rain","temperatureMin":5.04,"temperatureMinTime":1492912800,"temperatureMax":11.03,"temperatureMaxTime":1492956000,"apparentTemperatureMin":3.52,"apparentTemperatureMinTime":1492984800,"apparentTemperatureMax":11.03,"apparentTemperatureMaxTime":1492956000,"dewPoint":5.25,"humidity":0.84,"windSpeed":9.09,"windBearing":257,"visibility":10,"cloudCover":0.75,"pressure":1020.37,"ozone":344.63},{"time":1492988400,"summary":"Light rain starting in the afternoon, continuing until evening.","icon":"rain","sunriseTime":1493009493,"sunsetTime":1493063007,"moonPhase":0.92,"precipIntensity":0.0813,"precipIntensityMax":0.2921,"precipIntensityMaxTime":1493049600,"precipProbability":0.53,"precipType":"rain","temperatureMin":0.44,"temperatureMinTime":1493071200,"temperatureMax":7.93,"temperatureMaxTime":1493046000,"apparentTemperatureMin":-4.22,"apparentTemperatureMinTime":1493071200,"apparentTemperatureMax":4.66,"apparentTemperatureMaxTime":1493046000,"dewPoint":0.63,"humidity":0.74,"windSpeed":9.85,"windBearing":314,"visibility":10,"cloudCover":0.44,"pressure":1016.71,"ozone":397.6},{"time":1493074800,"summary":"Flurries in the morning and evening.","icon":"snow","sunriseTime":1493095751,"sunsetTime":1493149530,"moonPhase":0.96,"precipIntensity":0.0406,"precipIntensityMax":0.094,"precipIntensityMaxTime":1493136000,"precipProbability":0.13,"precipType":"snow","precipAccumulation":0.757,"temperatureMin":-2.11,"temperatureMinTime":1493085600,"temperatureMax":7.38,"temperatureMaxTime":1493125200,"apparentTemperatureMin":-6.92,"apparentTemperatureMinTime":1493082000,"apparentTemperatureMax":3.61,"apparentTemperatureMaxTime":1493125200,"dewPoint":-2.38,"humidity":0.73,"windSpeed":11.96,"windBearing":345,"visibility":10,"cloudCover":0.44,"pressure":1019.09,"ozone":418.46},{"time":1493161200,"summary":"Mixed precipitation until afternoon, starting again in the evening.","icon":"snow","sunriseTime":1493182010,"sunsetTime":1493236052,"moonPhase":0.01,"precipIntensity":0.0864,"precipIntensityMax":0.1981,"precipIntensityMaxTime":1493197200,"precipProbability":0.39,"precipType":"snow","precipAccumulation":1.588,"temperatureMin":-3.77,"temperatureMinTime":1493172000,"temperatureMax":8.53,"temperatureMaxTime":1493218800,"apparentTemperatureMin":-8.23,"apparentTemperatureMinTime":1493172000,"apparentTemperatureMax":6.26,"apparentTemperatureMaxTime":1493218800,"dewPoint":-2.32,"humidity":0.75,"windSpeed":5.54,"windBearing":324,"cloudCover":0.43,"pressure":1021.77,"ozone":408.96},{"time":1493247600,"summary":"Mostly cloudy throughout the day.","icon":"partly-cloudy-day","sunriseTime":1493268270,"sunsetTime":1493322575,"moonPhase":0.04,"precipIntensity":0.0406,"precipIntensityMax":0.0864,"precipIntensityMaxTime":1493330400,"precipProbability":0.12,"precipType":"rain","temperatureMin":-3.74,"temperatureMinTime":1493258400,"temperatureMax":9.2,"temperatureMaxTime":1493301600,"apparentTemperatureMin":-3.74,"apparentTemperatureMinTime":1493258400,"apparentTemperatureMax":7.33,"apparentTemperatureMaxTime":1493301600,"dewPoint":-0.47,"humidity":0.78,"windSpeed":3.65,"windBearing":263,"cloudCover":0.5,"pressure":1024.32,"ozone":385.19}]},"flags":{"sources":["datapoint","gfs","cmc","nam","rap","sref","fnmoc","isd","madis","nearest-precip","metwarn","darksky"],"datapoint-stations":["uk-301777","uk-3134","uk-322052","uk-322595","uk-322659","uk-350056","uk-351269","uk-351289","uk-351397","uk-351465","uk-352102","uk-352379","uk-352954","uk-354999","uk-371524","uk-371606"],"isd-stations":["031070-99999","031160-99999","031200-99999","031290-99999","031330-99999","031340-99999","031350-99999","031360-99999","031380-99999","031390-99999","031400-99999","031430-99999","031450-99999","031480-99999","031490-99999","031520-99999"],"madis-stations":["AU945","C9560","C9739","D4018","E0915","E3381","EGPF","EGPK"],"units":"uk2"}}},"history":["On 20th April 1918, Mora Dickson, Scottish author, painter and campaigner, was born.","In 1958, Mora and her husband, Alec, had the idea for the Voluntary Service Overseas, or VSO, scheme, in response to the ending of National Service. They ran it from their London home until 1962, when a dispute led to Alec's replacement as director. This prompted them to set up the Community Service Volunteers, or CSV, a volunteer programme focussing on Britain. In contrast to the highly selective VSO, CSV's philosophy was to take all comers. They were reunited with VSO in the 1990s, and Mora was elected an honorary vice-president.","On 20th April, 1934, the first public meeting of the Scottish National Party was held.","The meeting was held in the Central Hall, Tollcross, Edinburgh with Compton Mackenzie, the Lord Rector of Glasgow University, and W. Oliver Brown, prospective Nationalist candidate for East Renfrewshire, as guest speakers. The Scottish National Party was formed by the amalgamation of The National Party of Scotland and The Scottish Party.","MIT demonstrates its Whirlwind machine on Edward R. Murrow's See It Now television series. Project director Jay Forrester describes the computer as a \"reliable operating system,\" running 35 hours a week at 90-percent utility using an electrostatic tube memory that stores up to 2,048 16-digit words. The machine used 4,500 vacuum tubes and 14,800 diodes, taking up a total of 3,100 square feet."],"today":"Thursday April 20, 2017 - The 109th day of 2017, and there are 255 days until the end of the year","tv":{"entries":[{"summary":"Archer 8x3 - Archer Dreamland: Jane Doe","dtstart":"2017-04-20T02:00:00.000Z","dtend":"2017-04-20T02:30:00.000Z","description":"Archer tries to escape from jail with the help of a crazed","timeStart":"3:00:00","timeEnd":"3:30:00","duration":"30 minutes","combined":"3:00:00 - 'Archer 8x3 - Archer Dreamland: Jane Doe, 30 minutes","recur":null,"long":"Thursday, 3:00:00 - ","longcombined":"Thursday, 3:00:00 - Archer 8x3 - Archer Dreamland: Jane Doe, 30 minutes"}]},"cal":{"today":[{"summary":"Glasgow\\, United Kingdom\\, April 2017","dtstart":"2017-04-19T23:00:00.000Z","dtend":"2017-04-20T23:00:00.000Z","description":"Martin Donnelly is in Glasgow\\, United Kingdom from Apr 20\\, 2","timeStart":"0:00:00","timeEnd":"0:00:00","duration":"1 day","combined":"0:00:00 - 'Glasgow\\, United Kingdom\\, April 2017, 1 day","recur":null,"long":"Thursday, 0:00:00 - ","longcombined":"Thursday, 0:00:00 - Glasgow\\, United Kingdom\\, April 2017, 1 day"},{"summary":"SCOTRAIL - Haymarket (Edinburgh) to Glasgow Queen Street","dtstart":"2017-04-20T16:35:00.000Z","dtend":"2017-04-20T17:23:00.000Z","description":"View and/or edit details in TripIt : https://www.tripit.com/tr","timeStart":"17:35:00","timeEnd":"18:23:00","duration":"48 minutes","combined":"17:35:00 - 'SCOTRAIL - Haymarket (Edinburgh) to Glasgow Queen Street, 48 minutes","recur":null,"long":"Thursday, 17:35:00 - ","longcombined":"Thursday, 17:35:00 - SCOTRAIL - Haymarket (Edinburgh) to Glasgow Queen Street, 48 minutes"},{"summary":"SCOTRAIL - Glasgow Queen Street to Dumbarton East","dtstart":"2017-04-20T17:36:00.000Z","dtend":"2017-04-20T18:10:00.000Z","description":"View and/or edit details in TripIt : https://www.tripit.com/tr","timeStart":"18:36:00","timeEnd":"19:10:00","duration":"34 minutes","combined":"18:36:00 - 'SCOTRAIL - Glasgow Queen Street to Dumbarton East, 34 minutes","recur":null,"long":"Thursday, 18:36:00 - ","longcombined":"Thursday, 18:36:00 - SCOTRAIL - Glasgow Queen Street to Dumbarton East, 34 minutes"}],"tomorrow":[{"summary":"Update Timesheet","dtstart":"2017-04-21T14:30:00.387Z","dtend":"2017-04-21T15:30:00.387Z","description":"Update the timesheet using https://outsauce.backofficeportal.co","timeStart":"15:30:00","timeEnd":"16:30:00","duration":"1 hour","combined":"15:30:00 - 'Update Timesheet, 1 hour","recur":"FREQ=WEEKLY;COUNT=15;BYDAY=FR","long":"Friday, 15:30:00 - ","longcombined":"Friday, 15:30:00 - Update Timesheet, 1 hour"}],"week":[{"summary":"St. George's Day","dtstart":"2017-04-22T23:00:00.000Z","dtend":"2017-04-23T23:00:00.000Z","description":"","timeStart":"0:00:00","timeEnd":"0:00:00","duration":"1 day","combined":"0:00:00 - 'St. George's Day, 1 day","recur":null,"long":"Sunday, 0:00:00 - ","longcombined":"Sunday, 0:00:00 - St. George's Day, 1 day"},{"summary":"St. George's Day-C (E)","dtstart":"2017-04-22T23:00:00.477Z","dtend":"2017-04-23T23:00:00.477Z","description":"\\n\\n","timeStart":"0:00:00","timeEnd":"0:00:00","duration":"1 day","combined":"0:00:00 - 'St. George's Day-C (E), 1 day","recur":"FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=23","long":"Sunday, 0:00:00 - ","longcombined":"Sunday, 0:00:00 - St. George's Day-C (E), 1 day"}]},"swedish":{"xml":{"$":{"xmlns:wotd":"http://www.transparent.com/word-of-the-day/"},"words":{"date":"04-20-2017","langname":"Swedish","wordtype":"noun","word":"(en) anekdot","wordsound":"http://wotd.transparent.com/swedish/level-1/sound/00415_WOTD_Swedish_Words.mp3","translation":"anecdote","fnphrase":"Min farfar kan hundratals anekdoter.","phrasesound":"http://wotd.transparent.com/swedish/level-1/sound/00415_WOTD_Swedish_Sentences.mp3","enphrase":"My grandfather knows hundreds of anecdotes.","wotd:transliteratedWord":"","wotd:transliteratedSentence":"","notes":""}}},"fitbit":{},"ftse":[{"name":"Smurfit Kappa Group Plc","price":"1,965.00","change_amount":"+26.59","change_percent":"+1.34%"},{"name":"Unilever Plc","price":"3,986.25","change_amount":"+49.00","change_percent":"+1.24%"},{"name":"GKN Plc","price":"348.75","change_amount":"+4.20","change_percent":"+1.22%"},{"name":"Pearson Plc","price":"625.75","change_amount":"+7.50","change_percent":"+1.21%"},{"name":"St James's Place Plc","price":"1,068.50","change_amount":"+11.00","change_percent":"+1.04%"},{"name":"Royal Bank of Scotland Group Plc","price":"238.05","change_amount":"+2.40","change_percent":"+1.02%"},{"name":"Mondi Plc","price":"1,930.50","change_amount":"+16.88","change_percent":"+0.87%"},{"name":"Reckitt Benckiser Group Plc","price":"7,304.50","change_amount":"+59.00","change_percent":"+0.81%"},{"name":"Lloyds Banking Group Plc","price":"64.16","change_amount":"+0.49","change_percent":"+0.77%"},{"name":"WPP Plc","price":"1,699.50","change_amount":"+13.00","change_percent":"+0.77%"}],"quotes":{"quote":"A friendship founded on business is better than a business founded on friendship.","author":"John D. Rockefeller","category":"Famous"}},"expire":3600000,"date":{"year":2017,"month":4,"day":20}} diff --git a/lib/password.js b/lib/password.js index dc44802..f9b8656 100644 --- a/lib/password.js +++ b/lib/password.js @@ -1,68 +1,68 @@ var http = require('http'); Array.prototype.random = function () { - return this[Math.floor((Math.random() * this.length))]; + return this[Math.floor((Math.random() * this.length))]; }; var alpha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; var whitespace = ['.', '~', '#', '!', '$', '+', '-', '+']; var numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; -var left = ["Alabama", - "Alaska", - "Arizona", - "Maryland", - "Nevada", - "Mexico", - "Texas", - "Utah", - "Glasgow", - "Inverness", - "Edinburgh", - "Dumbarton", - "Balloch", - "Renton", - "Cardross", - "Dundee", - "Paisley", - "Hamilton", - "Greenock", - "Falkirk", - "Irvine", - "Renfrew", - "Erskine", - "London", - "Hammersmith", - "Islington", - "Silver", "Black", "Yellow", "Purple", 'White', 'Pink', 'Red', 'Orange','Brown','Green','Blue','Amber','Aqua','Azure','Bronze','Coral','Copper','Crimson','Cyan','Ginger','Gold','Indigo','Jade' +var left = ['Alabama', + 'Alaska', + 'Arizona', + 'Maryland', + 'Nevada', + 'Mexico', + 'Texas', + 'Utah', + 'Glasgow', + 'Inverness', + 'Edinburgh', + 'Dumbarton', + 'Balloch', + 'Renton', + 'Cardross', + 'Dundee', + 'Paisley', + 'Hamilton', + 'Greenock', + 'Falkirk', + 'Irvine', + 'Renfrew', + 'Erskine', + 'London', + 'Hammersmith', + 'Islington', + 'Silver', 'Black', 'Yellow', 'Purple', 'White', 'Pink', 'Red', 'Orange', 'Brown', 'Green', 'Blue', 'Amber', 'Aqua', 'Azure', 'Bronze', 'Coral', 'Copper', 'Crimson', 'Cyan', 'Ginger', 'Gold', 'Indigo', 'Jade' ]; -var right = ['Aganju', 'Cygni', 'Akeron', 'Antares', 'Aragoth', 'Ardus', 'Carpenter', 'Cooper', 'Dahin', 'Capella', 'Endriago', 'Gallina', 'Fenris', 'Freya', 'Glenn', 'Grissom', 'Jotunheim', 'Kailaasa', 'Lagarto', 'Muspelheim', 'Nifleheim', 'Primus', 'Vega', 'Ragnarok', 'Shepard', 'Slayton', 'Tarsis', 'Mercury', 'Venus', 'Mars', 'Earth', 'Terra', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto', 'Europa', 'Ganymede', 'Callisto', 'Titan', 'Juno', 'Eridanus', 'Scorpius', 'Crux', 'Cancer', 'Taurus', 'Lyra', 'Andromeda', 'Virgo', 'Aquarius', 'Cygnus', 'Corvus', 'Taurus', 'Draco', 'Perseus', 'Pegasus', 'Gemini', 'Columbia', 'Bootes', 'Orion', 'Deneb', 'Merope', 'Agate','Amber','Beryl','Calcite','Citrine','Coral','Diamond','Emerald','Garnet','Jade','Lapis','Moonstone','Obsidian','Onyx','Opal','Pearl','Quartz','Ruby','Sapphire','Topaz','Iron','Lead','Nickel','Copper','Zinc','Tin','Manes','Argon','Neon','Alpha','Bravo','Charlie','Delta','Echo','Foxtrot','Golf','Hotel','India','Juliett','Kilo','Lima','Mike','November','Oscar','Papa','Quebec','Romeo','Sierra','Tango','Uniform','Victor','Whisky','Xray','Yankee','Zulu']; +var right = ['Aganju', 'Cygni', 'Akeron', 'Antares', 'Aragoth', 'Ardus', 'Carpenter', 'Cooper', 'Dahin', 'Capella', 'Endriago', 'Gallina', 'Fenris', 'Freya', 'Glenn', 'Grissom', 'Jotunheim', 'Kailaasa', 'Lagarto', 'Muspelheim', 'Nifleheim', 'Primus', 'Vega', 'Ragnarok', 'Shepard', 'Slayton', 'Tarsis', 'Mercury', 'Venus', 'Mars', 'Earth', 'Terra', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto', 'Europa', 'Ganymede', 'Callisto', 'Titan', 'Juno', 'Eridanus', 'Scorpius', 'Crux', 'Cancer', 'Taurus', 'Lyra', 'Andromeda', 'Virgo', 'Aquarius', 'Cygnus', 'Corvus', 'Taurus', 'Draco', 'Perseus', 'Pegasus', 'Gemini', 'Columbia', 'Bootes', 'Orion', 'Deneb', 'Merope', 'Agate', 'Amber', 'Beryl', 'Calcite', 'Citrine', 'Coral', 'Diamond', 'Emerald', 'Garnet', 'Jade', 'Lapis', 'Moonstone', 'Obsidian', 'Onyx', 'Opal', 'Pearl', 'Quartz', 'Ruby', 'Sapphire', 'Topaz', 'Iron', 'Lead', 'Nickel', 'Copper', 'Zinc', 'Tin', 'Manes', 'Argon', 'Neon', 'Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot', 'Golf', 'Hotel', 'India', 'Juliett', 'Kilo', 'Lima', 'Mike', 'November', 'Oscar', 'Papa', 'Quebec', 'Romeo', 'Sierra', 'Tango', 'Uniform', 'Victor', 'Whisky', 'Xray', 'Yankee', 'Zulu']; var numberCluster = function () { - return numbers.random() + numbers.random() + numbers.random(); + return numbers.random() + numbers.random() + numbers.random(); }; var randomAmount = function (i) { - var str = ''; + var str = ''; - for (var t = 0; t < i; t++) { - str = str + alpha.random(); - } + for (var t = 0; t < i; t++) { + str = str + alpha.random(); + } - return str; + return str; }; module.exports = { - generate: function (req, res) { - var reply = { - long: (left.random() + ' ' + right.random() + ' ' + numberCluster() + ' ' + numberCluster()).split(' ').join(whitespace.random()), - short: randomAmount(10) - }; + generate: function (req, res) { + var reply = { + long: (left.random() + ' ' + right.random() + ' ' + numberCluster() + ' ' + numberCluster()).split(' ').join(whitespace.random()), + short: randomAmount(10) + }; - res.setHeader('Content-Type', 'application/json'); - res.end(JSON.stringify(reply)); - } + res.setHeader('Content-Type', 'application/json'); + res.end(JSON.stringify(reply)); + } }; diff --git a/views/pages/slackV2-min.ejs b/views/pages/slackV2-min.ejs index 30cca5d..0213bbf 100644 --- a/views/pages/slackV2-min.ejs +++ b/views/pages/slackV2-min.ejs @@ -70,10 +70,11 @@
  • AJAX Endpoints
  • WebSSH
  • Jade Tester
  • - -
  • - +
    + +
    Something
    +
    Bitcoin
    @@ -381,6 +382,7 @@ w.glqhymView = new TrainView({model: new TrainModel({from: 'glq', to: 'hym'})}); w.hymglqView = new TrainView({model: new TrainModel({from: 'hym', to: 'glq'})}); + w.passwords = new PasswordView(); })(window); diff --git a/views/pages/slackV2.ejs b/views/pages/slackV2.ejs index 2caf38a..160f6e7 100644 --- a/views/pages/slackV2.ejs +++ b/views/pages/slackV2.ejs @@ -71,11 +71,11 @@
  • WebSSH
  • Jade Tester
  • -
  • - -
  • - +
    + +
    Something
    +
    Bitcoin
    @@ -382,6 +382,7 @@ +