設(shè)計一個不顯示或播放任何聲音的設(shè)備,可以無休止地播放視頻
算法決定了我們看到的新聞,助長了我們分裂的意識形態(tài)。我們能不能通過WiFi破壞過濾氣泡來增加細(xì)微差別?
在這個項目中,我們設(shè)計了一個不顯示或播放任何聲音的設(shè)備,可以無休止地播放YouTube視頻。目標(biāo)是潛在地影響連接到相同Wi-Fi網(wǎng)絡(luò)的用戶的視頻推薦算法。這個系統(tǒng)被巧妙地隱藏在一個瓶子里,在公共場所不被注意。
客觀的
該項目的主要目標(biāo)是:
流媒體YouTube視頻在后臺(沒有顯示或聲音)。
循環(huán)播放一個或多個視頻
自動化整個視頻播放過程。
觀察這些視圖是否被YouTube識別和計數(shù)。
開發(fā)步驟
我們首先嘗試使用ESP32來傳輸視頻,但發(fā)現(xiàn)使用樹莓派更好。我們同時開發(fā)了這個項目的三個不同部分:視頻回放、用于分析的數(shù)據(jù)記錄和房屋的3D建模。
Arduino (ESP32)
1. 數(shù)據(jù)記錄-谷歌表API
為了跟蹤播放的視頻,并與同一Wi-Fi網(wǎng)絡(luò)下不同賬號的推薦視頻進(jìn)行對比,我們使用谷歌Sheets API建立了數(shù)據(jù)記錄系統(tǒng)。
修改由K. Suwatchai (Mobizt)創(chuàng)建的代碼,建立與谷歌Sheet的連接并開始記錄數(shù)據(jù)。
這是一個學(xué)習(xí)如何隱藏API密鑰和其他敏感信息的好機(jī)會,盡管轉(zhuǎn)向Raspberry Pi發(fā)生在這方面取得很大進(jìn)展之前。
2. 連接到ESP32 - YouTube API
在建立Wi-Fi連接后,努力將ESP32連接到視頻播放。下面是HACK-WIFI-1中的代碼。ino用于連接到Y(jié)ouTube API并訪問搜索功能。
在初始設(shè)置結(jié)構(gòu)并建立Wi-Fi連接之后,意圖是連接到Y(jié)ouTube API以訪問搜索功能,以便我們可以播放有關(guān)特定主題的視頻,并以JSON格式返回結(jié)果鏈接和信息。雖然這是成功的,但我們很快意識到期望的播放在ESP32上不起作用,我們選擇將注意力轉(zhuǎn)移到使用樹莓派5上。
樹莓派5
1. 連接到樹莓派5
第一個挑戰(zhàn)是將樹莓派連接到Wi-Fi。由于連接不穩(wěn)定,這比預(yù)期要困難得多。在多次嘗試重新連接和排除故障后,我們終于建立了穩(wěn)定的連接。
2. 流媒體視頻沒有屏幕
連接上后,我們嘗試在不使用屏幕的情況下播放YouTube視頻。我們使用了兩種工具:
yt-dlp:提取直接視頻流URLffmpeg:播放視頻流不顯示視頻或播放任何音頻。
安裝依賴關(guān)系:
單個視頻流腳本(play_video.py):
運行腳本:
3. 用電池給樹莓派供電
我們?yōu)闃漭?尋找了兼容的電池。經(jīng)過一些試驗和研究,我們找到了合適的產(chǎn)品,并按照產(chǎn)品數(shù)據(jù)表中的說明使其工作。
4. 連接屏幕
為了解決未計數(shù)視圖的問題,我們在樹莓派上連接了一個顯示器。這使我們能夠:
Flash一個具有GUI支持的新操作系統(tǒng)版本。
實時監(jiān)控樹莓派上發(fā)生的事情。
5. 流媒體YouTube視頻顯示
在連接屏幕后,我們使用mpv(視頻播放器)全屏播放YouTube視頻,模擬真實視圖。
播放命令:
6. 自動循環(huán)播放
為了使整個過程自動化,我們創(chuàng)建了一個腳本來播放YouTube視頻列表,每個視頻之間有5秒的暫停。
播放腳本(auto_player.py):
7. 數(shù)據(jù)記錄-谷歌表API
為了跟蹤播放的視頻,并與同一Wi-Fi網(wǎng)絡(luò)下不同賬號的推薦視頻進(jìn)行對比,我們使用谷歌Sheets API建立了數(shù)據(jù)記錄系統(tǒng)。
隨著使用樹莓派的切換,ESP32在這方面所做的工作必須用python重新完成。使用Allan Schwartz創(chuàng)建的代碼,經(jīng)過修改,建立了一個谷歌Sheet的鏈接,用于數(shù)據(jù)記錄。此外,在此步驟中,還使用了隱藏敏感信息(如API密鑰)的方法。
8. 推薦- YouTube API
使用YouTube API中的示例,我們嘗試訪問推薦視頻列表,這將允許我們監(jiān)控我們的“感染”的影響。然而,由于API中實現(xiàn)的隱私保護(hù),我們遇到了一些挑戰(zhàn)。
本文編譯自hackster.io