This is the project codebase of our academic paper Sharing Frissons among Online Video Viewers: Exploring the Design of Affective Communication for Aesthetic Chills. The paper is (will be) available here at DOI 10.1145/3613904.3642818 after CHI'24 (The ACM CHI conference on Human Factors in Computing Systems) on May 11–16, 2024.
To cite the paper:
TBA after published.
- Use Chromium-based browsers.
- Install Node.js dependencies (e.g.,
npm install) at the root folder. - Install the Chrome extension at folder
browser-extension. - Connect the computer and the Raspberry Pi to the same LAN.
- Copy the
sensorsfolder to Raspberry Pi. - Run
sensors/main.pyon Raspberry Pi. - Run
service/server/main.json the computer. - Open
service/client/index.htmlon the computer. - Open one of the four sample videos (links in the paper).
- To run the sensors, use the
service/client/index.htmlcontrol panel website. - To run the feedback, click the browser extension icon and use the popup control panel.
- Optionally, checkout the browser devtools as well.
In the second diagram, the central central service/server communicate with the sensors via MQTT with the following topics:
sensor/commands:service/serverpublishes,sensorssubscribe{action}sensor/data:sensorspublishes,service/serversubscribes{ts, GSR, HR}
The central service/server communicate with the browser extension via HTTP with the following endpoints:
- POST
/playbackw/ JSON body{action, timestamp, offset}(the service will add userID and videoID before it stores the data to DB.)- 200 'OK'
- 418 'error message' (missing arguments or MongoDB insertion error)
The central service/server communicate with the frontend service/client via HTTP with the following endpoints:
- POST
/idw/ JSON body{userID, videoID}- 200 'OK'
- 418 'error message'
- POST
/sensorw/ JSON body{on: true/false}- 200 'OK'
- 418 'error message'
I should have had the Pi directly write data to the computer's MongoDB instance over LAN. But I have already written the MQTT part... >.<
This codebase is co-authored by @fhfuih and @essiecao. The co-authorship may not be correctly reflected on GitHub's Contributor page.
This codebase is licensed under GNU General Public License Version 3.0.
