Feat: add saving via API or locally for audio/video plugins #3580
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR updates the
jspsych-html-video-response
andjspsych-html-audio-response
plugins to support additional ways of saving audio/video data beyond storing base64-encoded text in the response field.The new options are:
Save locally – Downloads the recorded file directly to the participant’s default Downloads folder. (Web browsers do not allow arbitrary file system access from web pages, so saving elsewhere is not possible.) The saved filename is a randomly generated UUID, which is also stored in the response field of the jsPsych data. This allows the file to be linked to its trial data later, while keeping the file itself de-identified (at least at the level of the filename).
Save via API – Uploads the recorded file to a specified API endpoint. The endpoint is expected to return the filename (or unique ID) it uses to store the file. This value will be stored in the response field of the jsPsych data. In most cases, I'd recommend generating a random UUID filename server-side for this, but other approaches are also possible.
Because API uploads may take a few seconds, the plugin displays a loading spinner during the upload. The accompanying text can be customised via the
upload_wait_message
parameter.