Rapping.Reviews has been released!

It’s almost 4 weeks since I released my Rapping.Reviews project. After about a year of hard work, crazy rap auditions and a long search for affordable and performant managed WordPress hosting the website is finally live. Check out the trailer!

Rapping.Reviews automatically analyzes the reviews from Movies and TV Series and presents them in the form of a rap battle music video. Currently the site contains raps about more than 13.000 Movies and TV Series and automatically updates itself every day (provided that there are enough new IMDb reviews). You can read more about the concept on the About Rapping.Reviews page.

Some raps work well, some don’t – that’s part of the joke. Personally I liked the rap from ‘50 Shades of Grey’, it’s quite a hefty battle! Especially the ending…

The last time I wrote about the project was in my Rap Karaoke in a Costume @ Minerva Open Day blog post. The concept changed a little since then. During the Open Day @ Minerva I filmed people with the intention to have them appear as rappers on the website. I wanted them to express a positive or negative opinion while pretending to be rapping. I made recordings of 27 different rappers and thought I’d need even more recordings to finish off the website! But after trying to integrate the footage with the concept of Rapping.Reviews it turned out I already had everything I needed! The recordings of me in the Morphsuit worked great within the website because you can’t see my mouth and they are neutral enough to not distract from the rap lyrics. The event during the open day helped me to quickly test out many different appearances for the rapper and see what would work best.

Since the release in January the site has already been visited by at least 3.500 unique users! Combined they viewed at least 3.800 rap battles. This is in the first three and a half weeks since the site is online… So I’m definitely very happy with these numbers. I don’t think I’ve ever made something that has been viewed by so many people in such a short time 🙂 The users are from all over the world, but most of them come from the US, followed by The Netherlands and the UK.


Rapping.Reviews has also made it into the top 3 of the month on pointlesssites.com! Which is obviously a big honor.  58% of all the visitors from the past weeks come from pointlesssites.com.


How Rapping.Reviews Works

This is brief write-up on how Rapping.Reviews technically works (sort of chronologically and very simplified).

I made a Node.js script that checks for new movie and TV series releases. One of the sources that provides this information is TMDb. This list of new movies and TV series is combined with the movies and TV series that are already processed by Rapping.Reviews. Raps that have already been processed, may need to be updated because new reviews could have been written. An update will be attempted according to the following schedule:

 // update every week of released this month
 var updateEveryXWeeks = 1;

 if (weeksSinceRelease >= 104){
 // update every 52 weeks if released two years ago or longer
 updateEveryXWeeks = 52;
 } else if (weeksSinceRelease >= 52){
 // update every 26 weeks if released a year ago or longer
 updateEveryXWeeks = 26;
 } else if (weeksSinceRelease >= 26){
 // update every 4 weeks if released half a year ago or longer
 updateEveryXWeeks = 4;
 } else if (weeksSinceRelease >= 4){
 // update every 2 weeks if released a month ago or longer
 updateEveryXWeeks = 2;

In addition to this check, there need to be 10% more reviews than last time. Otherwise it’s not very interesting to make a new rap battle. So the program checks with IMDb how many reviews there are for the movie or TV series in question. If there are 10% more reviews, all reviews for the item will be requested from IMDb, as well as additional meta from TMDb (e.g. the YouTube trailers) and OMDb.

When downloading the data has completed, the data is passed to a Python script that will start generating the rap. The review text (and title) is split up in sentences using NLTK. The sentences are cleaned up a bit and very long sentences are removed (because they wouldn’t flow well within the rap). The polarity (positive or negative) of the sentence is determined using the VADER Sentiment Python library, also taking into account the rating (1 to 10 stars).

The positive sentences are sorted from most positive to least positive and the negative ones from most negative to least negative. Sentences with the same ‘positive or negative’ score are sorted randomly (this will introduce more variation between updates of the raps). The next part is done separately for the positive and negative sentences. From the first (most positive or most negative) sentence, the last word (which should rhyme with another sentence) is taken. To figure out which words rhyme with this word, Rhuthmos.py interfaces with the CMU Pronouncing Dictionary. All rhyme words are returned. Now the script looks for at the other sentences to see which sentences end on the rhyming words. If a match if found, the match with the highest combined positive score (or negative score in case of negative sentences) is saved. This is repeated until enough matches are found or until there are no more sentences to process. If all went well the result is 6 pairs of rhyming positive sentences and 6 paris of rhyming negative sentences. The lyrics are now finished.

The data is posted to a WordPress website on which the rap battle HTML/JavaScript player is located. The rap battle player uses Video.js for the player UI, an embedded YouTube player in the background to play the movie trailer and meSpeak.js to generate the WAV speech audio (which is all generated client side). All the WAV audio is combined into a single audio track which functions as the timeline to which other events (like showing the subtitles, switching the rapper) are synced. A beat is randomly chosen from a set of beats and the first ‘beat drop’ is synced to the moment the first rapper starts rapping. The reason the ‘video’ is generated client side is that I want to save on disk space usage and processing time to render 13.000 video’s… which also need to updated from time to time. Another benefit is that when I add a new hip-hop beat, it can be used immediately by all reviews – without having to wait/render anything.

A mobile/tablet version is available too, which looks and sounds a bit differently. Mostly due to limitations that don’t allow a YouTube video to play in the background. On iOS (and probably other systems too) it’s not possible to play multiple video’s at the same time either. So that’s why the mobile player falls back to animated GIFs of the rapper and a picture slideshow in the background.

I hope you’ll check out the site!

2 thoughts on “Rapping.Reviews has been released!”

    1. Thanks a lot for your reply! I’m really glad you love the project 😀 thanks for taking the time to check out Rapping.Reviews and my personal blog.

Leave a Reply