– can this alternative to YouTube survive?

Screenshot of Linus Tech Vessel channel, © Linus Tech, Vessel
A little over a year ago, Vessel launched as an alternative video platform, trying to demonopolize YouTube as the quasi only option to upload videos professionally (i.e. earn money with your videos).
To get a foot into the market, they made deals with a lot of Youtube personalities to upload to vessel a week in advance and instead of showing users advertisements, either in the form of prerolls or sponsor spots in the middle of the video, they collect a small monthly subscription fee. Vessel boldly announced their launch in the form of sponsored YouTube videos giving away a full year of premium subscriptions to everyone signing up in the first month or so.
In March 2016 the free premium accounts expired, and I wanted to know, how many people are still watching on vessel now, compared to when they had a free premium account.
Sadly, Vessel doesn’t disclose a view count, or how many people have purchased a premium account after the first month. They do however have a ‘like-button’ below every video and a comment counter. I decided to at least get a rough idea about their view count compared to last year.

I started with the channel Linus Tech Tips (sadly, not a lot of Linux content, despite their name), as there seems to be a very active community around this one.

Using Firefox’ development tools, I managed to find out enough about their JSON-API to get a list of all the videos from a channel, and the like- and comment-count from those videos.

#download video lists for linus tech tips channel

while [[ $offset -lt 1115 ]]; do
        curl "$offset" > vidlist_$offset.json
        offset=$((offset + 24))

Using my limited Python skills, I extracted the video IDs (and optionally title and date of publishing) (which are in decimal format – not the same as in the URL for some reason).

import json
from sys import argv

script, filename = argv

json_file = open (filename)
#print (

#j = json.loads (
j = json.load (json_file)
#for i in range (0, len(j['items'])):
for i in range (0, 24):
	print (j['items'][i]['id'])
	#print (str(j['items'][i]['assets'][0]['id']) + ", " + j['items'][i]['title'] + ", " + j['items'][i]['released_at'] + "\n")

for file in vidlist*; do
	python $file >> vid_ids.txt

To download the json containing all the juicy details about the videos, i made a simple vim macro. Starting with a video id on each line, i transformed it into a curl request.

	curl -H "Content-Type: application/json" -X POST -d '{"client":"web"}'

(inserted text indented for your viewing pleasure; and if you wonder: yes, I wrote this down before typing it into vi :P)

This took a while – 18:37,31 to be exact
This information could also be used to create a Vessel-viewer or -downloader, as it even contains links (with tokens) to the streams in all qualities.

With a slightly modified version of the python script above, I can now parse the data and plot it with matplotlib

import json
import os
import time
import datetime
import matplotlib.pyplot as plt
import numpy as np

dates = []
likes = []
comms = []

path = 'vidids/'
listing = os.listdir(path)
for infile in listing:
	json_file = open ("vidids/"+infile)
	j = json.load (json_file)
	print ("uploaded: ", j['first_sunrise_at'], "\nlikes: ", j['like_count'], "\ncomments: ", j['comment_count'])
	print ("")

	dates.append (datetime.datetime.strptime(j['first_sunrise_at'], "%Y-%m-%dT%H:%M:%SZ"))
	likes.append (j['like_count'])
	comms.append (j['comment_count']);

order = np.argsort(dates)
xs = np.array(dates)[order]
ys = np.array(likes)[order]
zs = np.array(comms)[order]
plt.plot (xs, ys)
plt.plot (xs, zs)

If I wanted, I could have checked the ‘Linus Tech Tips’ YouTube Channel and work out a viewcount to like/comment ratio andextrapolate the vessel view count. But it was getting late, so thats for someone else to do!
So, this is it. The graph IMO shows a clear drop in likes and comments at the end of March, when the free trials ended. I will do this again, in a more automated fashion later this year hopefully. Let’s see what will change till then. I really wish this alternative-to-youtube platform all the best!

If you wonder why I haven’t combined all those different scripts into a single, automated one: It was a test run, and debugging is easier that way. If I ever want to generate such graphs again, I will get rid of most of the manual work of course.