Scripting a Live Weather Display in vMix

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello everyone welcome back to streaming alchemy i'm john mahoney and on today's show we're going to be using scripting traditional vmix scripting to populate a live weather map for a multi-day forecast but before we get to that i'd like to invite everybody if you have any questions have any feedback please just post them in the comments below we'd love to respond to you right here during the show also if you would like to join us for the show uh you can come and be part of the program audio video here in the studio so just connect to the link it's also in the show notes and uh somebody here will get you on air and we can discuss any sort of topic you want around what uh we're doing here so let's get started uh first we just i just want to say i see rudy angles join so rudy thank you for coming in and joining us for the live show definitely appreciate that so let's start by looking at what we're going to create so i've taken in vmix and i put together a title that will uh populate off of a set of web-based data and provide a weather map with a five-day forecast and so that that looks like this over here so we can switch to that so what we have is we have information coming in from each day for each day and we are going through that and pulling out specific elements of that data and populating it into a gt title to fill in essentially this entire screen and we have the ability to swap around so i could go over and pick what's the weather like in berlin or anchorage alaska so we set this up so we can move around as well very easily and we'll cover all this by doing some scripting but before we get into the actual scripting which is probably you know the interesting part for for this show i want to cover a few other things so so first we're using to get this weather data we're using a site called open weather i believe the url is openweathermap.org so this actually has both free and paid subscriptions that open up different api capabilities and different request rates so with the free account which is what we set up for this show we can do up to a thousand requests a day so that was fine for what we wanted to do for demonstration purposes but if we were doing this professionally we would definitely want to do something with one of their paid programs which i believe give you up to 3000 requests per minute so definitely covers anything you would need on that front and the great thing about open weather besides the fact that they they do make a lot of free open apis for you to use for doing these types of productions they have a whole range of api types here so you can do things which get the current weather get uh everything about the weather in a single call that's their one call api uh they also do like long-range forecasts so a lot of different things are in here and it can come back in either json or xml format now when we started the show we were originally looking at doing it in json as a way to introduce that as a new data type to bring in but we just couldn't find enough supported calls inside of the earlier versions of net that are supported by vmix so we instead switched this over to do it in xml but uh hopefully you know even though we're not covering json we'll get to do that in a another show in the future with something that that works more compatibly with what we wanted to demo so uh definitely i would check these folks out i think uh open weather looks like a a great site if this is something that you could be using in your productions so uh the other piece is we're taking this data in and we're populating a title template so let me go over and open gt title designer here and so this is the template that we're populating and we've gone through uh gt title designer before so i'm not going to spend a huge amount of time here but it's definitely you know worth understanding how this is set up for us to leverage it inside of the scripting so the first thing we did is we actually built so let me just actually start to shut some of these things off we set things up as layers here and so we can we can treat them as as big blocks so the first thing we did is we set up a background and this background is is basically set up as we have the location which is the label up here so when we call up a weather forecast we will be putting the location the name of the location that that forecast is for up in that upper right hand corner we also have a background here so the background is just these clouds here and that's something that you can easily replace or do something dynamically and i will show that uh and then we just have this overlay with the five-day forecast that we put in so we we layered these things in as our background and then for each day we just sort of turn them on a day at a time here so for each one of these let me put this over the background so this is for day one day two and they're they're all sort of just identical except for their positioning here so when we have all these on what we now have uh and it may be a little hard to see but i i think you you you can sort of figure this out as we go along the you have a a day which is set up as a layer inside of gt title designer and then all the assets that we need to cover the data for that day so we have uh the wind direction the cloud what the cloud cover is going to be like we have how humid what's the temperature what's the feel of the temperature uh what icon do we use to sort of show what the weather is going to be like up at the top so all of these are set up as uh individual elements inside of that layer for each one of the days and what you'll notice is that for day two here all of these elements end in the number two and for day three they all end in the number three so we set this up so that when we are pulling this information out we know exactly what elements inside this title template would need to be updated with the data we're touching at any given point in time so with that as sort of a background let's dive into the actual code that we're going to be working with so let me get out of here we got the vmix over here and let me go into we have the xml that i want to start with so when we get a response from open weather it's actually sending us back this xml essentially this xml file that we see so it's just a stream xml stream that's coming in over the web and it all starts with weather data then breaks things down with location and then some basic metadata about when this was last updated uh when sun rises for that region that we're in and then the forecast that we have and the way these forecasts are set up in xml is they give you five days of forecast and every forecast they give multiple forecasts so there's eight each day once every three hours starting at midnight so you can see here the forecast starts with a time from and two so this is starting from midnight up to uh 3 am so what we wanted to do in this case was just take the temperatures and all the weather conditions at 3 p.m for each day and this sort of let us hit the sort of the sweet spot that would usually be the high temperature of the day somewhere right around there so it let us sort of capture uh a good approximation of what the overall temperature will be for that day so that's the content that we're dealing with and again you can see this is all very well formed xml so if we now jump into the scripting we'll show how we handle all of this so right at the top we do what we usually do when we set up something to work with vmix and that is we go in and we load in the vmix xml so this lets us look at everything that's happening inside of vmix we are actually doing something very very limited the only thing we're really doing in terms of data inside of vmix is we're going to read dynamic values and we're using dynamic value 1 and in dynamic values in dynamic value 1 we're putting the zip code and the country code of the region that we want to take the forecast from and we use that in making our api call so if we go through here all we're doing is we are defining after we load the xml the vmix xml we set up a variable zip code as a string and we are pulling that dynamic value the inner text which is the actual text inside the value and storing that in the zip code so that gives us the first piece of information that we need to pull out of vmix but really that's about the only thing we're taking from vmix everything else will just be setting things up in the title template later on so in most cases you know you always want to be sure you have you know you're not going to crash the system or do something uh that could cause issues so the first thing we do is we check if that dynamic value hasn't been set yet and if it does if it is blank we actually just go and set it to uh basically one zero zero zero one which is sort of the base zip code in the us where the first post office was in the united states so we just set it to that and that's in new york so that gives us a guarantee that we'll always have a zip code in there and then we actually go and start to pull in the xml data from open weather so before i get into that let me just jump up to the comment section again so we said hi to rudy so we have peter from berlin peter thank you again for joining us here uh we have david uh always cool to see you here so i appreciate you joining and uh and we have sharoka so sharokina thank you for joining us from pakistan definitely appreciate you making the time and great to see you here okay so let's jump back in and uh talk a bit more about about the data that we're pulling in so what's really cool is that we can load xml into basically the visual basic inside of vmix either by opening a file which we've done before or we can open a url and that's what we're doing in this case so in this case we're setting up this url as requestor which is going to be sort of the request string we're using to access this and in there we have the whole first part of the url link which basically is given to us by open weather to configure how we make a call but the one thing we needed to do is we needed to add in the zip code so in pulling this string where we have to insert the zip code we take and pull the value we pulled from the dynamic value and plug that in as the zip code and then we end it by saying we want to use imperial units so we could have used metric or imperial since we're in the u.s we chose imperial but it could be anything that you'd want for your region and we asked for the information in xml so we have mode xml here as well and then the last thing we needed to do uh was add our app id so in this case uh we just said you have to add your app id this will be a long guide a long key unique key that you will get from open weather to plug in so when you make these requests uh they can track it against your account and know what information they can share with you so this is us basically setting up the url we need to do this query and these types of queries are often called like restful apis where you're just putting a url in and then you're expecting data back so it's a very straightforward very basic way to do a web request and we are going to store this information since we know it's going to be coming in xml as an xml document just like we did with everything that's coming in from vmix where we set that up as an xml document as well uh and then we're going to take we create this as as an xml document and then use the method load with this url string we built and that will now load all of the information that we saw and if you remember over here this is exactly what is getting loaded into weather.xml so we have a weather xml over here so everything that we want to do with methods to manipulate that xml we're going to do the weather xml here so but that's it so it's very simple to pull in xml data from a url it's you know three lines of code here to do that so the first thing that we're going to do is we're going to uh generating a node list and as i mentioned we're looking at the weather that's coming in at basically 3 pm every day and let me i'm going to pop back and forth between the xml and the code here so in the xml you can see right here they list the time that each of these forecasts are coming from so what we want to do is we want to look for all of the forecast with a from time of we'll basically be 3 pm so 1500 so we can scroll down here a bit and so right here is would be the first uh forecast we're getting from this time frame which would be 3 pm so the way we're doing this is we are saying go in and look for all the weather forecasts associated with records xml records that contain xml nodes effectively that contain the time in from of 1500 so what this is going to do is going to go through all the xml we have and just pull those forecast records for the time at 1 500 and since that's only once a day we know we're going to get one record for each day at 3 p.m with 3 p.m weather in it so that's basically what we did here so in the daily forecast which is just basically a node list a list of xml nodes we've taken all of the 3pm forecasts for the next five days which is what this api provides and we've placed them into daily forecast and so now we've got exactly what we want loaded into the script inside of vmix so let's jump back for a second and just say hi to everyone who's joined us so we have jp has joined us jp from cape town so thank you jp uh we have kyle kyle great to have you here and we also have justin from las vegas so justin uh great to have you joining us uh i'm not sure whether you've joined us before but this is your first time we definitely appreciate you making the time to to pop in here and to say hello this is always great so and we also have uh jilltel productions from venezuela so everybody from geotel thank you for watching we definitely appreciate this all right so back to the code so now that we've loaded up everything we need for the five day forecast that we want to put into our title template now we just start pulling information out of it so the first thing we want to do is we want to pull the location that this forecast is for so when we made the query we know that we had a zip code and we put that zip code in there in the query but we don't actually have a location name for that but if we switch back here and go to the very top you'll notice that right at the top of the xml we have here there is location and it has the name of the location that uh we put in so what we need to do here is we're just going in and grabbing that as a select a single node which means just give me the data from this one node and we're just pulling it out as uh basically as raw string and then we are using a method called two upper which makes that string which could be mixed case all into uppercase because we want that you know cleanly up in the top all uppercase so this is going to give us an easy way to pull that in and we use this right away at the beginning because as we start to populate before we do each day we want to put the location on the map on the title that we're displaying for the the weather map here so we also uh declare a temp string that we're going to use because even though we're getting this data back all of it isn't exactly in the format we want so when we get certain elements in especially around temperature we want to be able to reformat those elements to make them look the way we want and so we're just creating a temp string that we use to do that so now we're going to go through and create a group of arrays that will hold different pieces of information for the weather so that's what we have in this next section here so we start with everything from the day of the week which i'll talk about in a moment uh to the real temperature and the fuel temperature which is sort of if you're if you know from like wind chill factors and other things that would be what it feels like when you're out versus the actual temperature being measured we have the humidity what the cloud cover is like what the wind gusts are like and then an icon url which actually has sort of an icon for what the weather is like that day generally and so we actually are creating these as separate uh arrays with five slots one for each of the days and we're going to go through and pull these specific pieces of information fully formatted and put them into these each of these arrays as strings so we do this by we you set up a couple of pointers reference pointers here not really like pointers in a programming sense but ways that we track things so the first is counter and that's what we're going to use for walking through each one of the feeds each one of the xml nodes that has the data we want and then we're also doing something that we set up as index and so a little point here in programming there were two ways that things are counted they're either zero indexed or one indexed and what that means is if it's zero indexed it means that you're doing an offset from something so the first item is offset zero because it's it's the first item and then the second item would be offset one because it's one unit away from the initial so it's sort of a weird way a very thicky way of counting but it gives you a usually arrays are going to be 0 1 2 3 4. so that would be a 5 element array and how you'd go through that inside of our title template though when we set up in gt title designer we sorted them as day one day two day three sort of more of the ordinal way that we would track things logically so counter is our way of saying which element in the string arrays are we talking what about and index is our way of saying which element inside the title are we referring to day one day two day three so one is zero index the other is one index but just something to point out here so the first thing we're going to do now is we're going to write out the text into gt title designer for our location because we do that once it's for all the all five days so before we even go into a loop for anything we're going to write out this uh this location and we're using the api function set text and set text allows us to say which input is the title in uh what is the name of the element inside of that title that we want to assign the text to and then we actually say what is the value what's the text we want to assign to that so in this case it's location dot text now this dot text extension is very important inside of gt title designer we call this element location but in terms of referencing it programmatically you have to say i'm referring to this location and since it's text dot text and it will take and leverage that now to replace the text that we had in there which was just the word location we're going to replace that now with the actual location that the particular forecast is coming from so that's the only sort of single thing that we're doing now we're running in to a loop to go through each one of the five days so we start with a for loop which is a great way to do this and we are using counter remember i said that's the zero index so we start at zero and we go to up to daily forecast which is where we put the xml we want to look at so that's an xml node list so xml node list is going to have a count which is how many elements are in this node list so there are five elements in the list because this is basically doing a regular count but because it's a zero index we have to subtract one so it knows to only go up to zero one two three and four and then break away there so this is just doing that looping and now we go through 0 1 2 3 and 4 and then break away there so this is just doing that looping and now we go through each one of the xml elements and pull it into the string arrays that we set up that correspond so we start with the day of the week so this was this was an interesting one this was the most indirect one if we look inside i'm going to swap back to the xml now if we look inside of the xml you can see that it is giving us a date here this information right here is saying the year the month and the day so we need to know what day of the week it is and so there are function calls inside of visualbasic.net that will allow us to go in and do that conversion so as i switch back to the code now what it's doing is we are taking the from element which is the time and the date combined we're splitting it at the t and just taking the first part of this and so that's giving us just those year month day with the dashes between and from there we are pulling that in uh parsing it as part of date time so we're taking that date time and then we're asking it to give us the day of the week so right over here we're saying give us this day of the week for this date that we just cut out so a little bit confusing this we will post these scripts uh but essentially all we're doing is taking that string cutting out the first part of it passing that into a function a a date time specific processing function inside of net and asking it to say given this date tell us what day of the week this is monday tuesday wednesday and that's what we're getting and then we're converting that to a string and asking us to take that string and make it all uppercase so a little confusing uh in terms of what it's doing but very straightforward in terms of how it's being done so uh and this is giving us so that top label that you have which has the each day label across the top of the weather map so now we're going and we're pulling out the temperatures so we have the real temperature and we have what we call the fuel temperature what it feels like so for the real temperature we're putting that into that temp variable if you remember it's not temperatures at temp it's temperature it's temp as temporary so we're pulling the actual numerical temperature out which is a value and then what we're doing is it's a string value and it also isn't a whole number so this would give us something like you know 72.38 degrees which is not something that outside of scientists regular people don't make decisions around those types of fractional components so what we're doing is we're converting that text into a uh a double you know a double width integer or double width value and then we are rounding it up or down to the nearest whole integer and then converting that back to a string so a little bit of math but basically pretty simple uh functionality here take and get the temperature in round it up to the nearest whole number convert it back to a string and set that to the real temperature and we're doing the identical thing to uh the field temperature and the other thing that we're doing is we are appending uh a degrees fahrenheit at the end of it so this gives us that when we want to display it we don't have to try to line this up with having the degrees fahrenheit be part of the template the gt title designer template and the number coming from the program now we can do it all in the script and it will center nicely and balance great no matter how many digits there are in the temperature so we do that for both the real temperature and the fuel temperature and then the other things we do now are going to be a little more straightforward so we'll pull out the humidity and again it's just going to be a percent so we take the humidity as an item we uh get the value and we append a percent to it and so we're just getting what percent humidity and the last two elements are are kind of interesting that they're uh they're basically more emotive elements so it's how what's the cloud cover like it's partly cloudy it's you know so you get that sort of thing so we're we're pulling that information converting it all to uppercase so it nicely formatting and we're doing the same with the wind conditions which even though it comes to something called wind speed really getting something uh you know like mild gust or strong winds or you know that sort of more descriptive term as opposed to a a technical value and we're pulling those and putting those into this array and the final thing we're doing is there is also they have icons that they use to identify sort of the visual look you want to give for the weather in a particular day and so all we're doing is we're creating a url which has the exact url they supply that icon in the icon name which comes in as item symbol in the xml file uh that will basically be the file name that we need to pull uh and appending dot png to it so we've created a url with that lib points to the icon we want to show for that day's weather so this now is all the things that we've formatted and pulled out and now we want to start to assign them to all of the fields inside of gt title designer so as i mentioned gt title designer is sort of one indexed so we just say index is going to be whatever the counter is which is zero indexed plus 1. so right now if we're doing the zero element inside of a gt title designer we're going to refer to that as index 1. and so we are just using very standard vmix function calls the set text which we used already to set up the location so we're going there and we're selecting which element i want to change but unlike when we did it for the location where that was just a fixed element we now need to use text use this index to append to the name of the text element that we want to change so if we want to change the label day like we're doing here that element is called label day one label day two so we're going label day as the string adding the index convert it to a string and then adding the dot text to the end of it so now in this function we are changing it based on which iteration of the loop we're doing it for day 1 2 3 4 5 we are changing that index number which allows us to dynamically assign the text to the different columns inside gt title designer and that's all we're doing here so that's the the only fancy trick here is adjusting the index but we're just going through and doing these assignments for each one of these text elements and then the last thing which is a little different is we're doing instead of set text we're calling the function set image which is going to do the same for a non-text media element inside of gt title designer and so again same sort of thing said image we're pointing to the gt title there we're saying what is the icon url so this is a url that will have that image that we're going to be using here uh then it's i believe that's the zoom factor and then we're saying so which field is are we replacing the image in and again the same thing with we're adding the icon for the weather for the day and we're doing it for index one up to five and instead of ending this with text for these non-textual elements you ended with dot source so we've constructed that and we do this now we have a next here and that just brings us back to the top of our for loop everything increments by one and we just go through the process again so that basically allows you to pull everything out from the xml and populate the title template with doing some reformatting so if you looked at this and said gee could i've just brought the xml into gt title designer using data source manager the answer is yes but you wouldn't be able to uh reformat things so i couldn't have fit told you which day was at the top so monday tuesday wednesday you wouldn't get that you wouldn't get fahrenheit with degrees you wouldn't you know these types of element reformats that we did uh you know like because we had to go and convert things to a number around them we said that with the temperature none of those things would have worked so you would have pulled the raw data from the source so in using scripting we were now able to get this to look exactly the way we wanted to and adjust these values very simply based on how we wanted to set all that up so that's really the model that we used here so how are we driving this then so if i actually go in and look in what we're doing over in vmix so we set the script up and so this is this is just driven off of uh an act a stream deck here so we have a a very easy way to pull everything in but if if i come over here and show you what we have as our shortcuts start over there so we have things that allow us to pick which location do i want so i have like anchorage alaska new york london paris berlin here where we are in the studio and then i can run the script and these were all just shortcuts we did so if you look at how we set up uh let's just look at earl links there's peter's here so we'll we'll do berlin uh i believe peter's from there we set this up with a postal code and a country code and so that was get set to that dynamic value and if you remember that dynamic value is how we uh pulled out the location we wanted to do the call against inside scripting so all we're doing is we can use a key press to pick the location that we want and that allows us now to uh easily switch locations so here if you remember i could go and say so there's uh i just set berlin and so i can swap that i can go to paris and show you the temperatures there if you like it a little cooler we can go up to anchorage alaska and uh temperatures are a little bit colder up north so there are lots of different ways to to do this but this could be something where if you're doing different regions in in you know the area that you're you're serving with the production you could just pull in the different zip codes all around a specific area and then then cover that sort of very directly for that the other thing uh which i think is is is interesting is if you remember when we set up the when we set everything up inside of gt title designer we had an image as the bottom layer i do have through a uh the set image on and set image off i can turn that layer on and off so right now i just had a cloud image back there but if i wanted to shut that off i could actually have a moving image behind this so this is just using this as an overlay on top of another video that we're playing in the background and you could you can not just turn this on and off but you could assign different things to it so this would give you the ability based on the weather that was going on in a region or the time of day you were covering to change that background image and make it sort of correspond if it's rainy out if it's sunny out if it's nighttime if it's early morning to do imagery behind that dynamically that you would be able to make adjustments to and that could be something that you could do right in the script so we didn't do anything scripting with that that is certainly something that you would have available to you in the script and then you know i can just press a button and turn that background back on if i wanted to so it gives you different ways to leverage this type of uh layout so this is really everything i wanted to cover here uh it's handles a lot of different things you know as as we set this up this was really much more about looking at ways to manipulate titles without using data source manager but still achieving these same types of results and the the advantage as i mentioned is that you get to manipulate the data you don't just map it you manipulate it make decisions around it and then plug it in to what you want so we think that's very very powerful for these types of of of data sources you can pull from the web and it lets you do different things that you you can then add value to so before uh we wrap the main show though let me just catch up to see uh so we have lee lovely it is always great to have you join us here i am honored that uh you took the time to to pop in lee uh has some great stuff going on so if you go to leelovetv uh definitely check out the things that lee is doing around photography and photo mentor so definitely great stuff there uh so let's see we have uh uh jawad jawad from stockholm uh great great to see you here i i should have i should have put uh stockholm into here is one of the uh as as one of the regions we were covering for weather but thank you for joining us uh so we have uh rudy just mentioned uh he says he's gonna rewatch the index explanation uh but uh he said great stuff again so thank you we uh we definitely appreciate that feedback uh and uh so peter gave us a smile for covering berlin so thank you thank you peter uh and uh you know bruce mentioned it's he likes you know the the concept of reuse for for other things i think that's really what we are trying to do here i'm sure that there are not a lot of people who are specifically going to be using this for something like weather but there may be things you would be doing with this for sports statistics fantasy football uh you know different types of drafts election coverage where you may be getting data that's coming from a remote site and you want to do this type of reformatting and publishing into your own graphics template so hopefully this stirs some ideas in there so uh let's see we have cesai has uh popped in to say hello back thank you for joining us uh and uh bill corkery uh yes the san diego weather is so consistent uh so bill is an audio engineer uh par excellence he is he is he's one of the uh the the good guys on on so many fronts both technically and just the time i've got to spend with them personally so bill thank you for popping in and yes you you do have pretty consistent and spectacular weather out there except i like it cold so it wouldn't fit for me but uh all right then so uh we're going to wrap up the main show and we're going to hang around post show to go into anything you want to discuss in addition to what we covered here or you know dive into any area here in more detail so we will be back next week if you can't join us thank you very much for making the time now and if you can join us we'll be back in just a couple of seconds so we'll see you soon take care everyone so welcome back everybody so uh this is a fun show uh we try to find things that are doable for us in a in in the limited time we have but also that we think we can sort of layer some broader information behind that can be you know as rudy pointed out that that does have some reuse cases here so and as i mentioned this was interesting we went in because we said we really haven't done much with json and it would be good to do a show on that so originally we were searching for what are great sources of json data uh but when we started looking at you know we were pulling it from you know open weather and that was great there no no problem at all getting the information there but the capabilities inside the scripting seem to be fairly limited and we thought that instead of showing you something that made sense as a json introduction it would just get confusing with scripting because we'd have to be doing a lot of manual cutting and you know reassembly and searching that we couldn't uh you know really get the type of show we wanted so we did it using xml the xml stuff works fine but i do want to get to a show where we cover json because it format for a lot of the manipulation that would be going on i mean it's built around javascript so you know it's it's sort of tied very closely with web programming generally so it will be something we'll get to but uh hopefully even though this was all xml based the the scripting part uh proved interesting so so we hope but please your feedback is great so if there are other things in this area that you'd like us to cover please let us know but right now i'd really like to open this up if there are any questions people have any comments anything they'd like to jump in and uh and share so so there's been a few things that have been going on well i give everybody a chance to get your questions and a few things that have been going on in over the past weeks and probably the one that's impacted us in terms of plans that we had for the month of october which it's hard to believe we're in already uh is that the nab show was cancelled and as i had mentioned in a couple of shows previously that we were going to be doing live broadcast from the show floor for each day and so we're gonna we're not gonna get a chance to do that this time they are you know hopefully we'll we'll get invited back for april which is the next show that we're going to have for nab but i just want to let everybody know that we were really planning on trying to do some stuff that tied together bigger trends inside of the production industry and that we then be able to layer in potentially interviews with people that we see at the show or other things so since we're not going to do that we are going to look at other things that we can do show wise here so this is any things that you have that you would like to see us start covering that we haven't or you like us to do in more depth or the other way around because i i know sometimes i can get lost in talking with people at a more technical level sometimes there are people out there who would much prefer some foundational shows where we cover some basic stuff that i may be glossing over and doing the more technical shows so please let me let me know what would work for everyone so well i don't see any more questions coming in so i guess we we covered everything that we needed to cover this week and there aren't any outstanding things so alright everyone so i appreciate you hanging around it's going to be a short post show here today but i definitely appreciate you making the time to spend it with us on friday afternoons out time friday nights for a lot of you and uh that's something we we always appreciate and it for some it could even be saturday so i believe uh we had somebody coming in from pakistan so uh that's problem it might be it might be a saturday over there so thank you all appreciate you making the time and we'll see you for another show next week take care everyone
Info
Channel: The Streaming Alchemy Show
Views: 728
Rating: undefined out of 5
Keywords:
Id: ItLIjBi84EI
Channel Id: undefined
Length: 49min 0sec (2940 seconds)
Published: Fri Oct 01 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.