Download media from the store without installing the application
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Nemo c696c6a31c
11 months ago
.github/workflows Switch to environment variables, finish Docker 12 months ago
.env.sample Switch to environment variables, finish Docker 12 months ago
.gitignore Switch to environment variables, finish Docker 12 months ago
Dockerfile no need for dockerignore 12 months ago
LICENSE Initial Commit 2 years ago Update 11 months ago
run.php Print the JWT 11 months ago


Download media from the store without installing the application. The script behaves the same way as the application, and it can only download media that you will have access to, so please purchase the media from before you run this script.

Tested mainly against "Gloomhaven: Jaws of the Lion".


I didn't like the application UX, so wrote this script instead to download the files. The app stretches the play/pause button on my iPhone SE and it looked very ugly. Plus, I can uninstall the app now and play the files anywhere. Kudos for Forteller for having a clean API and no DRM.

How to use

First configure your credentials in the .env file.

cp .env.sample .env

Edit the .env file with your correct credentials.

Getting your SKU

The SKU is the product code for each of the Forteller Titles. This is required for downloading the correct title. This script authenticates using your credentials, so you can only download titles you have purchased already.

SKU Game
raven_aab Above and Below
ceph_gh Gloomhaven
ceph_jaws Jaws of the Lion
suc_mid1 Middara: Act 1
ceph_fh Frosthaven
skg_iso The Isofarian Guard

In the commands that follow, please replace SKU with the correct SKU from the left column.

Running using Docker

Make sure you have configured your credentials as per the above.

Login to the GitHub Container Registry:

  1. Create a new Personal Access Token with the read:packages scope.
  2. Run docker login Put your GitHub username as the username, and the token you generated above as the password.

Downloading files using Docker

Change $HOME/Downloads to the directory where you'd like the files to be written. A directory is automatically created here for whichever SKU you download.

# Set SKU to one of `ceph_gh`,`ceph_jaws`,`suc_mid1`,`ceph_fh`,`skg_iso`
docker run -it --init --user $UID --volume "$HOME/Downloads:/downloads" --env-file .env SKU /downloads

Running using local PHP

You'll need php, php-curl installed, and replace {SKU} with a valid SKU

git clone
cd forteller-dl
set -a
source .env
set +a
php run.php SKU [/optional/path/to/output/dir]


The script is functional enough for me, so this will likely never get done. But ideas:

  • Run with Docker
  • Cleanup code
  • API Documentation?
  • Tag the MP3 files as they are saved


Licensed under the MIT License. See LICENSE file for details.