- Converting a string to a MongoDB ObjectId
- Authenticating PyMongo in a non-Flask app
- Choosing which database fields to return
- Get a value from a Python dict
- If there’s an egg_info error when installing a module, run sudo pip3 install -U setuptools
Author Archives: Mary-Ann Horley
Evaluation Outline
Introduction
Controversies
Context
- YouTube Kids
- Other Apps
Infrastructure
Python
- Flask
Database
- YouTube API
- MongoDB
- localStorage
Interface
- UX design for children
Algorithms
Basic Algorithms
- Random
- Latest
- Home Page Recommendations
Personalised Algorithms
- Recently Viewed
- Most Popular
- Search Results
Conclusion
References
To look into (14th March)
- QR code for authentication
- HTML5 localStorage, can it be used instead of MongoDB? – Only if using Javascript, which would be an unneccessary distraction.
First survey form
This survey is designed to gain an initial perspective on 1) what devices and apps children use, and 2) what rules and policies parents have around their use.
I posted it in my local Facebook group with the following message:
Hi all, some of you might know that I’m doing an MA in Digital Media and I’m focusing on children’s interactions with media.I’ve created a survey about children’s video viewing habits, please fill it in if you’ve got a few minutes. Responses welcome if you’re screen-free too.Thanks very much!https://maryannhorley.typeform.com/to/fC6Je8
Video Selection
Each page in the app displays a selection of videos from the registered playlist according to different criteria.
Home Page
The aim of the home page is to show user videos that they like and will learn from, including those that they might not come into contact with if they just choose based on options generated from previous viewing.
The home page video selection will be generated using a set of criteria, both based on information about the user, and events happening in the wider world.
Type | Source | Notes and examples |
Events | Calendar within app database | Olympics/Paralympics, World Cup, rocket launches, |
Festivals | Calendar within app database | Christmas, Easter, Diwali, Passover |
Weather | Weather API Python modules such as MetOffer or Darkskies The user’s location obtained from their IP address |
|
Season | Location from IP address Calendar within app database |
|
Popular | Keen.io API | Videos within the user’s playlist that are popular among all users of the app |
Random | Random Python library |
I am displaying a grid of 12 video thumbnails on the home page. So with six types of criteria I will generate a list including two of each, and if nothing is available fitting those criteria more random videos will be added.
To test whether this is useful, I will set up an A/B test where users are randomly shown this homepage, or a totally random home page.
Recently Viewed
The Keen.io web analytics API allows developers to add “events” to their app that are registered on the platform whenever a user performs a particular action.
I first added an event which records whenever a user views a particular video.
keen.add_event("video_view", { "_id": user, "page": video, "referrer": url, "ip": ip })
Then I created a Route within Flask to generate a page of recently viewed videos, and used the Keen API to create a List of videos viewed over the last seven days.
recent_videolist = keen.select_unique("video_view", target_property="page", timeframe="this_7_days")
Popular
This page will show the videos viewed most often on the device, as recorded by the Keen API.
New
This page simply shows the latest videos added to the database from the playlist associated with the device.
Search
I am aiming for search results to be used to generate a playlist of videos based on the search terms, for example a search generates ten results, the user picks one of them, then the other nine results are shown underneath the video, and if autoplay is used the next in the list will play.
Recommendations from a video
The problem with recommendations based on the metadata of previous video (or whatever content you are working with) is the tendency for the subject to drift away from what the user was initially interested in.
They might choose or search for a video about farm equipment and get something relevant, then be recommended a cartoon including a tractor, then be recommended a cartoon from the same show.
Each time the app would have recommended a video based on the meta keywords of the original video but it YouTube Kids presumably shows a bias towards children’s videos when surfacing content. This is a good idea if videos are pulled from a general database and algorithmically filtered for suitability, but in my app, videos will be preselected so it isn’t as much of a consideration and I am free to use a system that aims to satisfy curiosity.
Using a method similar to the search results, each when selected video will generate a playlist of further videos based on the metadata of the initial video. Only when the user has watched all of those or follows a different navigation path will a different selection of videos load up.
Next Steps
- To gather (from YouTube) or add (using video classification techniques) metadata describing each video to the database in order to power related videos and search results.