|
3 years ago | |
---|---|---|
01-YT-map | 4 years ago | |
02-YT-viz | 3 years ago | |
03-YT-traces | 3 years ago | |
_data | 4 years ago | |
_graphics | 3 years ago | |
.gitignore | 4 years ago | |
BBCTV_env.yml | 4 years ago | |
LICENSE | 3 years ago | |
Pipfile | 4 years ago | |
Pipfile.lock | 4 years ago | |
Readme.md | 4 years ago |
Readme.md
Architectures of Choice - Vol.1: Youtube
Any interface to a vast catalog of media is, explicitly or not, an ordering of choices. This project presents a series of experiments in mapping recommendations on the YouTube platform. It acts as a starting point towards a visual understanding of how choice is directed, generated, and controlled by algorithmic systems.
This project was initially commissioned as a partnership between Supra Systems Studio and BBC R&D for Everything Happens So Much, an exhibition at the London College of Communication (London Design Festival, Sept. 2018). The last section on traces is the result of further development and reflection in collaboration with Betti Marenko for the Research Through Design conference (March 2019).
for further information see my website and our Research Through Design paper:
Marenko, B. and Benqué, D. (2019) ‘Speculative diagrams: Experiments in mapping Youtube’, in Method & Critique; frictions and shifts in RTD. Research Through Design, TU Delft. doi: https://doi.org/10.6084/m9.figshare.7855811.v1.
Structure of the repository
Scraping 01-YT-map
Three probes gather Youtube recommendation data, using headless web-browser Selenium. The data are written to a Neo4j graph database (see _data).
ripple.py
attempts to map all recommendations for n levels
digger.py
logs all recommendations but only follows one random link
simple_digger.py
only follows one random link
Visualisation 02-YT-viz
Attempts to visualise data from the graph using tools such as:
- Neo4j browser
- Python: matplotlib, networkx, datashader
- Mermaid.js
- Gephi
Traces 03-YT-traces
Focused visualisations of single paths through Youtube, showing details of each video such as title, author, and views. These are shown as static images of short traces, and animations of much longer ones.
Installation
Database
Most of this project works with a Neo4j graph database (Community Edition 3.5.1). To install see their manual.
If you do not want to install Neo4j, try the web visualisation in the Traces section which only stores data in .csv files.
Python
The Conda environment provided: BBCTV_env.yml
was used for early experiments with various software and is therefore bloated with unused packages. I then moved to Pipenv after failing to replicate the Conda env on a new machine. Pipfile is much leaner but may be missing some packages depending on which scripts you are trying to run.
To install using Pipenv run the following from the repository root:
pipenv install
adding --dev
to also install an iPython kernel
Most of the Python code is the result of explorations using the Hydrogen package for Atom. This accounts for some of the spaghetti coding style and for the # %%
markers that separate notebook cells. The code should still run in other IDEs or from the command line.
Data
Please see the data directory for instructions on how to load the graph database in Neo4j.