A Tale of 187 Christmas Songs: How I Logged Nearly Every Song on Chicago’s Christmas Station
A lot of people say that the same Christmas songs are played on repeat over and over again. I am sick and tired of the radio playing the same songs repeatedly and wanted to quantify exactly how correct I was in that assumption. In Chicago we have a radio station called 93.9 The Lite FM that plays Christmas songs and has become Chicago’s Christmas station from seemingly Halloween all the way to Christmas time. This year was no exception. They started playing Christmas music on November 1st 2022 and stopped playing Christmas music promptly at 6 AM on December 26th 2022. Guess that is the end of Christmas Radio Chicago
So as a computer programmer that wanted to take matters into his own hands to find a solution to that question, I took the time to create an application that will log all of the songs that the radio station plays up until Christmas. I wanted to truly determine how many times they played each song, how many different songs were repeated on the radio. And present my findings in an article on my website here. Read below to find out what I did to create this software to log the Christmas music on my radio station and determine the Answer to my longstanding question.
In order to determine the answer to my question, I created a Laravel admin panel area with several objects created into it. I created a play object that would log the time that the song was played, the artist, and the song title, but I ran into a snag getting the data from the web. If I went to the radio station’s recently recently played website, they had the information I was looking for but no easy way to put that into a software of my own creation. What I wound up creating was a Python parsing script that used the GraphQL API provided by iHeartMedia that would list the items played.
I was able to parse the currently song in the object that was returned to this page and just use a simple curl request in Python to create the object needed to insert into the MySQL back end of the Laravel application. The Laravel application provided me the ability to view and manage the data through an easy to use interface and allowed me to make changes on the fly and see some preliminary data of songs being played, as well as keep track on my algorithm pulling the data properly.
By using Chrome developer tools to find that there was a GraphQL API back end that this application used to render, I was able to reduce load not only on my servers but also the radio station servers as well by just only getting the data that I need, rather than using something like beautiful soup to parse the entire page and get all the unnecessary information that I did not need.
The good thing about using this approach as well was the ability to not succumb to page changes if iHeartMedia chose to change this page as I was in the middle of my experiment. By only using the data, I just had to be concerned if they changed the data object that was coming back and would be an easier fix if they did rather than parsing through CSS attributes and HTML code using a web scraper. I considered this a low risk of the GraphQL Backend changing happening, so I went with this approach.
Furthermore, I extended this out to play the last fully played song on the radio and log that rather than the currently playing song in case I missed it coming up on the screen. I scheduled my Python script to run every minute via a Cron job and thought that was the most secure way to ensure I get the data that I need and not miss any previously played songs that could have been less than a minute long.
Unfortunately, this solution worked well but not perfectly. I was a day late in getting this application created for the 2022 Christmas season. This question did occur to me when I first heard the station playing Christmas music November 1st. I was able to get this application created by November 2nd using some spare time that I had during the night. It kept bugging me to create this application, and I was able to do so in a way such that I logged the majority of the season.
Next year I will be able to do the entire season. Who knows, maybe I’ll even extend this to get more information out of the station as well! Another issue that I ran into as I was taking data was an issue with my server that had an outage during the 8th of December. I did not realize that the my SQL Server on my web host was not functioning properly, and it caused the play count to be low for that day. In general though, I feel that this experiment was a great success and I have been able to learn a lot.
The results of my experiment were quite interesting, the most played song that the radio station played this Christmas Season was Carol of the bells by Mannheim Steamroller. With a frequency of 224 plays in the Christmas season, that is 2.35% of all songs played that I logged. I logged over 9500 songs that were played 24 hours a day seven days a week for most of the Christmas season.
The second most popular song was it’s the most wonderful time of the year by Andy Williams with a total play count of 222 taking up 2.33% of all time logged coming in #3 was Feliz Navidad by José Feliciano with a total play count of 218 with 2.29% of total songs logged. There were only 187 unique songs played! in the entire Christmas Season! There were also less songs played in the afternoon with 4731 in the PM and 4782 in the AM.
|Song and Artist
|Percentage of Songs Logged
|Carol of the Bells by Mannheim Steamroller
|It’s The Most Wonderful Time Of The Year by Andy Williams
|Feliz Navidad by JosÃ© Feliciano
|Rockin’ Around The Christmas Tree by LeAnn Rimes
|Winter Wonderland by Amy Grant
|Winter Wonderland by Andy Williams
|Carol of the Bells by David Foster
|All I Want for Christmas Is You by Mariah Carey
|Sleigh Ride by Johnny Mathis
|Jingle Bells by Frank Sinatra
|Ring Christmas Bells by Ray Conniff
|Do You Hear What I Hear? by Jordin Sparks
|Sleigh Ride by The Ronettes
|You’re A Mean One, Mr. Grinch by THURL RAVENSCROFT
|Let It Snow! Let It Snow! Let It Snow! by Dean Martin
|Jingle Bell Rock by Brenda Lee
|White Christmas (feat. Clyde McPhatter & Bill Pinkney) by The Drifters
|Last Christmas by Glee
|Happy Xmas War Is Over (Full Version) by John Lennon
|Frosty the Snowman by Ray Conniff
|I Saw Mommy Kissing Santa Claus by The Jackson 5
|Jingle Bells by The Ray Conniff Singers
|Deck the Halls With Boughs of Holly by Percy Faith
|Christmas (Baby Please Come Home) by Darlene Love
|Here Comes Santa Claus (Right Down Santa Claus Lane) by Gene Autry
|Rudolph The Red-Nosed Reindeer by Burl Ives & Videocraft Chorus
|Frosty The Snowman by Bing Crosby
|Rudolph the Red-Nosed Reindeer by Harry Connick, Jr.
|It’s Beginning to Look a Lot Like Christmas by Perry Como and The Fontane Sisters with Mitchell Ayres & His Orchestra
|Deck The Hall by Nat King Cole
|Christmas Eve / Sarajevo 12/24 by Trans-Siberian Orchestra
|Frosty the Snowman by Willie Nelson
|O Holy Night by Martina McBride
|Sleigh Ride by The A-Strings
|Sleigh Ride by Amy Grant
|Underneath the Tree by Kelly Clarkson
|Let It Snow, Let It Snow, Let It Snow by Michael BublÃ©
|A Holly Jolly Christmas by Lady A
|Rudolph The Red-Nosed Reindeer by Dean Martin
|Last Christmas by Backstreet Boys
|Linus and Lucy by Vince Guaraldi
|Let It Snow, Let It Snow, Let It Snow by Harry Connick, Jr.
|This Christmas by Donny Hathaway
|Linus And Lucy by Vince Guaraldi Trio
|Frosty The Snowman by Kimberley Locke
|I’ll Be Home for Christmas by Kelly Clarkson
|Rockin’ Around The Christmas Tree by Amy Grant
|(There’s No Place Like) Home for the Holidays by Perry Como
Another interesting note is “All I Want for Christmas is You” by Mariah Carey was only played 199 times in the span of my experiment.
One interesting thing to note is there was a total of 187 different tracks played, but only 101 different song names meaning that multiple artists had multiple versions of traditional Christmas carols. What I wanted to do was determine the most played Christmas song as a whole so I filtered the data by the song name itself and determine the most played song. As you can see in the table below the most popularly played song was ‘Sleigh Ride’ with a count of 635. This makes sense because there are both instrumental as well as sung versions of ‘Sleigh Ride’. Next was ‘Frosty the Snowman’ and ‘Winter Wonderland’ with 504 and 494 plays respectively to round out the top three. I’ve included the top 50 songs below for your reference.
|Frosty the Snowman
|Carol of the Bells
|Rudolph The Red-Nosed Reindeer
|Rockin’ Around The Christmas Tree
|It’s The Most Wonderful Time Of The Year
|O Holy Night
|Do You Hear What I Hear?
|Jingle Bell Rock
|Let It Snow, Let It Snow, Let It Snow
|All I Want for Christmas Is You
|Christmas (Baby Please Come Home)
|Let It Snow! Let It Snow! Let It Snow!
|Ring Christmas Bells
|You’re A Mean One, Mr. Grinch
|Here Comes Santa Claus (Right Down Santa Claus Lane)
|White Christmas (feat. Clyde McPhatter & Bill Pinkney)
|Happy Xmas War Is Over (Full Version)
|Linus and Lucy
|Have Yourself A Merry Little Christmas
|I Saw Mommy Kissing Santa Claus
|Deck the Halls With Boughs of Holly
|Happy Xmas (War Is Over)
|It’s Beginning to Look a Lot Like Christmas
|Deck The Hall
|Christmas Eve / Sarajevo 12/24
|Santa Claus Is Coming to Town
|Santa Claus Is Comin’ to Town
|Underneath the Tree
|A Holly Jolly Christmas
|I’ll Be Home for Christmas
|The Twelve Days of Christmas
|(There’s No Place Like) Home for the Holidays
|Happy Christmas (War Is Over)
|We Wish You a Merry Christmas
|Please Come Home for Christmas
|Joy to the World
|We Need a Little Christmas
|Please Come Home for Christmas (Bells Will Be Ringing)
|Up On The Housetop
|The Christmas Song (Chestnuts Roasting on an Open Fire)
Looking at a trendline for analyzing the songs played each day, there is a downward trend, meaning they play less Christmas music the closer it gets to Christmas. The day with the most songs played was Christmas Day with a total of 241 songs logged (As it Should be!!)
There was a total of 102 artists that were represented in my data set, and the most popular one was Andy Williams. Amy Grant, Ray Conniff, Mariah Carey, and Dean Martin rounded out the top five. I have included the top 10 artists below.
In general though, I was not very surprised by the data although I would have expected more songs to be played in general. There is an average number of songs played roughly 173 a day. assuming each song is 3 minutes comma that is a total of 8.65 hours per day playing music on this radio station. I would have expected that to be much higher personally.
As I mentioned, some of the limitations with my algorithm was the ability for it to not log the entire season, and I’m hoping to improve greatly upon this next year. I am not a data expert here, and I am sure somebody with more knowledge in the field can do a much better job of analyzing this than I could. I am just a computer programmer with a question that I wanted to get an answer for and I feel as though I’ve done that.
Next year I really hope to expand this algorithm further, and do more data analytics on the entirety of the Christmas season plays as opposed to the day that I missed this year. I’m hoping to eventually also pull in the things like the length of songs and the length of commercial breaks to determine exactly how many commercials run on the station without me having to listen to it 24 hours a day seven days a week during the entire Christmas season.
Do you see some data that I missed or an error? Please let me know in the comments or by contacting me on social media as well. I would love to see if anybody else would be interested in this data set to get more information than I was able to drive from it and eventually understand even more about the Christmas music landscape in Chicagoland. I hope you have a wonderful holiday season and a great new year!
Matthew J Fitzgerald is an experienced DevOps engineer, Company Founder, Author, and Programmer. He Founded Fitzgerald Tech Solutions and several other startups. He enjoys playing in his homelab, gardening, playing the drums, rooting for Chicago and Purdue sports, and hanging out with friends.