I’ve seen screenshots of YouTube modifying dislikes of White House videos. I decided I would do a thorough analysis myself. I wrote a script to check video stats every 80 seconds for 24 hours – for all videos on White House’s YouTube channel.
The collected data is archived here and here. The format is space-separated “CSV”, as follows:
VideoURL UnixTimestamp Date,Time Views Likes Dislikes
Here is a sample of the most egregious manipulation:
Some videos were delisted in minutes!:
https://www.youtube.com/watch?v=2bpSkdYUtNU 1611771197 01/27/2021,13:13:17 1227 437 2963 https://www.youtube.com/watch?v=2bpSkdYUtNU 1611771285 01/27/2021,13:14:45 1463 441 2999 https://www.youtube.com/watch?v=2bpSkdYUtNU 1611771372 01/27/2021,13:16:12 1763 449 3030 https://www.youtube.com/watch?v=2bpSkdYUtNU 1611771459 01/27/2021,13:17:39 2476 455 3060 https://www.youtube.com/watch?v=2bpSkdYUtNU 1611771546 01/27/2021,13:19:06 2640 459 3098 https://www.youtube.com/watch?v=2bpSkdYUtNU 1611771720 01/27/2021,13:22:00 3588 470 3183 https://www.youtube.com/watch?v=Fxo3OHKjfxs 1611699362 01/26/2021,17:16:02 918 405 4942 https://www.youtube.com/watch?v=Fxo3OHKjfxs 1611699448 01/26/2021,17:17:28 1202 412 4976 https://www.youtube.com/watch?v=Fxo3OHKjfxs 1611699534 01/26/2021,17:18:54 1375 415 5026 https://www.youtube.com/watch?v=juqHZYKzyx0 1611766646 01/27/2021,11:57:26 255 375 1771 https://www.youtube.com/watch?v=juqHZYKzyx0 1611766733 01/27/2021,11:58:53 455 380 1823 https://www.youtube.com/watch?v=juqHZYKzyx0 1611766819 01/27/2021,12:00:19 455 383 1852 https://www.youtube.com/watch?v=juqHZYKzyx0 1611766906 01/27/2021,12:01:46 819 387 1886 https://www.youtube.com/watch?v=juqHZYKzyx0 1611766992 01/27/2021,12:03:12 1148 393 1932 https://www.youtube.com/watch?v=juqHZYKzyx0 1611767079 01/27/2021,12:04:39 1462 397 1971 https://www.youtube.com/watch?v=juqHZYKzyx0 1611767166 01/27/2021,12:06:06 1830 398 2019 https://www.youtube.com/watch?v=ucvgAZG_IT4 1611770591 01/27/2021,13:03:11 1587 83 2040 https://www.youtube.com/watch?v=ucvgAZG_IT4 1611770764 01/27/2021,13:06:04 3014 95 2114
Likes+Dislikes was greater than views in some cases. Although that seems impossible, Youtube updates views slower, so they do not reflect real views at the time. For example:
https://www.youtube.com/watch?v=jw1_00uI02U 1611720090 01/26/2021,23:01:30 44404 924 8099 https://www.youtube.com/watch?v=jw1_00uI02U 1611720176 01/26/2021,23:02:56 44404 924 8118 https://www.youtube.com/watch?v=jw1_00uI02U 1611720260 01/26/2021,23:04:20 44404 925 8132 https://www.youtube.com/watch?v=jw1_00uI02U 1611720345 01/26/2021,23:05:45 44404 925 8151 https://www.youtube.com/watch?v=jw1_00uI02U 1611720429 01/26/2021,23:07:09 44404 925 8168 https://www.youtube.com/watch?v=jw1_00uI02U 1611720514 01/26/2021,23:08:34 44556 925 8184 https://www.youtube.com/watch?v=jw1_00uI02U 1611720599 01/26/2021,23:09:59 44556 925 8199 https://www.youtube.com/watch?v=jw1_00uI02U 1611720683 01/26/2021,23:11:23 44556 928 8219 https://www.youtube.com/watch?v=jw1_00uI02U 1611720768 01/26/2021,23:12:48 44556 928 8237
So it’s possible for likes and dislikes to accumulate while views stays the same. Eventually, views jumps up to better reflect reality.
The record of every time dislikes were removed is archived at https://pastebin.com/raw/F4ELDc4R
Grant Total -130321
130 Thousand dislikes were removed in a 24hr period!
And this is for the most popular US President of all time!
Enjoy 🙂 -Zoe
Update
The timezone for the charts is UTC (London). Did you notice the huge drop at 06 hour (1 AM US Eastern)? Most working people go to sleep by that time. Coincidence? I think not.
Code wh.sh:
# Zoe Phin, 2021/01/26 require() { sudo apt-get install curl gnuplot; } stats() { list=$(curl -s 'https://www.youtube.com/c/WhiteHouse/videos' | grep -o 'watch?v=[^"]*') for i in $list; do link="https://www.youtube.com/$i" date=$(date +"%s %x,%R:%S" | tr -d '\n') curl -s $link | tr -d ',' | tr '}' '\n' > new grep -m 1 -o '[0-9,]* views' new > .views grep -m 1 -o '[0-9,]* likes' new > .likes grep -m 1 -o '[0-9,]* dislikes' new > .dislikes paste .views .likes .dislikes | awk -vL=$link -vD="$date" ' NF==6{printf "%s %s %9s %9s %9s\n", L, D, $1, $3, $5}' done } collect() { while true; do stats; sleep 75 done | tee -a data.csv } dislikes() { list=$(cut -c1-44 data.csv | sort -u) for vid in $list; do echo $vid grep ^$vid data.csv | awk '{ DiffD=$6-D if (DiffD < 0) { printf "%s %+7d\n", $3, DiffD DLost+=DiffD } L=$5; D=$6 } END { printf "%-19s %7d\n", "Total", DLost }' echo done | awk '{ print} $1=="Total" { GT+=$2 } END { printf "%-17s %9d\n", "Grant Total", GT }' } plot() { list=$(cut -c1-44 data.csv | sort -u) let n=0 for vid in $list; do let n++ awk -vV=$vid '$1==V {print $2" "$4" "$5" "$6}' data.csv > plot.csv echo "set term png size 740,740 set key top left set grid xtics ytics set title '$vid' set timefmt '%s' set xdata time set xtics format '%Hh' plot 'plot.csv' u 1:2 t 'Views' w lines lc rgb 'black' lw 2,\ '' u 1:3 t 'Likes' w lines lc rgb 'green' lw 2,\ '' u 1:4 t 'Dislikes' w lines lc rgb 'red' lw 2 " | gnuplot > example${n}.png done }
Run:
$ source wh.sh; require
Collect data:
$ collect ( press Ctrl-C when you're done )
Record of dislike drops:
$ dislikes
Generate charts:
$ plot