Weija and Kyin – portrait


Several of Kyle Mcdonald’s work presented in class really intrigued us, and we wanted to further explore some technical fields that Kyle’s work touched. As we were interviewing each other, we both noticed that our youtube channels were remarkably unique, and it was in a way indescribable to each other in regards to our viewing pleasures. We thought it would be cool to document one’s youtube viewing history over a period of time, and overlay them in a chronological order such that each image could represent a distinct block of time.


The progression of our project was rather difficult. While we knew what kind of portrait capture method we wanted to explore, we still struggled with how to present it. Our first tangible goal was to figure out how to scrape reliable data off of youtube. This was rather tricky, since a lot of sites (including Google), go through certain measures to prevent their websites from being automated. For this, we decided to use phantomjs and casperjs, Javascript headless browser libraries. When we came up with the idea of stitching these overlayed photos together, we knew OpenCV was the best library to use for the job. With this, we developed a python flask api server to operate the system level management of the files and we made a meteor frontend ui server to facilitate the user inputs. Once we hooked all of the pieces up, our last issue was time: We noticed it took a very long time to do some of these operations, as they require scraping through thousands of pixels. For this, we managed to incorporate some multi-threaded action in some of the scripts to expedite the portrait generation process.


Finally, to put everything together, we used Meteor.js to create the Youtube Portrait webapp where anyone can generate their own Yotube portrait. Here are some screenshots of using the webapp and generating a portrait.

Here is an example of the final product!

We wanted to compare our portraits with portraits of other people. So we asked some of our friends to generate their portraits as well. Below is a picture of a comparison between some portraits, where every strip is a Youtube Portrait of a different person.


Thoughts on Piece / Relevance to Subject:

Overall, we were really excited to have this actually working (and displaying real video history data). However, if we had more time for the project, we definitely would have tried to figure out how to place timestamps to the images. (Just scraping the images was already a huge feat, so we decided to take what we have and go with it.) Still, regardless of that, we feel like when we play tested our machine with some of our friends their reactions were all similar: initial embarrassment of having their youtube viewing history viewable, and then acceptance that they did in fact watch all of them. We liked the variety of thumbnails we collected, and we think it is in fact an accurate representation of the user. Some interesting things we noticed where moods of Youtube videos we watch, from colors, faces, texts, etc.