White House Youtube Dislike Manipulation

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

Grand 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

This research was featured in a youtube video.


Code wh.sh:

# Zoe Phin, 2021/01/26

require() { sudo apt-get install -y 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
            }
            D=$6
        } END {
            printf "%-19s %7d\n", "Total", DLost
        }' 
        echo
    done | awk '{ print } $1=="Total" { GT+=$2 } 
        END { printf "%-17s %9d\n", "Grand 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

Version 2.0: Cleaner and grabs stats at random 60 to 120 second interval.

# Zoe Phin, v2.0 - 2021/02/20

require() { sudo apt-get install -y gnuplot; }

collect() {
    url="https://www.youtube.com"
    while true; do
        for vid in $(wget -qO- "$url/c/WhiteHouse/videos" | grep -o 'watch?v=[^"]*'); do
            wget -qO- $url/$vid | egrep -o '[0-9,]* (views|likes|dislikes)' |\
            sed -n 1~2p | tr -d '[:alpha:],\n' |\
            awk -vL=$url/$vid -vD="$(date +"%s %x,%R:%S" | tr -d '\n')" '
                NF==3 { printf "%s %s %9s %9s %9s\n", L, D, $1, $2, $3 }'
        done
        sleep $(seq 60 120 | shuf | head -1)
    done | tee -a data.csv
}

dislikes() {
    for vid in $(cut -c1-44 data.csv | sort -u); do	
        awk -vv=$vid 'BEGIN { print v } $1==v { 
            Diff=$6-Last
            if (Diff < 0) printf "%s %+7d\n", $3, Lost+=Diff 
            Last=$6
        } END {
            printf "%-19s %7d\n\n", "Total", Lost
        }' data.csv
    done | awk '{ print } $1=="Total" { GT+=$2 } 
        END { printf "%-17s %9d\n", "Grand Total", GT 
    }'
}

plot() { n=0
    for vid in $(cut -c1-44 data.csv | sort -u); 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 noenhanced '$vid'
        set xdata time
        set timefmt '%s'
        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
}

Published by Zoe Phin

https://phzoe.com

72 thoughts on “White House Youtube Dislike Manipulation

Leave a Reply to 花村紅緒 Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: