(function () {
// 1) Basic bot filter (extend if you like)
function isBot() {
return /(bot|crawl|spider|google|bing|slurp|yandex|facebook|linkedin|pinterest|preview|whatsapp|discord|telegram|headless|puppeteer)/i
.test(navigator.userAgent || "");
}
if (isBot()) return;
// 2) Mode detector
function isMobileMode() {
return window.matchMedia("(max-width: 767px)").matches ||
/Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent || "");
}
// 3) Your ad configs (swap keys/sizes to match your network units)
const AD = {
mobile: { key: "aa6d52a6037d0558c2a19dc52b6aa824", width: 320, height: 50 }, // 320x50
desktop: { key: "a49752dcde88f4fde5987d25efbb7168", width: 468, height: 60 } // 468x60
};
// 4) Create container if it doesn't exist
function ensureContainer() {
let container = document.getElementById("ad-container");
if (!container) {
container = document.createElement("div");
container.id = "ad-container";
container.style.display = "none";
document.body.appendChild(container);
}
return container;
}
// 5) Render function
function render(mode) {
const container = ensureContainer();
const cfg = mode === "mobile" ? AD.mobile : AD.desktop;
// Set global atOptions for ad network
window.atOptions = {
key: cfg.key,
format: "iframe",
height: cfg.height,
width: cfg.width,
params: {}
};
// Clear previous ad/script then inject
container.innerHTML = "";
container.style.display = "block";
const s = document.createElement("script");
s.src = `//selfportraitproved.com/${cfg.key}/invoke.js`;
s.async = true;
container.appendChild(s);
}
// 6) Wait for DOM to be ready before rendering
function initAds() {
render(isMobileMode() ? "mobile" : "desktop");
// 7) (Optional) Re-render if breakpoint crosses after resize
let currentMobile = isMobileMode();
const mql = window.matchMedia("(max-width: 767px)");
if (mql.addEventListener) {
mql.addEventListener("change", (e) => {
const nowMobile = e.matches;
if (nowMobile !== currentMobile) {
currentMobile = nowMobile;
render(currentMobile ? "mobile" : "desktop");
}
});
} else if (mql.addListener) { // older browsers
mql.addListener((e) => {
const nowMobile = e.matches;
if (nowMobile !== currentMobile) {
currentMobile = nowMobile;
render(currentMobile ? "mobile" : "desktop");
}
});
}
}
// 8) Execute when DOM is ready
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", initAds);
} else {
initAds();
}
})();
The stacked cast also includes Kit Connor (Heartstopper), Paapa Essiedu (The Capture), Julia Davis (Gavin & Stacey), Nick Mohammed (Ted Lasso), Patricia Allison (Sex Education), Diane Morgan (Motherland) and Lucian Msamati (Gangs of London).
The audiobook is released today (30th November) – you can listen to it right here or sign up for a 30-day free trial of Audible here.
Cox said: “Dickens was a genius storyteller and Oliver Twist may be his greatest ever work. Reimagining a character as complex and changeable as Fagin offers a real challenge for an actor, and I hope listeners enjoy our telling of this masterpiece.”
More like this
👉 For more insights, check out this resource.
Kaluuya added: "There are few villains as infamous or terrifying as Bill Sikes, and I really enjoyed getting the chance to record a new take on him for Audible. Keep the lights on – some of his scenes are really dark."
Meanwhile, Mendes said: "Dickens was the ultimate storyteller, and hearing Oliver Twist come to life in such a compelling, 3D way feels exactly how he might have wanted it to be experienced.
👉 Discover more in this in-depth guide.
"The cast is fantastic, and I’ve never heard an audio production before that is so filmic. It’s cinema for the ears."
The new audio drama tells Dickens's classic story, with young orphan Oliver born into a grim 19th century workhouse, yet later being evicted and eventually getting ingratiated into a gang of young pickpockets led by the Artful Dodger (Elijah Wolf) and Cox's Fagin.
The audiobook features an original score from Dan Gillespie-Sells, and includes Foley recordings captured in Dickens’s former London house at 48 Doughty Street, in the rooms where he originally wrote the novel.
By entering your details, you are agreeing to our terms and conditions and privacy policy. You can unsubscribe at any time.
Two more Audible Original adaptations of Charles Dickens classics are set to be produced by Mendes, with the second instalment in this trilogy being released next year.
Other recent releases from Audible include Richard Armitage's debut audiobook Geneva, which also features Armitage's former Spooks co-star Nicola Walker.
Sam Mendes' Oliver Twist is available now exclusively on Audible - sign up for a 30-day free trial of Audible here.
Looking for something to watch? Visit our TV Guide and Streaming Guide to find out what's on.
The latest issue of Radio Times magazine is on sale now – subscribe now. For more from the biggest stars in TV, listen to the Radio Times View From My Sofa podcast.