Perl script monitors visitor statistics for YouTube movies

Machine Learning Lite

Line 16 of Listing 5 iterates over all the movies to be monitored and runs a SQL query for each of them to retrieve the historic viewing numbers sorted in ascending order of time of measurement. It dumps these y values into the @yvalues array and lets the matching x values start at 1 and grow by 1 for each measurement day. In $row[0], the first element of each row of the SQL result, you can see the view count for the movie currently processed at the point in time the measurement was taken.

Lines 34 and 35 then remove the latest (today's) measured value so that the script only applies the regression rule against the measuring points that are more than one day in the past. The coefficients() method in line 42 finally returns the computed $intercept value (y offset at x=0) and the gradient of the straight line in the $slope variable. Line 44 uses this to interpolate the value for the last measurement in $y_predicted; in other words, it determines what you would expect if the average number of viewers continued to increase as it always had.

If the difference to the actual measured value is three times the magnitude of a linear increase, the movie is obviously going viral, and the user is notified by a text message. You need to experiment with this factor; some people might want to learn about even minor successes, so you would use a smaller factor than 3 in line 48 instead.

For more convenience, instead of the print instruction, you might want to send an HTML email by using, for example, the CPAN Mail::DWIM module, which needs just one line to do that. The recipient would then be able to run their new hit movie directly by clicking on the displayed link.


  1. Listings for this article:
  2. Lantz, Brett. Machine Learning with R. Packt Publishing, 2013
  3. Linear regression:

The Author

Mike Schilli works as a software engineer with Yahoo! in Sunnyvale, California. He can be contacted at Mike's homepage can be found at

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Downloading Web Video

    With the right tools, you can store YouTube movies on your hard disk and view them when Internet access is unsatisfactory or unavailable.

  • YouTube Players

    YouTube offers more than just funny kitten movies; you will also find more than 60 million music videos. With a native YouTube client for Linux, you can use this online jukebox as conveniently as your local music collection.

  • Programmatically change YouTube metadata

    Instead of manually editing the metadata of YouTube movies, video craftsman Mike Schilli dips into YouTube’s API spell book and lets a script automatically do the work.

  • Tube Archivist

    Tube Archivist indexes videos or entire channels from YouTube in order to download them with the help of the yt-dlp tool.

  • Movgrab

    Video portals such as YouTube or Vimeo offer a wealth of curious and entertaining short films. If you want to enjoy them offline, a small tool called Movgrab can help.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More