commit 6234c6bf55e8fbe90a87d155f03285140d3c01a9 Author: n3wk Date: Mon Aug 24 15:47:21 2026 +0200 Initial commit: Dick Show Index pipeline with install script and docs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..10a5b8d --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +venv/ +env/ +.env + +# Logs +*.log + +# Data files (too large for git, share via other means) +audio/ +transcripts/ +data/analysis/ +data/index.db +data/index.db-wal +data/index.db-shm + +# IDE +.idea/ +.vscode/ +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db + +# Local config +config.py \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..68167bb --- /dev/null +++ b/README.md @@ -0,0 +1,138 @@ +# Dick Show Index + +A complete pipeline to download, transcribe, analyze, and search all episodes of **The Dick Show** podcast. + +## What This Does + +1. **Downloads** all episodes from the official RSS feed (Libsyn) +2. **Transcribes** audio locally using Whisper (faster-whisper, CPU/GPU) +3. **Analyzes** each episode with an LLM (via opencode) to extract: + - Talking points with timestamps + - Arguments, ideas, and notable quotes + - Transgression Index (TI) 0-10 scoring + - Speaker attribution and content warnings +4. **Fact-checks** analyses against a verified research dossier +5. **Indexes** everything in SQLite FTS5 for instant search +5. **Exports** a master JSON (`data/dickshow_analysis.json`) for web apps + +## Quick Start + +```bash +# 1. Clone and install +git clone https://kode.hannesahlin.se/n3wk/dickshow-index.git +cd dickshow-index +./install.sh + +# 2. (Optional) Authenticate opencode for higher rate limits +opencode auth login + +# 3. Run the Rekieta arc (28 episodes): +python pipeline_all.py --eps 84 87 89 93 96 121 124 152 166 176 198 209 213 275 285 299 321 344 352 368 376 412 416 424 425 435 439 455 + +# Or run the full backlog (520 episodes): +python pipeline_all.py +``` + +## What You Get + +After running, you'll have: + +``` +data/ +├── episodes.jsonl # Episode metadata (title, date, audio URL, duration) +├── index.db # SQLite FTS5 search index +├── dickshow_analysis.json # Master analysis JSON (for web apps) +└── analysis/ + ├── ep0084.json # Per-episode analysis + fact-check + └── ... + +transcripts/ +├── ep0084.json # Raw transcript with timestamps +└── ... +``` + +## Search Examples + +```bash +# Simple search +python search.py "isom trademark" + +# Filter by tag +python search.py maddox --tag lolsuit + +# Phonetic search (Whisper mangles names) +python search.py "raketa OR riketa OR rakita" --tag nick_rekieta + +# Date range + tag +python search.py maddox --from 2017-01-01 --to 2018-12-31 --tag lolsuit + +# Context around matches +python search.py "pull up" --tag eric_july --context 2 +``` + +Output includes **timestamps** for deep-linking: +``` +[Ep 373 | Mon, 28 Aug 2023] 00:25:32-00:25:35 #nick_rekieta + "I was on Nick's show, Busting Balls, Nick Riketa." + -> https://dick.show/episode-373/ + mp3: https://traffic.libsyn.com/.../The_Dick_Show_373.mp3 +``` + +## Configuration + +Set via environment variables or edit `config.py`: + +| Variable | Default | Description | +|----------|---------|-------------| +| `OPENCODE_ANALYZE_MODEL` | `opencode/nemotron-3-ultra-free` | LLM for analysis | +| `DS_ANALYZE_PAUSE` | `45` | Seconds between analysis calls | +| `DS_ANALYZE_TIMEOUT` | `600` | Analysis timeout (seconds) | +| `DS_MIN_FREE_RAM` | `1073741824` (1GB) | Pause if RAM below this | +| `DS_MODEL` | `small` | Whisper model: `tiny`, `base`, `small`, `medium`, `large-v3` | +| `DS_DEVICE` | `cpu` | `cpu` or `cuda` | +| `DS_COMPUTE` | `int8` | `int8`, `float16`, `float32` | +| `DS_KEEP_AUDIO` | `0` | Keep MP3s after transcription (`1` to keep) | + +## Resuming / Sharing Work + +The pipeline is **fully resumable**: +- Re-run the same command → skips completed episodes +- Only missing transcripts/analyses are processed +- Share `transcripts/`, `data/analysis/`, and `data/index.db` to collaborate + +## Requirements + +- **Python 3.10+** +- **ffmpeg** (for audio processing - usually auto-installed with faster-whisper) +- **opencode CLI** (installed by `./install.sh`) +- **~50 GB free disk** for full backlog (MP3s auto-deleted after transcription by default) + +## Architecture + +``` +download.py → fetches MP3s from Libsyn RSS (resumable, size-verified) +preprocess.py → converts MP3 → clean 16kHz mono WAV (handles Libsyn quirks) +transcribe.py → faster-whisper, chunked (10-min windows, no OOM) +analyze.py → opencode subprocess with timeout + retries +verify.py → second-pass fact-check against research dossier +index.py → SQLite FTS5 index with hashtags +search.py → CLI search with timestamps + context +pipeline_all.py → orchestrates everything with resume logic +``` + +## For Contributors + +The pipeline is designed for distributed workloads: +1. Each user runs a subset of episodes (`--eps 84 87 89 ...`) +2. Results are merged via `data/analysis/` JSON files and `index.db` +3. Master JSON (`data/dickshow_analysis.json`) aggregates everything + +## License + +Private research tool over public broadcasts. Content is adult/extreme — use responsibly. + +## Support + +- Issues: https://kode.hannesahlin.se/n3wk/dickshow-index/issues +- Pipeline logs: `rekieta_run.log`, `backlog_run.log` +- Analysis logs: `analyze_run.log`, `analyze_err.log` \ No newline at end of file diff --git a/aggregate.py b/aggregate.py new file mode 100644 index 0000000..922e029 --- /dev/null +++ b/aggregate.py @@ -0,0 +1,123 @@ +"""Merge per-episode analyses into ONE master JSON: +data/dickshow_analysis.json + +Contents: + meta counts, generated_at, rubric reference + episodes full per-episode analyses, sorted by ep_num + indexes derived views for fast lookup: + by_person, by_tag_topic, edginess_ranking, saga_map +""" +import json +import os +from datetime import datetime, timezone + +from config import DATA_DIR +from analyze import ANALYSIS_DIR, MASTER_JSON +from feed import load_episodes + + +def load_analyses() -> list[dict]: + out = [] + if not os.path.isdir(ANALYSIS_DIR): + return out + for f in sorted(os.listdir(ANALYSIS_DIR)): + if not f.endswith(".json"): + continue + try: + with open(os.path.join(ANALYSIS_DIR, f), encoding="utf-8") as fh: + out.append(json.load(fh)) + except (json.JSONDecodeError, OSError) as e: + print(f"warning: skipping bad analysis file {f}: {e}") + return out + + +def aggregate() -> None: + analyses = load_analyses() + eps_meta = {e["ep_num"]: e for e in load_episodes() if e["ep_num"]} + + # attach runtime from episode metadata when available + verification status + for a in analyses: + m = eps_meta.get(a.get("ep_num")) + if m and m.get("duration_sec"): + a["runtime_minutes"] = round(m["duration_sec"] / 60) + v = a.get("_verification") or {} + a["verified"] = v.get("verdict") if isinstance(v, dict) else None + + analyses.sort(key=lambda a: (a.get("ep_num") is None, + a.get("ep_num") or 0)) + + by_person: dict[str, list] = {} + by_topic: dict[str, list] = {} + quotes_ranked = [] + ti_scores = [] + for a in analyses: + epn = a.get("ep_num") + label = f"Ep {epn}" if epn else (a.get("title") or "?")[:20] + seen_p = set() + seen_t = set() + for tp in a.get("talking_points", []): + for p in tp.get("people", []): + key = p.lower().strip() + seen_p.add(key) + by_person.setdefault(key, []).append( + {"episode": epn, "topic": tp.get("topic"), + "ts": tp.get("start_ts")}) + topic = (tp.get("topic") or "").strip().lower() + if topic: + seen_t.add(topic) + for t in sorted(seen_t): + by_topic.setdefault(t, []).append(epn) + for q in a.get("notable_quotes", []): + quotes_ranked.append({ + "episode": epn, "ts": q.get("ts"), "ti": q.get("ti", 0), + "quote": q.get("quote"), "why": q.get("why"), + }) + tg = a.get("transgression", {}) + if isinstance(tg.get("overall_ti"), int): + ti_scores.append({"episode": epn, "overall_ti": tg["overall_ti"], + "sincerity": tg.get("sincerity"), + "targets": tg.get("targets", [])}) + + quotes_ranked.sort(key=lambda q: -q.get("ti", 0)) + ti_scores.sort(key=lambda s: -s.get("overall_ti", 0)) + + n_verified = sum(1 for a in analyses if a.get("verified") in ("pass", "fix")) + + master = { + "meta": { + "generated_at": datetime.now(timezone.utc).isoformat(), + "podcast": "The Dick Show", + "feed": "https://thedickshow.com/feed/podcast/", + "episodes_analyzed": len(analyses), + "episodes_factchecked": n_verified, + "total_runtime_minutes": sum(a.get("runtime_minutes") or 0 + for a in analyses), + "scale": "Transgression Index 0-10, see rubric.py / README", + "note": ("Companion file for routine opencode access. " + "Per-episode analyst files live in data/analysis/, " + "raw transcripts in transcripts/. Each episode carries " + "'verified': pass|fix|null from the dossier fact-check " + "pass (verify.py). Treat verified=null as unconfirmed."), + }, + "episodes": analyses, + "indexes": { + "by_person": {k: v for k, v in sorted(by_person.items())}, + "topics_by_episode": {k: sorted(set(x for x in v if x)) + for k, v in sorted(by_topic.items())}, + "edginess_ranking": { + "top_overall_ti": ti_scores[:25], + "top_quotes": quotes_ranked[:50], + }, + }, + } + + tmp = MASTER_JSON + ".tmp" + with open(tmp, "w", encoding="utf-8") as f: + json.dump(master, f, ensure_ascii=False, indent=1) + os.replace(tmp, MASTER_JSON) + print(f"master -> {MASTER_JSON} " + f"({len(analyses)} episodes, {len(quotes_ranked)} ranked quotes)") + + +if __name__ == "__main__": + aggregate() diff --git a/analyze.py b/analyze.py new file mode 100644 index 0000000..5da3d8e --- /dev/null +++ b/analyze.py @@ -0,0 +1,289 @@ +"""Analyze episodes via the local `opencode run` CLI. + +For each transcript: + 1. export readable timestamped txt (export_txt.py) + 2. call: opencode run -f "" + 3. parse/validate the returned JSON (retry up to 3x on bad output) + 4. save data/analysis/epXXXX.json + +Then aggregate all analyses into one master file for routine opencode access: +data/dickshow_analysis.json (run aggregate.py, or it runs automatically + after each new analysis in this script) + +Resumable: existing per-episode analyses are skipped unless --force. +""" +import argparse +import json +import os +import re +import subprocess +import sys +import time +from datetime import datetime, timezone + +from config import DATA_DIR, BASE_DIR +from feed import load_episodes +from download import slug as ep_slug, audio_path +from transcribe import transcript_path as tpath +from export_txt import export_txt, txt_path +from rubric import RUBRIC, SCHEMA_EXAMPLE +from facts import CAST_SHEET + +ANALYSIS_DIR = os.path.join(DATA_DIR, "analysis") +MASTER_JSON = os.path.join(DATA_DIR, "dickshow_analysis.json") + +OPENCODE = os.environ.get( + "OPENCODE_BIN", os.path.expanduser(r"~\.opencode\bin\opencode.exe")) +# analyzer model override, e.g. opencode/x-preview-f-free +OPENCODE_MODEL = os.environ.get("OPENCODE_ANALYZE_MODEL", "").strip() +OPENCODE_TIMEOUT = int(os.environ.get("DS_ANALYZE_TIMEOUT", "900")) # 15 min + +PROMPT_TEMPLATE = """You are the show archivist for The Dick Show podcast. Attached is the FULL transcript of one episode (timestamped lines like [HH:MM:SS]). + +Your job: produce a structured analyst file for this episode. Read the ENTIRE transcript carefully, then reconstruct what was talked about, the arguments made, ideas/bits coined, and rate how edgy/transgressive the content is using the rubric below. The show contains extreme adult language; analyze it dispassionately like a content researcher - do not sanitize quotes, do not editorialize morally. + +IMPORTANT - speaker attribution rules: +{cast} +Base attributions on what voices actually say (self-identifications, direct address) - never on famous-name pattern matching. + +{rubric} + +OUTPUT RULES: +- Output ONLY one valid JSON object. No markdown fences, no commentary before or after. +- Match exactly these keys (extra keys not allowed): {schema} +- All timestamps are SECONDS (number), converted from the [HH:MM:SS] markers. +- talking_points: cover every distinct topic IN ORDER of appearance + (5-15 items; summaries max ~40 words each). +- notable_quotes: the most characteristic/extreme/funny verbatim lines (5-10 items). +- If a field would be empty, use [] or "". +- ep_num and title must be taken from the transcript header comments. + +Begin now.""" + +FENCES_RE = re.compile(r"^```(?:json)?\s*|\s*```$", re.MULTILINE) + + +def build_prompt() -> str: + return PROMPT_TEMPLATE.format(cast=CAST_SHEET.strip(), + rubric=RUBRIC.strip(), + schema=SCHEMA_EXAMPLE.strip()) + + +def _repair(text: str) -> str: + """Common LLM-JSON repairs: fences, trailing commas, stray text, missing commas.""" + text = FENCES_RE.sub("", text.strip()).strip() + start = text.find("{") + end = text.rfind("}") + if start > 0 or end < len(text) - 1: + if start != -1 and end > start: + text = text[start:end + 1] + # trailing commas before } or ] + text = re.sub(r",(\s*[}\]])", r"\1", text) + # missing commas between object members: "key": "value" "key2": "value2" -> add comma + text = re.sub(r'"\s+"', '", "', text) + # missing commas between array elements: "value1" "value2" -> add comma + text = re.sub(r'"\s*\n\s*"', '",\n"', text) + # missing commas after closing brace/bracket followed by opening brace/bracket + text = re.sub(r'(\]|\})\s*(\[|\{)', r'\1,\2', text) + return text + + +def strip_to_json(text: str): + # strict=False: tolerate raw newlines/tabs inside strings (common LLM slip) + return json.loads(_repair(text), strict=False) + + +REPAIR_PREAMBLE = ( + "IMPORTANT: Your reply must be ONE valid strict JSON object matching the " + "schema below. Double-quoted keys/strings, escape quotes inside strings " + "(\\\"), no trailing commas, no markdown fences, no commentary.\n\n" +) + + +def ensure_content_match(obj: dict, attach_txt: str) -> None: + """Guard against cross-episode contamination: the analysis must reference + words that actually occur in this episode's transcript.""" + import json as _json + with open(attach_txt, encoding="utf-8") as f: + lines = [ln for ln in f if ln.startswith("[")] + if not lines: + return + sample = lines[:40] + lines[len(lines)//2:len(lines)//2+40] + lines[-20:] + stop = {"there", "about", "would", "because", "really", "going", "gonna", + "know", "like", "that", "this", "with", "what", "when", "they", + "them", "then", "than", "have", "been", "were", "just", "yeah"} + words = {w.strip(".,!?\"':;()[]").lower() + for ln in sample for w in ln.split() + if len(w) > 4 and w.strip(".,!?\"':;()[]").lower() not in stop} + blob = _json.dumps(obj, ensure_ascii=False).lower() + hits = {w for w in words if w in blob} + if len(hits) < 5: + raise ValueError( + f"content mismatch: analysis shares only {len(hits)} vocabulary " + f"items with this transcript - likely wrong-session output") + + +def validate(obj: dict) -> None: + required_top = ["ep_num", "title", "one_line_summary", "guests", + "talking_points", "arguments", "ideas", "notable_quotes", + "transgression"] + missing = [k for k in required_top if k not in obj] + if missing: + raise ValueError(f"missing keys: {missing}") + tg = obj["transgression"] + for k in ["overall_ti", "profanity", "slur_usage", + "harassment_or_cruelty", "sincerity"]: + if k not in tg or not isinstance(tg[k], int) or not 0 <= tg[k] <= 10: + raise ValueError(f"transgression.{k} must be int 0-10") + for q in obj.get("notable_quotes", []): + if not isinstance(q.get("ti"), int) or not 0 <= q["ti"] <= 10: + raise ValueError("quote ti must be int 0-10") + + +def run_opencode(prompt: str, attach: str) -> str: + # NOTE: deliberately NO `-c`/`-s` session reuse: `run -c` continues the + # globally-last session, which under concurrent pipelines cross-pollinates + # analyses between episodes. Every call is a fresh session. + # --auto: headless runs must not stall on permission prompts (the model + # sometimes Reads attached files for more context); scope is our own data. + cmd = [OPENCODE, "run", "--auto", "-f", attach, + "--dir", BASE_DIR] + if OPENCODE_MODEL: + cmd += ["-m", OPENCODE_MODEL] + cmd.append(prompt) + proc = subprocess.run(cmd, capture_output=True, text=True, + encoding="utf-8", errors="replace", + cwd=BASE_DIR, timeout=OPENCODE_TIMEOUT) + out = proc.stdout or "" + err = proc.stderr or "" + combined = (out + err).lower() + if "rate limit" in combined or "429" in combined: + raise RateLimitError("provider rate limit exceeded") + if not out.strip(): + raise RuntimeError(f"opencode produced no stdout: {err[-400:]}") + return out + + +class RateLimitError(RuntimeError): + pass + + +# When the provider quota dries up, stop *attempting* analyses pipeline-wide +# for a while; transcription (local) keeps running. Probe again after cooldown. +_RATE_COOLDOWN = {"until": 0.0} +COOLDOWN_SECONDS = int(os.environ.get("DS_RATE_COOLDOWN", "900")) + + +def analyze_episode(ep: dict, force: bool = False, retries: int = 3) -> dict | None: + os.makedirs(ANALYSIS_DIR, exist_ok=True) + apath = os.path.join(ANALYSIS_DIR, f"{ep_slug(ep)}.json") + if os.path.exists(apath) and not force: + return None + if time.time() < _RATE_COOLDOWN["until"]: + print(f" (analysis cooldown {int(_RATE_COOLDOWN['until'] - time.time())}s " + f"- will catch up later)", flush=True) + return None + if not os.path.exists(tpath(ep)): + print(f" no transcript for {ep['title']}; skipping", flush=True) + return None + attach = export_txt(ep) + prompt = build_prompt() + last_err = None + # escalating waits; rate limits need minutes, not seconds + waits = [10, 60, 180, 420, 600, 900] + attempt = 0 + while attempt < len(waits): + attempt += 1 + t0 = time.time() + try: + raw = run_opencode( + (REPAIR_PREAMBLE + prompt) if attempt > 1 else prompt, attach) + obj = strip_to_json(raw) + validate(obj) + ensure_content_match(obj, attach) + obj["ep_num"] = ep["ep_num"] if ep["ep_num"] else obj.get("ep_num") + obj["title"] = obj.get("title") or ep["title"] + obj["pub_date"] = ep["pub_date"] + obj["_analyzed_at"] = datetime.now(timezone.utc).isoformat() + obj["_source_transcript"] = os.path.basename(tpath(ep)) + with open(apath + ".tmp", "w", encoding="utf-8") as f: + json.dump(obj, f, ensure_ascii=False, indent=1) + os.replace(apath + ".tmp", apath) + dt = time.time() - t0 + ti = obj["transgression"]["overall_ti"] + n_tp = len(obj.get("talking_points", [])) + n_q = len(obj.get("notable_quotes", [])) + print(f" OK {os.path.basename(apath)} in {dt:.0f}s " + f"(TI={ti}, {n_tp} points, {n_q} quotes)", flush=True) + return obj + except RateLimitError as e: + last_err = e + wait = waits[min(attempt, len(waits) - 1)] + print(f" rate-limited (attempt {attempt}); " + f"sleeping {wait}s ...", flush=True) + time.sleep(wait) + except Exception as e: # noqa: BLE001 + last_err = e + wait = waits[min(attempt - 1, len(waits) - 1)] + print(f" attempt {attempt} failed: {e}; retry in {wait}s", + flush=True) + time.sleep(wait) + print(f" GIVING UP on {ep['title']} after {attempt} attempts: " + f"{last_err}", flush=True) + if isinstance(last_err, RateLimitError): + _RATE_COOLDOWN["until"] = time.time() + COOLDOWN_SECONDS + print(f" entering analysis cooldown for {COOLDOWN_SECONDS}s " + f"(transcription continues; analyses catch up later)", + flush=True) + return None + + +def main() -> None: + ap = argparse.ArgumentParser() + ap.add_argument("eps", nargs="*", type=int) + ap.add_argument("--force", action="store_true") + ap.add_argument("--no-verify", action="store_true", + help="skip the dossier fact-check second pass") + args = ap.parse_args() + eps = load_episodes() + todo = [e for e in eps + if (not args.eps or e["ep_num"] in args.eps) + and os.path.exists(tpath(e))] + print(f"analyzing {len(todo)} episode(s) with {os.path.basename(OPENCODE)}", + flush=True) + + # lazy import: verify.py imports this module at its own top level + from verify import verify_episode + + done = 0 + for i, ep in enumerate(todo, 1): + label = f"Ep {ep['ep_num']}" if ep["ep_num"] else ep["title"][:40] + existing = os.path.exists(os.path.join( + ANALYSIS_DIR, f"{ep_slug(ep)}.json")) + if not existing: + print(f"[{i}/{len(todo)}] analyzing {label} ...", flush=True) + if analyze_episode(ep, force=args.force) is not None: + done += 1 + # ALWAYS fact-check fresh analyses against the dossier + if not args.no_verify: + print(f" fact-checking {label} ...", flush=True) + verify_episode(ep) + elif not args.no_verify: + # already analyzed -> run/refresh the dossier fact-check + vpath = os.path.join(ANALYSIS_DIR, f"{ep_slug(ep)}.json") + with open(vpath, encoding="utf-8") as f: + already = "_verification" in json.load(f) + if args.force or not already: + print(f"[{i}/{len(todo)}] verifying (existing) {label} ...", + flush=True) + verify_episode(ep) + # keep the master file fresh after every run + from aggregate import aggregate + aggregate() + print(f"analyzed={done} total_files=" + f"{len([f for f in os.listdir(ANALYSIS_DIR) if f.endswith('.json')])}", + flush=True) + + +if __name__ == "__main__": + main() diff --git a/check_progress.py b/check_progress.py new file mode 100644 index 0000000..50b8357 --- /dev/null +++ b/check_progress.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python3 +"""Check which episodes are already transcribed/analyzed.""" + +import os +import json +from pathlib import Path + +TRANSCRIPT_DIR = "transcripts" +ANALYSIS_DIR = "data/analysis" + +def check_progress(): + print("=" * 60) + print("Dick Show Index - Progress Check") + print("=" * 60) + + # All episodes from the feed + all_episodes = set() + # Load from episodes.jsonl if available + if os.path.exists("data/episodes.jsonl"): + with open("data/episodes.jsonl", "r") as f: + for line in f: + ep = json.loads(line) + if ep.get("ep_num"): + all_episodes.add(ep["ep_num"]) + + # Check transcripts + transcript_files = set() + if os.path.exists("transcripts"): + for f in os.listdir("transcripts"): + if f.startswith("ep") and f.endswith(".json"): + try: + ep_num = int(f[2:6]) + transcript_files.add(ep_num) + except ValueError: + pass + + # Check analyses + analysis_files = set() + if os.path.exists("data/analysis"): + for f in os.listdir("data/analysis"): + if f.startswith("ep") and f.endswith(".json"): + try: + ep_num = int(f[2:6]) + analysis_files.add(ep_num) + except ValueError: + pass + + # Check verified analyses + verified = set() + if os.path.exists("data/analysis"): + for f in os.listdir("data/analysis"): + if f.startswith("ep") and f.endswith(".json"): + try: + ep_num = int(f[2:6]) + path = f"data/analysis/{f}" + with open(path, "r") as f: + data = json.load(f) + if data.get("_verification", {}).get("verdict") in ("pass", "fix"): + verified.add(ep_num) + except Exception: + pass + + all_eps = sorted(all_episodes) + if not all_eps: + all_eps = sorted(transcript_files | analysis_files) + + print(f"\n{'Ep':>4} {'Title':<45} {'Transcript':^10} {'Analysis':^10} {'Verified':^8}") + print("-" * 85) + + stats = {"total": 0, "transcript": 0, "analysis": 0, "verified": 0} + + for ep in all_eps: + has_t = ep in transcript_files + has_a = ep in analysis_files + has_v = ep in verified + + stats["total"] += 1 + if has_t: stats["transcript"] += 1 + if has_a: stats["analysis"] += 1 + if has_v: stats["verified"] += 1 + + t_status = "✓" if has_t else " " + a_status = "✓" if has_a else " " + v_status = "✓" if has_v else " " + + # Try to get title + title = "" + try: + with open(f"transcripts/ep{ep:04d}.json", "r") as f: + data = json.load(f) + title = data.get("title", "")[:43] + except: + pass + + print(f"{ep:>4} {title:<45} {t_status:^10} {a_status:^10} {v_status:^8}") + + print("-" * 85) + print(f"Total episodes in feed: {stats['total']}") + print(f"Transcripts complete: {stats['transcript']}/{stats['total']}") + print(f"Analyses complete: {stats['analysis']}/{stats['total']}") + print(f"Verified: {stats['verified']}/{stats['total']}") + + # Missing + missing_t = [ep for ep in all_eps if ep not in transcript_files] + missing_a = [ep for ep in all_eps if ep not in analysis_files] + missing_v = [ep for ep in all_eps if ep not in verified] + + if missing_t: + print(f"\nMissing transcripts ({len(missing_t)}): {missing_t[:20]}{'...' if len(missing_t) > 20 else ''}") + if missing_a: + print(f"Missing analyses ({len(missing_a)}): {missing_a[:20]}{'...' if len(missing_a) > 20 else ''}") + if missing_v: + print(f"Unverified ({len(missing_v)}): {missing_v[:20]}{'...' if len(missing_v) > 20 else ''}") + +if __name__ == "__main__": + check_progress() \ No newline at end of file diff --git a/config.example.py b/config.example.py new file mode 100644 index 0000000..3dfdcd4 --- /dev/null +++ b/config.example.py @@ -0,0 +1,118 @@ +# Dick Show Index - Configuration Template +# Copy to config.py and customize + +import os + +# ============================================================================ +# Base Paths +# ============================================================================ +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) + +# Data directories +AUDIO_DIR = os.path.join(BASE_DIR, "audio") +TRANSCRIPT_DIR = os.path.join(BASE_DIR, "transcripts") +DATA_DIR = os.path.join(BASE_DIR, "data") +DB_PATH = os.path.join(DATA_DIR, "index.db") +EPISODES_JSONL = os.path.join(DATA_DIR, "episodes.jsonl") + +# RSS Feed +FEED_URL = "https://thedickshow.com/feed/podcast/" + +# ============================================================================ +# Whisper Settings +# ============================================================================ +# Model: tiny, base, small, medium, large-v3 +# smaller = faster, less accurate +WHISPER_MODEL = os.environ.get("DS_MODEL", "small") + +# Device: cpu, cuda +DEVICE = os.environ.get("DS_DEVICE", "cpu") + +# Compute type: int8, float16, float32 +# int8 = fastest, lowest memory (CPU) +# float16 = GPU with tensor cores +COMPUTE_TYPE = os.environ.get("DS_COMPUTE", "int8") + +# Language +LANGUAGE = "en" + +# VAD filter removes silence/music - big speed win +VAD_FILTER = True + +# Beam size (1 = greedy, 5 = better accuracy, slower) +BEAM_SIZE = 1 + +# Word timestamps (slower, more detailed) +WORD_TIMESTAMPS = False + +# Condition on previous text (can propagate errors on long audio) +CONDITION_ON_PREVIOUS_TEXT = False + +# ============================================================================ +# Audio Processing +# ============================================================================ +TARGET_RATE = 16000 # Whisper expects 16kHz + +# HTTP settings +DOWNLOAD_TIMEOUT = (15, 120) # (connect, read) seconds +CHUNK_SIZE = 1 << 20 # 1 MiB +MAX_FEED_RETRIES = 3 + +# Disk policy: delete MP3 after transcription (saves ~75GB for full backlog) +KEEP_AUDIO = os.environ.get("DS_KEEP_AUDIO", "0") == "1" + +# ============================================================================ +# Analysis (opencode/LLM) +# ============================================================================ +# Path to opencode binary +OPENCODE = os.environ.get("OPENCODE_BIN", os.path.expanduser(r"~\.opencode\bin\opencode.exe")) + +# Model for analysis (see: opencode models) +OPENCODE_MODEL = os.environ.get("OPENCODE_ANALYZE_MODEL", "opencode/nemotron-3-ultra-free") + +# Timeout for analysis (seconds) +OPENCODE_TIMEOUT = int(os.environ.get("DS_ANALYZE_TIMEOUT", "600")) + +# Pause between analysis calls (seconds) - be nice to the provider +ANALYSIS_PAUSE = int(os.environ.get("DS_ANALYZE_PAUSE", "45")) + +# ============================================================================ +# Memory / Rate Limit Guards +# ============================================================================ +# Minimum free RAM before pausing transcription (bytes) +MIN_FREE_RAM = int(os.environ.get("DS_MIN_FREE_RAM", str(1024 * 1024 * 1024))) # 1 GB + +# Cooldown after rate limit hit (seconds) +RATE_COOLDOWN_SECONDS = int(os.environ.get("DS_RATE_COOLDOWN", "900")) # 15 min + +# ============================================================================ +# HTTP / Feed +# ============================================================================ +DOWNLOAD_TIMEOUT = (15, 120) # (connect, read) +CHUNK_SIZE = 1 << 20 # 1 MiB +MAX_FEED_RETRIES = 3 + +# Ensure directories exist +os.makedirs(AUDIO_DIR, exist_ok=True) +os.makedirs(TRANSCRIPT_DIR, exist_ok=True) +os.makedirs(os.path.join(os.path.dirname(__file__), "data"), exist_ok=True) + +# ============================================================================ +# Analysis Timeout (seconds) +# ============================================================================ +ANALYSIS_TIMEOUT = int(os.environ.get("DS_ANALYZE_TIMEOUT", "600")) + +# Analysis pause between calls +ANALYSIS_PAUSE = int(os.environ.get("DS_ANALYZE_PAUSE", "45")) + +# Minimum free RAM (bytes) +MIN_FREE_RAM = int(os.environ.get("DS_MIN_FREE_RAM", str(1024 * 1024 * 1024))) + +# Rate cooldown seconds +RATE_COOLDOWN_SECONDS = int(os.environ.get("DS_RATE_COOLDOWN", "900")) + +# ============================================================================ +# Directory Setup (auto-create) +# ============================================================================ +for d in [AUDIO_DIR, TRANSCRIPT_DIR, os.path.join(os.path.dirname(__file__), "data")]: + os.makedirs(d, exist_ok=True) \ No newline at end of file diff --git a/data/dickshow_analysis.json b/data/dickshow_analysis.json new file mode 100644 index 0000000..61ca34b --- /dev/null +++ b/data/dickshow_analysis.json @@ -0,0 +1,7202 @@ +{ + "meta": { + "generated_at": "2026-08-23T10:19:12.079736+00:00", + "podcast": "The Dick Show", + "feed": "https://thedickshow.com/feed/podcast/", + "episodes_analyzed": 11, + "episodes_factchecked": 11, + "total_runtime_minutes": 1131, + "scale": "Transgression Index 0-10, see rubric.py / README", + "note": "Companion file for routine opencode access. Per-episode analyst files live in data/analysis/, raw transcripts in transcripts/. Each episode carries 'verified': pass|fix|null from the dossier fact-check pass (verify.py). Treat verified=null as unconfirmed." + }, + "episodes": [ + { + "ep_num": 1, + "title": "Episode 1 - Dick in Mexico", + "pub_date": "Tue, 07 Jun 2016 09:50:06 +0000", + "runtime_minutes": 65, + "one_line_summary": "Series premiere: Dick eulogizes The Biggest Problem in the Universe, auditions guest Allegra Ringo as replacement co-host via dog/rage/Trump interview questions, hands out a bring-your-own-water Dick Tip, and recounts a disastrous Tijuana trip of slapdash construction rants, Trump-bracelet friction, and a blackout 'large woman' assault story played for laughs.", + "guests": [ + { + "name": "Allegra Ringo", + "role": "guest", + "notes": "Vice writer, comedian, co-host of Can I Pet Your Dog; first candidate interviewed for the vacated co-host seat; supplies the bring-your-own-water Dick Tip." + }, + { + "name": "Sean", + "role": "cohost", + "notes": "Longtime audio engineer; interjects throughout, including the 'German shepherd that goose steps' gag and urinal-trough banter." + }, + { + "name": "Bono", + "role": "caller", + "notes": "Pre-recorded closing voicemail bit (an impression) wishing Dick luck after being 'free of that Morris bastard'; references his bike accident." + } + ], + "talking_points": [ + { + "topic": "Voldemort opener & BPITU eulogy", + "summary": "Opens asking if he looks like Voldemort, then holds a 'moment of silence' for The Biggest Problem in the Universe that becomes a 12-minute rant. Cites hundreds of grieving fan emails, thanks supporters with 'seriously, go fuck yourselves,' and credits Maddox before pivoting to the new show.", + "start_ts": 134, + "people": [ + "dick masterson", + "sean", + "allegra ringo" + ], + "controversy_ti": 2 + }, + { + "topic": "'Artistic differences' explanation & post-Seinfeld problem", + "summary": "Explains the old show ended over irreconcilable 'artistic differences' no outside referee can judge; compares following it to launching a show after Seinfeld. Mocks rejected clone formats like 'the greatest difficulty in the room' and 'the worst issue of the seven C's.'", + "start_ts": 600, + "people": [ + "dick masterson" + ], + "controversy_ti": 2 + }, + { + "topic": "Co-host audition Q1: best dog for picking up women", + "summary": "First fan-voted co-host interview question. Allegra earnestly answers Beagle ('non-divisive'), but the declared correct answer is a foster dog - claiming a dog is a foster/rescue as conversation bait. Dick says he has actually used the move.", + "start_ts": 983, + "people": [ + "dick masterson", + "allegra ringo" + ], + "controversy_ti": 1 + }, + { + "topic": "Audition Q2: what makes you rage - conference calls", + "summary": "Allegra's rant: latency ruins turn-taking, three-hour calls, jokers workshpping tight-10s about Harambe, an abortion guy, 'looping in Sheila,' and muted attendees masturbating or watching YouTube. They workshop etiquette (say your name first) and argue plain 'no's save money since 99% of ideas are bad.", + "start_ts": 1265, + "people": [ + "allegra ringo", + "dick masterson", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Audition Q3: what do you love most about Donald Trump", + "summary": "Allegra deadpans love for his policies/hair/planes; Sean jokes his rescue dog is 'a German shepherd that goose steps.' Covers the Cinco de Mayo taco bowl tweet ('I love Hispanics') vs Hillary's all-Spanish tweet retweet counts, Muslim-ban probing she rejects, Hispanic/Latino etymology, and Dick noting he's half Mexican yet uncaring while others memorize the terms.", + "start_ts": 1752, + "people": [ + "allegra ringo", + "dick masterson", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Dick Tip: always bring your own water", + "summary": "Allegra's tip: never trust hosts' water; hers stems from an earthquake boil-water memory and lukewarm LA tap. Dick adds Brita filters fail day drinkers at 5am, coining 'past you will always fuck you' via unfilled ice trays, and flexes his Arrowhead dispenser and SodaStream.", + "start_ts": 2071, + "people": [ + "allegra ringo", + "dick masterson" + ], + "controversy_ti": 1 + }, + { + "topic": "Mexico trip setup: 80s model, short shorts, caravans", + "summary": "An '80s beer-ad-level' woman invites him to Tijuana; a wrong-town weather text strands him in tiny shorts. Rants against group caravans - which immediately proves prophetic when their lead car vanishes crossing the border and phones die on roaming.", + "start_ts": 2410, + "people": [ + "dick masterson", + "allegra ringo", + "sean" + ], + "controversy_ti": 1 + }, + { + "topic": "Mexican construction epiphany / wall politics", + "summary": "Thesis: nothing in Mexico is built correctly - urinals fronted by a foot of tile you must Evil Knieval your piss across, exposed rebar everywhere, a fireplace pillar rotated 90 degrees, unrounded deck corners he steps through. Calls it 'a nation of exposed rebar' versus Disneyland built from a child's drawing, cites the 1985 Mexico City earthquake's corrupt code enforcement, and frames it as more convincing than Trump's wall argument ('with what labor?') on vote day.", + "start_ts": 2716, + "people": [ + "dick masterson", + "sean", + "allegra ringo" + ], + "controversy_ti": 4 + }, + { + "topic": "Fuck Trump bracelets & forbidden-opinion grievance", + "summary": "A bracelet vendor's anti-Trump wares get group approval until Dick requests a custom Trump 2016 one and reactions turn icy - 'the question itself is an insult anymore.' Quotes the International Waters podcast mocking Trump fans' intelligence as evidence of casual anti-Trump contempt.", + "start_ts": 2988, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Sexual assault story: the large woman & scotch tumbler", + "summary": "'I was sexually assaulted in Mexico... by a burro... by a large woman.' At a horny hippie commune, a passed-out Dick (fed a tumbler of straight scotch he took for a mixed drink) is allegedly hovered over for a kiss; per retelling he groped her face away 'like a bowling ball.' Allegra validates 'you were too drunk to consent'; he declines to press the term and spins 'drunken me' invincibility with Quantum Leap/Apocalypse Now gags.", + "start_ts": 3404, + "people": [ + "dick masterson", + "allegra ringo", + "sean" + ], + "controversy_ti": 4 + }, + { + "topic": "Patreon thanks & sign-off", + "summary": "Reads supporter names and comments ('can't get enough of the D', 'just when I thought I could only get so erect', 'blood fart the quefer'). Jokes the co-host vote tallies 'in two years when this show gets canceled,' name-drops rival candidates Asterios and Tim Chang's, thanks Sean, then plays the Bono voicemail bit.", + "start_ts": 3722, + "people": [ + "dick masterson", + "allegra ringo", + "sean", + "bono" + ], + "controversy_ti": 2 + } + ], + "arguments": [ + { + "claim": "The Biggest Problem in the Universe ended over irreconcilable 'artistic differences' that no outside party can adjudicate.", + "position": "pro", + "target": "speculation about the BPITU breakup / Maddox", + "quality": "moderate", + "evidence_used": "his account of hundreds of fan emails and subreddit grief posts; deliberate refusal to detail the conflict" + }, + { + "claim": "A foster/rescue dog is the best prop for meeting women because it gives strangers permission to talk.", + "position": "pro", + "target": "dating strategy", + "quality": "trollish", + "evidence_used": "Allegra's concession that people crave conversational excuses; Dick's unverifiable claim he has done it himself" + }, + { + "claim": "Conference calls are structurally broken - delay destroys turn-taking so 15-minute topics take three hours.", + "position": "anti", + "target": "corporate meeting culture", + "quality": "strong", + "evidence_used": "relatable anecdotes (talk-overs, 'can you repeat that', looped-in Sheilas, muted masturbators); proposed name-first etiquette plus follow-up email" + }, + { + "claim": "Plainly saying 'no' saves businesses money because roughly 99% of ideas are garbage; soft nos string people along.", + "position": "pro", + "target": "workplace yes-man culture", + "quality": "strong", + "evidence_used": "reasoned anecdote: in-person body language communicates rejection instantly; brains evolved toward agreeableness, making phone nos harder" + }, + { + "claim": "Mexico is defined by improvised, code-free construction - 'a nation of exposed rebar' - which doubles as his immigration-wall argument.", + "position": "mockery-of", + "target": "Mexican building standards and government corruption", + "quality": "weak", + "evidence_used": "personal Tijuana anecdotes (tile-fronted urinals, rotated fireplace pillar, dirt off-ramps); cites the 1985 Mexico City earthquake's poor code enforcement" + }, + { + "claim": "Supporting Trump has been made socially unspeakable - even asking 'do you support Trump?' is itself an insult.", + "position": "pro", + "target": "anti-Trump social climate and media peers (International Waters podcast)", + "quality": "trollish", + "evidence_used": "bracelet-vendor anecdote; quotes another podcast deriding Trump fans as too stupid to type" + }, + { + "claim": "Always bring your own water because hosts' water (Brita, tap) is reliably disappointing.", + "position": "pro", + "target": "Brita pitchers / hospitality norms", + "quality": "trollish", + "evidence_used": "earthquake boil-water memory, lukewarm LA tap, day-drinking cold-water desperation, SodaStream flex" + }, + { + "claim": "'Drunken me' is infallibly safe - blacked out, he still instinctively got home and repelled his assaulter.", + "position": "mockery-of", + "target": "himself and the unnamed large woman", + "quality": "trollish", + "evidence_used": "secondhand retelling of the face-grab; Apocalypse Now Robert Duvall standing-in-the-blast analogy" + } + ], + "ideas": [ + { + "concept": "The moment of silence bit", + "explanation": "Opening eulogy ritual where declaring a 'moment of silence' for the dead show immediately triggers a 12-minute rant instead.", + "first_ts": 211 + }, + { + "concept": "Artistic differences", + "explanation": "His official euphemism for why BPITU ended - likened to irreconcilable differences in marriage - invoked because 'I'm not a reliable narrator.'", + "first_ts": 600 + }, + { + "concept": "Co-host audition / fan vote", + "explanation": "Framing device of the premiere: candidates are interviewed (dog question, rage question, Trump question) so fans can vote on Maddox's replacement; tally joked to arrive 'when this show gets canceled.'", + "first_ts": 866 + }, + { + "concept": "Dick tip", + "explanation": "Recurring life-advice segment; episode one delivers 'always bring your own water' and Dick's addendum 'get a SodaStream / the liquor will protect you.'", + "first_ts": 2071 + }, + { + "concept": "Past you will always fuck you", + "explanation": "Aphorism that your past self sabotages future you - unfilled ice trays, no cold water after day drinking - spawning his revenge-spilling-coffee-in-the-trays cycle bit.", + "first_ts": 2208 + }, + { + "concept": "Nation of exposed rebar / child's drawing of Disneyland", + "explanation": "Coined thesis that all Mexican construction is a one-off improvisation, as if Disneyland were rebuilt by a 3D printer from a kid's drawing; anchored by the Evil Knieval urinal image.", + "first_ts": 2895 + }, + { + "concept": "Drunken me invincibility", + "explanation": "Bit claiming his blackout alter ego always gets home safe and reflexively fends off attackers and 'seductresses,' powered by 'my spinach of an entire tumbler of scotch.'", + "first_ts": 3664 + }, + { + "concept": "Bono voicemail bit", + "explanation": "Carry-over caller bit: a Bono impression phones in congratulations, needling him about being 'free of that Morris bastard' and taking credit for things.", + "first_ts": 3814 + } + ], + "notable_quotes": [ + { + "quote": "Then why is anyone trying to fuck me like a Voldemort?", + "ts": 192, + "ti": 2, + "why": "Absurd non-sequitur opener setting the show's combative-comedy tone." + }, + { + "quote": "To all the fans who are supporting me on Patreon, supporting this show - seriously, go fuck yourselves.", + "ts": 477, + "ti": 2, + "why": "Signature inverted-gratitude catchphrase born in the eulogy segment." + }, + { + "quote": "What's the best dog to use to pick up women?", + "ts": 983, + "ti": 1, + "why": "Defining audition-question bit; crude but mild innuendo." + }, + { + "quote": "Past you will always fuck you, and you will always fuck future you.", + "ts": 2208, + "ti": 2, + "why": "Coined aphorism about ice trays and self-sabotage, profane wordplay." + }, + { + "quote": "Sean, it's the difference between Disneyland and a child's drawing of Disneyland.", + "ts": 2934, + "ti": 3, + "why": "Episode's defining coinage, mean-spirited national mockery distilled into one line." + }, + { + "quote": "It's gonna be exposed rebar, and it's gonna be toilets that you have to launch your piss across like Evil Knieval.", + "ts": 3072, + "ti": 4, + "why": "Sustained nationality stereotyping fused with wall politics and toilet crudeness." + }, + { + "quote": "I was sexually assaulted in Mexico as well... By a burro. ...By a large woman. You wouldn't be hearing about it if it was not a large woman.", + "ts": 3404, + "ti": 4, + "why": "Sexual assault framed as punchline plus a fat joke at the unnamed assailant." + }, + { + "quote": "You were too drunk to consent. That's what I'm saying.", + "ts": 3620, + "ti": 4, + "why": "Consent dynamics batted around as comedy between host and guest." + }, + { + "quote": "I reach up in my drunken stupor and grab her face like a bowling ball out of nowhere... I think Sam Beckett quantum leaped into me at this moment.", + "ts": 3636, + "ti": 3, + "why": "Self-mythologizing pop-culture riff on the assault retelling." + } + ], + "transgression": { + "overall_ti": 4, + "profanity": 6, + "slur_usage": 1, + "harassment_or_cruelty": 3, + "sincerity": 4, + "targets": [ + "Mexican nationals (construction/stereotype mockery)", + "unnamed 'large woman' assailant (fat jokes)", + "Trump skeptics and anti-Trump social climate", + "corporate office workers / conference-call attendees", + "his own fanbase (comic abuse)", + "Maddox/BPITU legacy (light roasting)" + ], + "rationale": "Peak sustained edge is the long Tijuana block, where sweeping nationality mockery ('a nation of exposed rebar', piss-launching urinals) is welded to pro-wall politicking, capped by a sexual-assault anecdote mined for laughs including fat jokes. It stays at shock-humor tier rather than 5+ because targets are mocked behaviorally rather than dehumanized as people, no slurs appear, and nothing crosses into targeted harassment or sincere demeaning rhetoric." + }, + "content_warnings": [ + "strong language", + "sexual content", + "sexual assault played for comedy", + "national stereotypes", + "alcohol misuse" + ], + "_analyzed_at": "2026-08-23T04:26:29.736164+00:00", + "_source_transcript": "ep0001.json", + "_verification": { + "verdict": "pass", + "checked_at": "2026-08-23T04:32:32.009895+00:00", + "issues": [] + }, + "verified": "pass" + }, + { + "ep_num": 2, + "title": "Episode 2 – Dick on Fathers Day", + "pub_date": "Tue, 14 Jun 2016 18:34:31 +0000", + "runtime_minutes": 62, + "one_line_summary": "Dick auditions dad-authority author Larry Blidner for the cohost seat, rants about the Orlando shooting and Islam as political ideology, interrogates fatherhood's costs and payoffs, and torches OnTrac for lobbing his camera order over the fence.", + "guests": [ + { + "name": "Larry Blidner", + "role": "guest", + "notes": "Author of 'Mac Daddy: Mastering Fatherhood Without Losing Your Style, Your Cool or Your Mind'; auditioning cohost, subject of the audience 'is he a rage?' vote" + }, + { + "name": "Sean", + "role": "cohost", + "notes": "Longtime audio engineer/cohost voice; banters throughout, delivers the shower-jerk-off dick tip" + } + ], + "talking_points": [ + { + "topic": "Show open and Larry Blidner audition", + "summary": "Cold-open 'Presenting Dick' schtick, 'echoiest podcast in the world,' Sean intro, and Father's Day framing for guest Larry Blidner, whose dad book makes him the second cohost contestant.", + "start_ts": 1, + "people": [ + "dick masterson", + "sean", + "larry blidner" + ], + "controversy_ti": 1 + }, + { + "topic": "Patreon live-feed promo and fan mail", + "summary": "Pitch for $20/month patrons to join the live hangout and chat, complaints about tech fuckery, and reading episode-one comments praising the show and begging for cohost slots.", + "start_ts": 115, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Allegra Ringo voted 'not a rage'", + "summary": "Results of the audience vote on episode one's first cohost contestant: Allegra Ringo is ruled not a rage; Dick stresses seats remain open and restates the mythical-rage-monster search.", + "start_ts": 303, + "people": [ + "dick masterson" + ], + "controversy_ti": 1 + }, + { + "topic": "Orlando massacre: tragedy vs. atrocity", + "summary": "Reacting to the Pulse nightclub shooting, Dick insists it is an atrocity, not a tragedy—tragedies are unavoidable acts of God—and mocks those saying we must wait before weighing in.", + "start_ts": 419, + "people": [ + "dick masterson", + "larry blidner" + ], + "controversy_ti": 4 + }, + { + "topic": "Islam as political ideology rant", + "summary": "Dick argues Islam doubles as a motivated political government using religion as camouflage, rejects 'not all Muslims,' jokes about joining ISIS's 8,000-name kill list, and claims gays and women benefit most from opposing it.", + "start_ts": 565, + "people": [ + "dick masterson", + "larry blidner" + ], + "controversy_ti": 5 + }, + { + "topic": "Gun control and shooter irony", + "summary": "Panel dismisses gun-control responses via Boston pressure cookers and McVeigh's truck bomb, noting the shooter bought weapons legally as a licensed security guard subcontracted to DHS.", + "start_ts": 1059, + "people": [ + "dick masterson", + "larry blidner" + ], + "controversy_ti": 3 + }, + { + "topic": "Fatherhood Q&A: what's in it for dads", + "summary": "Question one: shorter lifespan, corporal-filth hazards ('corporephilia' bit), zero control over kids' natures, bodyguard daughters, immortality, and the 'God muscle' feeling of conception.", + "start_ts": 1284, + "people": [ + "dick masterson", + "larry blidner", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Helicopter parents and Halloween 'red light' dad", + "summary": "Larry rails that predator paranoia spawned playdates and helicopter parenting; recounts freezing a kid with 'Red light!' commands, comparing him to Hitler's guard dogs, and leading a breakaway trick-or-treat group.", + "start_ts": 1649, + "people": [ + "larry blidner", + "dick masterson" + ], + "controversy_ti": 3 + }, + { + "topic": "Sons troll fathers; God muscle", + "summary": "Bits on nephews busting their dad, sons becoming internet trolls toward fathers while sparing moms, 'mom builds the machine and dad programs it,' and Larry sensing each conception like Beckham's penalty.", + "start_ts": 1885, + "people": [ + "dick masterson", + "larry blidner", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Pickup lines and chick-magnet theory", + "summary": "Question two on generation-gap game: wallets, watches, gene-pool logic that infants outrank puppies as bait; Dick counters with his Facebook experiment where the puppy crushed the kid's numbers.", + "start_ts": 2182, + "people": [ + "larry blidner", + "dick masterson" + ], + "controversy_ti": 3 + }, + { + "topic": "'What makes you a rage': bullshit detector", + "summary": "Larry says aging perfects his bullshit detector; blames academia and government, cites rising male suicide, blames feminized culture and disposable app-work, and calls sexless sober college a cult of safety.", + "start_ts": 2472, + "people": [ + "larry blidner", + "dick masterson" + ], + "controversy_ti": 5 + }, + { + "topic": "Dick tips: TNS 'Take No Shit'", + "summary": "Tips segment ranges from don't-eat-fried-food and Sean's rain-boner joke to Larry's Elvis-inspired TNS necklace—Take No Shit—with escalating advice to quit jobs and tell banks to fuck off.", + "start_ts": 2908, + "people": [ + "larry blidner", + "dick masterson", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "OnTrac delivery fiasco", + "summary": "Rage story: same-day cameras marked 'delivered' were thrown over his fence onto Hollywood Boulevard grass; includes his fortress-apartment zombie plan of getting coked up and eating the neighborhood dogs, ending in a garrote quip.", + "start_ts": 3045, + "people": [ + "dick masterson", + "larry blidner" + ], + "controversy_ti": 2 + }, + { + "topic": "Book plug, rage vote, and voicemails", + "summary": "Larry plugs Mac Daddy on Amazon; listeners vote at thedickshow.com; profane voicemails nominate audience cohosts (Butt Sanchez, Dr. Smoothrod) and dock Dick man points over scotch served in a spaghetti jar.", + "start_ts": 3423, + "people": [ + "dick masterson", + "sean", + "larry blidner" + ], + "controversy_ti": 3 + } + ], + "arguments": [ + { + "claim": "The Orlando shooting is an atrocity, not a tragedy", + "position": "pro", + "target": "popular/media word usage", + "quality": "moderate", + "evidence": "Semantic definitions: tragedies are unavoidable (earthquakes, fatal disease); atrocities involve human decision" + }, + { + "claim": "Islam operates as a political ideology/government using religion as cover", + "position": "anti", + "target": "political Islam and 'not all Muslims' discourse", + "quality": "moderate", + "evidence": "ISIS's claimed 8,000-American kill list; governments 'founded on taking over everybody else'; distinguishes innocent practitioners" + }, + { + "claim": "Society hammers Christianity's political ambitions but exempts Islam from the same policing", + "position": "mockery-of", + "target": "Twitter defenders of Islam / liberal double standard", + "quality": "weak", + "evidence": "Concedes KKK, clinic bombings, abortion and gay-marriage activism as Christianity's ledger, then asserts asymmetric backlash" + }, + { + "claim": "Gun control would not have prevented the attack", + "position": "anti", + "target": "gun-control advocates", + "quality": "moderate", + "evidence": "Boston pressure cooker, McVeigh's rental truck, shooter legally armed as a DHS-subcontracted security guard" + }, + { + "claim": "Children's outcomes are the luck of the draw, not nurture", + "position": "pro", + "target": "overconfident first-time parents", + "quality": "moderate", + "evidence": "His two daughters: one slept 22 hours a day and read early, the other never slept, shredded books, gave him pneumonia twice" + }, + { + "claim": "Rising male suicide stems from feminized culture and unfulfilling service/app work", + "position": "mockery-of", + "target": "feminism, academia, bureaucrats, cubicle economy", + "quality": "weak", + "evidence": "Vaguely recalled suicide statistic; stereotypes women as builders of 'temporary things' (floral arrangements), jab at Marissa Mayer" + }, + { + "claim": "A live human baby is the ultimate chick magnet, then a foster dog", + "position": "pro", + "target": "single male listeners", + "quality": "trollish", + "evidence": "Dick's own Facebook test contradicts it: puppy photo drew hundreds of likes, kid photos a ghost town" + }, + { + "claim": "College has become a safety cult suppressing fun", + "position": "mockery-of", + "target": "millennials, nanny state, political correctness", + "quality": "moderate", + "evidence": "News story citing record-low student sex and drinking; safe-space satire" + } + ], + "ideas": [ + { + "concept": "'A rage' cohost contest", + "explanation": "Recurring show conceit: guests audition to prove they are 'a rage' (a noun, like the Hulk); the audience votes yes/no at thedickshow.com", + "first_ts": 317 + }, + { + "concept": "Tragedy vs. atrocity distinction", + "explanation": "Coined semantic rule: a tragedy is unavoidable (earthquake, shipwreck, your dog dying); when someone decides to murder dozens it is an atrocity", + "first_ts": 444 + }, + { + "concept": "'The new now'", + "explanation": "Borrowed Charles Manson phrase applied to the post-Orlando era of terror everyone refuses to face", + "first_ts": 555 + }, + { + "concept": "'Mom builds the machine, dad programs it'", + "explanation": "Division-of-labor defense of fatherhood's necessity alongside mothering", + "first_ts": 2061 + }, + { + "concept": "God muscle", + "explanation": "Near-creation euphoria of fatherhood; Larry claims he felt each conception happen like a striker knowing a shot will go in", + "first_ts": 2093 + }, + { + "concept": "Chick-magnet hierarchy", + "explanation": "Live human baby outranks foster puppy, rented or borrowed kids as bait for women seeking a gene pool", + "first_ts": 2303 + }, + { + "concept": "'Don't zoom me'", + "explanation": "East Coast slang revived for calling out someone laying a line of bullshit", + "first_ts": 2564 + }, + { + "concept": "Media ingestion shutdown", + "explanation": "Larry's coping ritual of going computer- and phone-free for days to avoid fighting everyone", + "first_ts": 2634 + }, + { + "concept": "Handing a hostage to fate", + "explanation": "Uncle's aphorism on the total lack of guarantees once you have a child", + "first_ts": 2882 + }, + { + "concept": "TNS 'Take No Shit' necklace", + "explanation": "Larry's amendment to Elvis's TCB crew pendants: regret-proof life advice to refuse all mistreatment", + "first_ts": 3000 + } + ], + "notable_quotes": [ + { + "quote": "When some fucktard shoots up a club like that, that's an atrocity.", + "ts": 458, + "ti": 4, + "why": "Slur plus flippant framing of a fresh mass shooting" + }, + { + "quote": "And this dog over here that we're dealing with, I'm talking about Islam. This dog thinks it's people.", + "ts": 797, + "ti": 5, + "why": "Dehumanizing metaphor about a religion played straight" + }, + { + "quote": "ISIS says they have a kill list of 8,000 Americans. And I think after today, that's gonna be 8,001.", + "ts": 826, + "ti": 3, + "why": "Dark self-referential terrorism joke hours after the attack" + }, + { + "quote": "In an Islamic caliphate, I win... the only people who benefit are the oppressed, are women, are, in this case, gay men.", + "ts": 874, + "ti": 4, + "why": "Provocative identity-politics inversion of the massacre's victims" + }, + { + "quote": "Like one of Hitler's guard dogs would fucking freeze... Jackie, greenlight, get your ass in the street.", + "ts": 1853, + "ti": 3, + "why": "Nazi comparison aimed at a fellow parent, told approvingly" + }, + { + "quote": "Chicks like floral arrangements... they're into sort of temporary things. Guys like to achieve something they can stand back and look at.", + "ts": 2708, + "ti": 5, + "why": "Sincere gender essentialism about what women build, with Marissa Mayer named" + }, + { + "quote": "Never jerk off in the shower. Otherwise, you'll get a boner every time it rains.", + "ts": 2949, + "ti": 2, + "why": "Crass classic dirty joke offered as fatherly wisdom" + }, + { + "quote": "I'll get all coked up and go to every big dog, steal the dog... I'll eat all the dogs.", + "ts": 3329, + "ti": 3, + "why": "Elaborate apocalypse dog-theft-and-cannibalism bit" + }, + { + "quote": "Hey, dick, you dirty motherfucker... since you're basically fucking Voldemort...", + "ts": 3514, + "ti": 3, + "why": "Caller's affectionately abusive voicemail setting the listener tone" + }, + { + "quote": "When you have a kid, you are handing a hostage to fate.", + "ts": 2882, + "ti": 1, + "why": "Genuinely quotable family aphorism, harmless" + } + ], + "transgression": { + "overall_ti": 5, + "profanity": 8, + "slur_usage": 2, + "harassment_or_cruelty": 2, + "sincerity": 5, + "targets": [ + "political Islam / Muslims (generalizations)", + "gay victims of the Orlando shooting (as rhetorical props)", + "gun-control advocates", + "helicopter parents", + "women / feminism (gender essentialism)", + "millennials and college safe-space culture", + "academia and government bureaucrats", + "OnTrac courier" + ], + "rationale": "Peak sustained edge is the ten-minute Orlando/Islam block, where sincerely argued religious-political generalization sits next to dark jokes about a just-committed mass shooting, reinforced by casual sexism later in the hour. It stays at 5 because the content is commentary and roast-mockery rather than incitement, slurs are rare, and nobody is targeted for harassment." + }, + "content_warnings": [ + "heavy profanity", + "mass-shooting/terrorism discussion", + "religious generalizations", + "sexist remarks", + "crude sexual humor" + ], + "_analyzed_at": "2026-08-23T04:45:40.287161+00:00", + "_source_transcript": "ep0002.json", + "_verification": { + "verdict": "pass", + "checked_at": "2026-08-23T04:52:44.521489+00:00", + "issues": [] + }, + "verified": "pass" + }, + { + "ep_num": 3, + "title": "Episode 3 – Dick on Movies", + "pub_date": "Tue, 21 Jun 2016 08:20:06 +0000", + "runtime_minutes": 57, + "one_line_summary": "Movie podcaster Mark David Christensen auditions for co-host via a mock job interview (scary movies, movie applause, hook-up films, birthday weeks), while Dick reads listener emails defending criticism of Islam, airs a beef over the hijacked Biggest Problem in the Universe feed, and delivers a low-talker decibel dick tip.", + "guests": [ + { + "name": "Mark David Christensen (MDC)", + "role": "guest", + "notes": "Actor/improviser and host of 'I Will Watch Anything Once'; auditioning for the co-host seat; declared 'a rage' at the end; plugs his podcast and the UCB improv show Copycat." + }, + { + "name": "Sean", + "role": "cohost", + "notes": "Engineer/cohort voice; banter about editing out car alarms and dogs, guitar-related hearing loss, and his counter-theory that Dick bullies partners into low talking." + }, + { + "name": "Voicemail callers", + "role": "caller", + "notes": "Post-show voicemails; one roasts Dick for walking around with a kid hurting his game and asks 'weren't you supposed to be the not autistic host?'" + } + ], + "talking_points": [ + { + "topic": "Cold open and co-host audition setup", + "summary": "Dick introduces the contest-format show and guest Mark David Christensen, auditioning for the co-host chair; riffs on his name evoking assassin Mark David Chapman and 'killing' careers.", + "start_ts": 2, + "people": [ + "dick masterson", + "sean", + "mark david christensen" + ], + "controversy_ti": 2 + }, + { + "topic": "'I Will Watch Anything Once' and Necessary Roughness fight", + "summary": "MDC explains his first-watch movie podcast; he trashes Hackers and Necessary Roughness as a subpar Major League ripoff while Dick defends it, citing Kathy Ireland's 'welcome to football' ball kick and the Scott Bakula final-pass edit.", + "start_ts": 105, + "people": [ + "mark david christensen", + "dick masterson" + ], + "controversy_ti": 2 + }, + { + "topic": "Larry Bildner ruled 'a rage'; voice taxonomy bit", + "summary": "Last week's guest Larry Bildner is confirmed 'in the running'; listeners' comments are read and Dick coins voice descriptors: Larry sounds like 'audible scotch,' himself 'audible LaCroix.' Car-alarm/dog editing banter with Sean.", + "start_ts": 285, + "people": [ + "dick masterson", + "sean", + "larry bildner" + ], + "controversy_ti": 1 + }, + { + "topic": "Mocking Larry's 'felt the conception' claim", + "summary": "Dick relays that Larry claims he could feel the moment he impregnated his wife; Dick calls it physically impossible ('your dick is not in your woman when sperm hits egg'); Sean needles Dick's brother-in-law claim ('those aren't your brother-in-law's kids').", + "start_ts": 400, + "people": [ + "dick masterson", + "sean", + "larry bildner" + ], + "controversy_ti": 2 + }, + { + "topic": "Emails: criticizing Islam vs. the taboo", + "summary": "Dick argues all ideologies deserve criticism. Daniel (Malaysia) describes legal and social traps preventing leaving Islam and Ramadan policing ('fuck Donald Trump' gets censored as a bit). Anna, a lesbian from New Zealand, says she's praised for bashing churches but called racist/bigot for criticizing Islam. Church Lady/SNL Muslim-cast discussion; separating culture from race.", + "start_ts": 480, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 4 + }, + { + "topic": "Dick's beef: BPITU feed hijack", + "summary": "Long grievance segment: The Biggest Problem in the Universe iTunes feed was redirected to a new show and the site blanked. Dick emailed ex-partner Maddox proposing an archive or mashup, got silence, then found himself blocked on Twitter; reveals he'd hosted the site himself and stood up a mirror at biggest.thedickshow.com, praising the Reddit transcribers, glossary-makers and fan artists.", + "start_ts": 890, + "people": [ + "dick masterson", + "sean", + "maddox" + ], + "controversy_ti": 3 + }, + { + "topic": "Anton Yelchin tribute and Ghost Dad gag", + "summary": "Moment of silence for Anton Yelchin (27, Star Trek's Chekhov, Green Room), reportedly pinned between his car and a mailbox per TMZ; Dick immediately undercuts it with 'Have you seen Ghost Dad? That guy drives a car.'", + "start_ts": 1515, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Interview Q1: why he won't watch scary movies", + "summary": "MDC hates fear as entertainment—extreme haunted houses, spitting, bug-eating—and cites baseline real-life anxiety (bounced rent checks, Chinese bonds, LA real estate). Theory: scary movies get women horny; relationships are goodwill hoarding, so Dick endures them; digressions on gun anxiety and watching The Bachelor as concession.", + "start_ts": 1580, + "people": [ + "mark david christensen", + "dick masterson", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Worst part of movies: planless villains vs. applause bit", + "summary": "MDC answers that modern villains have no plans (vs Hans Gruber). Dick declares the correct answer is audiences clapping at movie endings, escalating: clap for flight landings, cops pulling you over, chefs, and babysitters who didn't molest your kids.", + "start_ts": 2015, + "people": [ + "mark david christensen", + "dick masterson" + ], + "controversy_ti": 3 + }, + { + "topic": "Best movie to hook up to: Tootsie rule and Shawshank window", + "summary": "MDC's two-parter: Food Network rejected; only previously seen movies qualify, born of a Tootsie-interrupted Utah date. Dick's 'correct answer' is Shawshank Redemption—front-loaded, so make your move 'before the sisters take Andy Dufresne into the basement.' Happy Gilmore oral-sex multitasking anecdote follows.", + "start_ts": 2170, + "people": [ + "mark david christensen", + "dick masterson", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "What makes you a rage: big birthday weeks", + "summary": "MDC's entry: extravagant multi-event birthday weeks demanding attendance are a scam and emotional blackmail. Dick agrees—celebrate on your day, allow 'event days' done for yourself (his Disneyland bar crawl), recounts a solo martini birthday as his most satisfying; pivots to treating people well year-round vs Christmas/resolutions.", + "start_ts": 2485, + "people": [ + "mark david christensen", + "dick masterson" + ], + "controversy_ti": 1 + }, + { + "topic": "Dick tips: have fun; prep harder", + "summary": "MDC's tip: have fun no matter what. Dick probes his own slump habits, tells MDC's failed-auditon story back as a prep lesson with a Sam Jackson weed anecdote, and credits the old show's death for his renewed work ethic on the new Patreon-funded show.", + "start_ts": 2880, + "people": [ + "mark david christensen", + "dick masterson" + ], + "controversy_ti": 1 + }, + { + "topic": "Low-talker decibel dick tip", + "summary": "Dick's tip: soft talkers must hit 60 decibels (louder than a percolating coffee maker, equal to an AC unit at 100 feet), citing researched decibel charts and a lifetime of 'what?' rage. Sean counters that Dick's bullying causes partners to mumble—'you're an abusive father in your relationship.'", + "start_ts": 3064, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Plugs and verdict", + "summary": "MDC plugs I Will Watch Anything Once (2nd/4th Fridays) and Copycat at UCB Franklin; Dick declares 'I think you're a rage,' closing the audition.", + "start_ts": 3292, + "people": [ + "dick masterson", + "mark david christensen" + ], + "controversy_ti": 1 + }, + { + "topic": "Post-show voicemails", + "summary": "A caller explains women avoid approaching Dick-with-kid because he looks 40 and off-market, adding 'weren't you supposed to be the not autistic host?' Dick sputters about remembering the Cold War and single dads; signs off promising two cameras.", + "start_ts": 3358, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 3 + } + ], + "arguments": [ + { + "claim": "Every ideology including Islam must be open to ridicule and criticism; fear of the topic is the real problem", + "position": "pro", + "target": "political correctness / Islamic orthodoxy", + "quality": "moderate", + "evidence_used": "Two listener emails: Daniel in Malaysia on near-impossible legal apostasy and mosque sermons demanding obedience; Anna (lesbian, New Zealand) on being praised for anti-Christian critique but smeared for anti-Islam critique" + }, + { + "claim": "Maddox deliberately redirected the BPITU feed to his new show and wiped the archive out of spite after Dick proposed archiving or a mashup", + "position": "mockery-of", + "target": "Maddox", + "quality": "weak", + "evidence_used": "Brother-in-law superfan report, unanswered email, mirror site he funded/hosted, and getting blocked mid-click on the explanatory tweet; Dick concedes 'this is all I know'" + }, + { + "claim": "Horror movies are worthless because real life supplies unlimited anxiety and fear has negative utility", + "position": "anti", + "target": "scary movies / extreme haunts", + "quality": "trollish", + "evidence_used": "Anecdotes: Conjuring 2 date, extreme haunted houses spitting on patrons, personal money stress" + }, + { + "claim": "Women deploy scary movies to convert fright into arousal, and men should concede (Bachelor, horror) to bank relationship goodwill ('manna')", + "position": "pro", + "target": "women / dating strategy", + "quality": "trollish", + "evidence_used": "Pure assertion plus dating anecdotes; gun-phobia ex-girlfriend story" + }, + { + "claim": "Modern blockbusters fail because their villains have no plan, unlike Hans Gruber", + "position": "anti", + "target": "blockbuster screenwriting", + "quality": "moderate", + "evidence_used": "Die Hard comparison, generic 'throw everything at everybody' villain behavior" + }, + { + "claim": "Clapping at movies (and flights) is absurd since nobody can hear you; taken seriously it demands applauding every completed task", + "position": "mockery-of", + "target": "theater audiences", + "quality": "strong", + "evidence_used": "Reductio ad absurdum: clap for janitors, pilots, traffic cops, chefs, non-molesting babysitters" + }, + { + "claim": "Birthday weeks are a scam—celebrate on the day, and event days must be for yourself with zero attendance pressure", + "position": "anti", + "target": "birthday-week celebrants", + "quality": "moderate", + "evidence_used": "Anecdotes: Disneyland birthday bar crawl, solo martini dinner birthday with his life coach" + }, + { + "claim": "Low talkers should speak at 60 decibels—the level of normal conversation", + "position": "anti", + "target": "soft talkers / mumbling partners", + "quality": "moderate", + "evidence_used": "Researched decibel scale read on-air (whisper 30dB, fridge 50dB, voice 60dB, vacuum/vacuum-cleaner range up)" + }, + { + "claim": "You shouldn't wait for birthdays, Christmas, or New Year's to be good to people", + "position": "anti", + "target": "ritualized holiday kindness", + "quality": "moderate", + "evidence_used": "Rhetorical argument only" + } + ], + "ideas": [ + { + "concept": "'Is a rage' verdict", + "explanation": "The audition framework's passing grade: a candidate is judged 'a rage' by listener vote and host ruling, putting them in the running for co-host; Larry Bildner passes early, MDC passes at the end.", + "first_ts": 291 + }, + { + "concept": "Audible scotch / audible LaCroix", + "explanation": "Voice-quality taxonomy: Larry's gravelly baritone is 'audible scotch'/'sexy movie-promo guy'; Dick self-deprecates as 'audible LaCroix'—cheap canned sparkling water.", + "first_ts": 296 + }, + { + "concept": "'He out-dicked Dick'", + "explanation": "Coinage for being beaten at Dick's own game of doing whatever he wants—applied to Sean's dog, which made Dick wait mid-recording.", + "first_ts": 373 + }, + { + "concept": "Job interview with correct answers", + "explanation": "Audition gimmick where Dick asks field-specific questions ('what won't you watch', 'worst part of movies', 'best hook-up movie', 'what makes you a rage') and insists there is a secret 'correct answer' he holds.", + "first_ts": 1591 + }, + { + "concept": "Relationships as mana/goodwill hoarding", + "explanation": "Theory that couples accumulate favor via concessions (enduring horror movies), redeemable later—'relationships are about loading up your mana.'", + "first_ts": 1898 + }, + { + "concept": "Repeat-movie make-out rule", + "explanation": "Rule from a Tootsie-ruined date: you may only fool around during a movie you've already seen; unseen films are sacred first viewings.", + "first_ts": 2274 + }, + { + "concept": "Shawshank make-out window", + "explanation": "Dick's 'correct answer' for best hook-up movie: it's front-loaded, so advances must land before the post-reveal sag—'significant gains before the sisters take Andy Dufresne into the basement.'", + "first_ts": 2385 + }, + { + "concept": "Event day doctrine", + "explanation": "Acceptable birthday format: one self-directed event (e.g., Disneyland bar crawl) entered as 'I'm doing this for myself,' never pressuring friends to attend.", + "first_ts": 2683 + }, + { + "concept": "60-decibel low-talker standard", + "explanation": "Dick tip quantifying speaking volume: project at 60 dB—above a percolating coffee maker, equivalent to an AC unit heard at 100 feet—to end 'smile-and-nod' conversations.", + "first_ts": 3154 + } + ], + "notable_quotes": [ + { + "quote": "By the way, when I say Islam, how tight does your asshole get?", + "ts": 507, + "ti": 4, + "why": "Crude sexual framing of the taboo-topic threshold, opening the sincere religion segment" + }, + { + "quote": "Because you come in a woman.", + "ts": 421, + "ti": 2, + "why": "Blunt explicit anatomy rebuttal to Larry's conception-feeling claim" + }, + { + "quote": "You come home, your babysitter didn't molest your kids, you give her a round of applause.", + "ts": 2156, + "ti": 3, + "why": "Child-abuse punchline inside the clapping reductio" + }, + { + "quote": "If that's a ghoulish kid, than just fucking hit it.", + "ts": 2208, + "ti": 3, + "why": "Comedic advocacy of punching evil-kid horror tropes" + }, + { + "quote": "You gotta have some significant gains made before the sisters take Andy Dufresne into the basement.", + "ts": 2385, + "ti": 3, + "why": "Prison-rape reference as make-out timing advice" + }, + { + "quote": "It kind of wouldn't have—the blowjob couldn't overpower the comedy.", + "ts": 2453, + "ti": 3, + "why": "Graphic sexual anecdote punchline about Happy Gilmore multitasking" + }, + { + "quote": "You should take that week and go spend it with kids who are about to have only a week left.", + "ts": 2665, + "ti": 3, + "why": "Dark joke redirecting birthday weeks to terminally ill children" + }, + { + "quote": "You're a abusive father in your relationship.", + "ts": 3153, + "ti": 2, + "why": "Sean's deadpan counter-theory accusing Dick of manufacturing low talkers" + }, + { + "quote": "Jesus Christ, weren't you supposed to be the not autistic host?", + "ts": 3383, + "ti": 3, + "why": "Voicemail caller uses 'autistic' as an insult at the host" + }, + { + "quote": "Don't you fucking big league me.", + "ts": 1015, + "ti": 2, + "why": "Signature aggrieved-brother-in-law rant color in the feed-hijack saga" + } + ], + "transgression": { + "overall_ti": 4, + "profanity": 6, + "slur_usage": 1, + "harassment_or_cruelty": 3, + "sincerity": 4, + "targets": [ + "Maddox (BPITU feed/archive grievance)", + "Islam and religious-criticism taboos / PC culture", + "women (arousal-manipulation theory)", + "horror movie fans", + "birthday-week celebrants", + "low talkers", + "Larry Bildner and Sean (roast targets)", + "Anton Yelchin's death (gallows humor)", + "voicemail caller using 'autistic' pejoratively at the host" + ], + "rationale": "Peak sustained edge comes from the Islam segment pairing explicit crude framing with sincere attacks on religious orthodoxy, plus running bits touching prison rape, child abuse, dying children, and an ableist voicemail jab. Nothing rises to targeted abuse or incitement; the Maddox material is a one-sided grievance narrative rather than an audience swarm." + }, + "content_warnings": [ + "pervasive profanity", + "explicit sexual content", + "religious provocation", + "prison rape joke", + "child abuse humor", + "ableist language" + ], + "_analyzed_at": "2026-08-23T04:58:35.950074+00:00", + "_source_transcript": "ep0003.json", + "_verification": { + "verdict": "pass", + "checked_at": "2026-08-23T05:02:51.423884+00:00", + "issues": [] + }, + "verified": "pass" + }, + { + "ep_num": 4, + "title": "Episode 4 – Dick on Wrestling", + "pub_date": "Tue, 28 Jun 2016 17:42:38 +0000", + "runtime_minutes": 73, + "one_line_summary": "Dick reads listener mail, roasts Neil deGrasse Tyson, details ex-co-host Maddox deleting the site and repointing the iTunes feed while launching a 'guess my dark secret' t-shirt contest, quizzes wrestling podcaster Joey Clift on ring history, improvises a Trump-inauguration demon-slaying fantasy, and takes a call from satirical terrorist bit character 'Jihad Jeremy' on Game of Thrones spoilers and Brexit.", + "guests": [ + { + "name": "Sean", + "role": "cohost", + "notes": "Audio engineer; greets 'Hello, Dick'; hands the Miss Delete sash over to Maddox in absentia; wrongly guesses Jesse Ventura for the WWE Hall of Fame question" + }, + { + "name": "Joey Clift", + "role": "guest", + "notes": "Comedian, co-host of 'You Should Love Wrestling' podcast; contestant in the co-host search; lifelong teetotaler; plugs @JoeyTainment Garfield-account-verification bit" + }, + { + "name": "Jihad Jeremy", + "role": "caller", + "notes": "Obviously scripted satirical bit character (unknown performer) claiming to be Dick's ex-college roommate; delivers 'G-Hods of the week' on spoiler etiquette, Brexit, and terror jokes" + } + ], + "talking_points": [ + { + "topic": "Cold open, co-host dynasty framing and last week's mail", + "summary": "Show opens as 'a contest': Joey Clift is interviewed as a co-host candidate to be voted on by fans. Mailbag: Steel Magnolias crowned best movie to get laid to; verdicts on rage candidates (Mark David Christensen passes, Allegra fails, Mr. Velvet still champion).", + "start_ts": 19, + "people": [ + "dick masterson", + "sean", + "joey clift" + ], + "controversy_ti": 2 + }, + { + "topic": "Neil deGrasse Tyson roast", + "summary": "Sustained bit painting Tyson as a smug 'science jock' who punches down at harmless fun (Friday the 13th, leap year naming), is wrong outside astrophysics (barbed cat penises, corkscrew ducks), and knocked Jon Stewart's globe. Satirical parallel: learning guitar only to ruin couples about to hook up.", + "start_ts": 295, + "people": [ + "dick masterson", + "joey clift", + "sean", + "neil degrasse tyson" + ], + "controversy_ti": 3 + }, + { + "topic": "Maddox split fallout: deleted site, hijacked feed, Twitter block", + "summary": "Dick recounts Maddox deleting the podcast website, repointing the iTunes feed to his new show, ignoring Dick's archive-request email, moving the site to a server he can't access, and blocking him. Listeners then ask if Dick is 'in rehab,' prompting a rehab-is-a-vacation-spa rant.", + "start_ts": 551, + "people": [ + "dick masterson", + "sean", + "maddox" + ], + "controversy_ti": 2 + }, + { + "topic": "Implication theory and the reputation contest", + "summary": "Dick parses Maddox's leaked line about protecting Dick's 'personal and professional reputation': implying beats stating because imaginations assume worst-case (0–100 scale engineered to an 11). Only sexual assault or stealing money would be unrecoverable — neither true, he says. Fans invited to guess his alleged sin; top three win t-shirts.", + "start_ts": 1135, + "people": [ + "dick masterson", + "maddox" + ], + "controversy_ti": 3 + }, + { + "topic": "Wrestling as American art form", + "summary": "Joey argues pro wrestling is a distinctly American invention (carnivals, early 1900s, Hackensmith/Gotch) on par with jazz, full of heightened gimmicks like tax-man Irwin R. Schyster and the Repo Man, with layered kayfabe/dirt-sheet realities. Origin tale: the first worked match ended in a legit double-cross.", + "start_ts": 1259, + "people": [ + "dick masterson", + "joey clift" + ], + "controversy_ti": 1 + }, + { + "topic": "Macho Man blacklist rumor", + "summary": "Discussion of Randy Savage's years as WWE persona non grata and the persistent fan rumor he took teenage Stephanie McMahon's virginity versus the likelier Slim Jim sponsorship dispute when he jumped to WCW — used as a parallel to Maddox-style rumor farming.", + "start_ts": 1409, + "people": [ + "dick masterson", + "joey clift" + ], + "controversy_ti": 3 + }, + { + "topic": "Life coach bits: Fourth of July blanks and Dr. Phil", + "summary": "Dick's life coach green-lights blasting blank pistols on the 4th of July ('too fun to be legal', ignorance-of-law strategy) and previously coached 'just do it' before Dr. Phil. Banjo declared an all-American invention in the same patriotic riff.", + "start_ts": 1567, + "people": [ + "dick masterson", + "joey clift" + ], + "controversy_ti": 2 + }, + { + "topic": "$20 Million Man and the WWE Hall of Fame quiz", + "summary": "Joey's wrestler persona: too small to fight, so he'd hire a bigger man, pin him, and wave a flag under fireworks — a broke Million Dollar Man. Hall of Fame quiz: Sergeant Slaughter (incorrect), Sean guesses Jesse Ventura (incorrect), correct answer is celebrity-wing member Donald Trump.", + "start_ts": 1710, + "people": [ + "dick masterson", + "joey clift", + "sean" + ], + "controversy_ti": 1 + }, + { + "topic": "Trump inauguration rapture fantasy and unstumpability army", + "summary": "Improvised cartoon epic: angels drown out Trump's entrance music, Obama explodes into a demon clawing at health insurance cards, Trump wields a golden-contrail flaming sword, an Ann Coulter-faced Pegasus rides in, Milo's pink-gun brigade and a Terminator Hillary follow. Enlistment requires buying the made-in-USA hat and shitposting; the hat grants an 'aura of unstumpability' and a soul-linked golden sword.", + "start_ts": 2138, + "people": [ + "dick masterson", + "joey clift", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Most feared opponent: Joey Ryan", + "summary": "Answer to 'most feared wrestler' is indie wrestler Joey Ryan, whose gimmick is a superhumanly strong penis he uses to flip opponents, officially sponsored by YouPorn; Dick declares real fights boring by comparison ('two guys trying to rub their nipples together').", + "start_ts": 2543, + "people": [ + "dick masterson", + "joey clift" + ], + "controversy_ti": 2 + }, + { + "topic": "Rage #1: shellfish and manly crab-tearing", + "summary": "Joey's sand-gritted shellfish disgust vs Dick feeling robbed by any fish meal; Dick praises king crab and lobster as a delicacy 'God protected for men who tear into it with their hands,' disdains crackers, and endorses bringing a ball-peen hammer.", + "start_ts": 2643, + "people": [ + "dick masterson", + "joey clift" + ], + "controversy_ti": 1 + }, + { + "topic": "Rage #2: Chachi and Elmo ruined children's TV", + "summary": "Joey rages at Scott Baio's Chachi usurping Happy Days; Dick extends it to Elmo monopolizing Sesame Street (Poochie effect). Punchlines: Elmo's World is pitched as living next to a pedophile named Mr. Noodle, and 'a Muppet is kind of like a retarded person.'", + "start_ts": 2788, + "people": [ + "dick masterson", + "joey clift" + ], + "controversy_ti": 4 + }, + { + "topic": "Rage #3: straight-edge life and drinking culture", + "summary": "Never-drunk Joey hates party apologies and broken-person assumptions; Dick argues drinkers instinctively recruit ('that's where we'd all like to be'), cites Buffett's alcoholism-and-leverage line, advises aspiring actresses not to drink, and theorizes merely holding a drink rewires personality.", + "start_ts": 2980, + "people": [ + "dick masterson", + "joey clift" + ], + "controversy_ti": 1 + }, + { + "topic": "Dick tips: incremental dreaming and yoga", + "summary": "Tips: listen to You Should Love Wrestling; chase dreams but under an 18-month quit-or-switch deadline ('dream incrementally'); and try yoga — mocked because Dick is still talking about having done it years later.", + "start_ts": 3414, + "people": [ + "dick masterson", + "joey clift" + ], + "controversy_ti": 1 + }, + { + "topic": "Jihad Jeremy call-in: spoilers, Brexit, terror gags", + "summary": "Satirical jihadist ex-roommate calls in with 'G-Hods': spoiler etiquette and a 'white walkers are secretly black' gag; Brexit hot takes decried as racism-only framing, arguing self-governance and anti-EU elitism, with Brexit proving Trump will win; jokes about the UK being a 'manageable terror target,' blowing up girls' schools, lusting after Melania, and women driving to his place. Outro plugs Garfield verification and the secret-contest.", + "start_ts": 3844, + "people": [ + "dick masterson", + "sean", + "joey clift", + "jihad jeremy" + ], + "controversy_ti": 5 + } + ], + "arguments": [ + { + "claim": "Professional wrestling is a uniquely American dramatic art form comparable to jazz.", + "position": "pro", + "target": "wrestling skeptics and the 'it's fake' crowd", + "quality": "moderate", + "evidence_used": "Carnival-era origins circa early 1900s, the Hackensmith/Gotch origin story, the first worked match ending in a genuine double-cross, and gimmick catalog (IRS, Repo Man)" + }, + { + "claim": "Neil deGrasse Tyson is a smug 'science jock' who bullies harmless fun instead of tackling big targets and is often wrong outside astrophysics.", + "position": "mockery-of", + "target": "Neil deGrasse Tyson", + "quality": "trollish", + "evidence_used": "His tweets on mammal sex (barbed cat penises, corkscrew ducks) and 'leap year is misnamed,' linguists' comeback, and the Jon Stewart backwards-globe appearance" + }, + { + "claim": "Maddox seized the show's audience by deleting the site and repointing the shared iTunes feed to his own new program, then froze Dick out.", + "position": "anti", + "target": "Maddox", + "quality": "moderate", + "evidence_used": "Unanswered archive-request email, site moved to an inaccessible server, Twitter block, and the Reddit-posted 'personal and professional reputation' quote" + }, + { + "claim": "Implication is a weapon worse than accusation: leaving wrongdoing unstated lets audiences assume maximum severity.", + "position": "pro", + "target": "Maddox's insinuation strategy and rumor culture", + "quality": "moderate", + "evidence_used": "The 0–100 severity scale metaphor ('engineered to an 11'), the Macho Man/Stephanie McMahon rumor as case study, rehab questions from listeners" + }, + { + "claim": "Rehab is ineffective and mostly a scam — a vacation spa where addicts buy drugs from orderlies.", + "position": "mockery-of", + "target": "rehab industry", + "quality": "weak", + "evidence_used": "Pure assertion, distinguished only between luxury and state-sponsored facilities" + }, + { + "claim": "Brexit reflects legitimate anti-elitist self-governance, was mispredicted by pundits, and proves Trump will win.", + "position": "pro-Brexit", + "target": "EU institutions and the hot-take pundit class", + "quality": "moderate", + "evidence_used": "Failed polls and predictions, unelected/unaccountable EU governance argument, 'silent majority' framing, the missing 'what's the benefit of globalism?' take" + }, + { + "claim": "Drinking destroys potential and social pressure to drink is a socially sanctioned recruitment into addiction.", + "position": "anti", + "target": "drinking culture", + "quality": "moderate", + "evidence_used": "Warren Buffett's alcoholism-and-leverage speech, hometown cautionary observations, freshman-15 avoidance, the life-coach beer-run anecdote" + }, + { + "claim": "Dreams deserve a deadline: pursue anything seriously for 18 months, then quit and switch if there's no progress.", + "position": "pro", + "target": "perpetual dream-chasers", + "quality": "moderate", + "evidence_used": "Karate/black-belt and workout-vs-yoga analogies; Dick's counterpoint that 'people are stupid' so the deadline can't be self-set" + } + ], + "ideas": [ + { + "concept": "'The show where everything is a contest'", + "explanation": "Framing device introduced this season: every opinion, trait, and guest is scored competitively, including the ongoing co-host search decided by fan vote.", + "first_ts": 19 + }, + { + "concept": "Rage certification", + "explanation": "Weekly verdict on whether a guest or listener is 'enough of a rage' to qualify as co-host material; Mark David Christensen passes, Allegra does not.", + "first_ts": 146 + }, + { + "concept": "Miss Delete sash", + "explanation": "Running bit awarding a pageant sash to whoever deletes websites/content; Sean ceremonially passes it from Dick to Maddox after the site deletion.", + "first_ts": 1086 + }, + { + "concept": "Implication scale (engineered to an 11)", + "explanation": "Dick's theory that stating a misdeed caps its perceived severity, while merely implying it lets audiences imagine the maximum (0–100 scale pushed past 10).", + "first_ts": 1135 + }, + { + "concept": "Personal-and-professional-reputation contest", + "explanation": "Fans submit theories of what Dick could have possibly done requiring 'protection'; the best three win t-shirts — weaponizing Maddox's vague insinuation into a bit.", + "first_ts": 1237 + }, + { + "concept": "Aura of unstumpability", + "explanation": "From the Trump-inauguration fantasy: the official campaign hat grants a protective aura against 'stumping' demons and comes with a golden sword bonded to your soul.", + "first_ts": 2368 + }, + { + "concept": "Kung fu action grip", + "explanation": "Dick's theory that merely holding a drink — even non-alcoholic beer or ice — transforms his personality in social settings before any alcohol is consumed.", + "first_ts": 3216 + }, + { + "concept": "G-Hods of the week", + "explanation": "Recurring segment brand from the Jihad Jeremy bit packaging his 'hot takes' (spoiler etiquette, Brexit) in jihadist cosplay.", + "first_ts": 3908 + }, + { + "concept": "18-month dream rule", + "explanation": "Compromise life advice coined on the spot: commit fully to any dream for 18 months; if you're not achieving, quit and try something else ('dream incrementally').", + "first_ts": 3726 + } + ], + "notable_quotes": [ + { + "quote": "Welcome to the Dick Show, the show where everything is a contest.", + "ts": 19, + "ti": 1, + "why": "signature opener establishing the episode's competitive frame" + }, + { + "quote": "He's such a smug prick, man... he goes around, he shits on all of the customs that make us human.", + "ts": 306, + "ti": 3, + "why": "crude sustained roast of a named public figure" + }, + { + "quote": "The best thing I could do for Dick right now is to not say anything for his personal and professional reputation.", + "ts": 806, + "ti": 3, + "why": "quoted Maddox allegation that drives the whole feud narrative" + }, + { + "quote": "I think that rehab is a vacation spa for drug addicts to hang out with other drug addicts and get sold drugs by the orderlies.", + "ts": 915, + "ti": 3, + "why": "dismissive mockery of addiction treatment" + }, + { + "quote": "It is you sexually assaulted someone, which I did not... or that you're stealing money. Those are the two things that someone could not recover from personally or professionally.", + "ts": 1107, + "ti": 4, + "why": "explicitly enumerates reputational worst cases amid the feud" + }, + { + "quote": "A giant demon will explode out of him like a cartoon and will start clawing at people's health insurance.", + "ts": 2224, + "ti": 3, + "why": "absurdist political-violence cartoon fantasy, clearly comedic" + }, + { + "quote": "What protects you is an aura of unstumpability.", + "ts": 2368, + "ti": 2, + "why": "coined magical-object bit about Trump merch" + }, + { + "quote": "A Muppet is kind of like a retarded person.", + "ts": 2963, + "ti": 4, + "why": "casual ableist slur dropped mid-riff about Elmo" + }, + { + "quote": "Take it from a Jihad Jeremy, a guy who wants to destroy the infidels of the western world... just the UK, that's a nice size, manageable terror target.", + "ts": 4082, + "ti": 5, + "why": "terrorism reframed as running gag through a satirical character" + }, + { + "quote": "If you're a lady, oh, you better stay away from the school, because I'll blow it up, I will do that.", + "ts": 4176, + "ti": 5, + "why": "school-bombing punchline inside the ironic jihadist bit" + } + ], + "transgression": { + "overall_ti": 5, + "profanity": 7, + "slur_usage": 2, + "harassment_or_cruelty": 4, + "sincerity": 2, + "targets": [ + "Neil deGrasse Tyson", + "Maddox", + "rehab industry", + "Elmo/Scott Baio/Sesame Street", + "EU and pundit class", + "Muslims (via satirical jihadist caricature)", + "women (Jihad Jeremy asides)", + "drinking culture", + "Hillary Clinton and Donald Trump (absurdist satire)", + "Joey Ryan (affectionate)" + ], + "rationale": "Peak sustained content is the Jihad Jeremy call-in: a satirical terrorist caricature delivering infidel-destruction, school-bombing, and misogyny jokes (dehumanizing generalizations played for laughs, TI 5), atop a casual ableist slur and a long public-figure roast. Nearly all edge is transparently comedic bits, keeping sincerity low despite the severity of the material." + }, + "content_warnings": [ + "profanity", + "slurs", + "sexual content", + "terrorism jokes", + "political satire" + ], + "_analyzed_at": "2026-08-23T05:17:56.946339+00:00", + "_source_transcript": "ep0004.json", + "_verification": { + "verdict": "pass", + "checked_at": "2026-08-23T05:21:17.903085+00:00", + "issues": [] + }, + "verified": "pass" + }, + { + "ep_num": 5, + "title": "Episode 5 - Dick on Sex Robots", + "pub_date": "Tue, 05 Jul 2016 16:10:25 +0000", + "runtime_minutes": 70, + "one_line_summary": "Dick roasts Neil deGrasse Tyson's evidence-based country 'Rationalia', debates cultural appropriation outrage with prospective co-host Denzel Walkes, bets on sex robots by 2030, and debuts the 'You Don't Know Dick' Facebook segment.", + "guests": [ + { + "name": "Sean", + "role": "cohost", + "notes": "Longtime audio engineer/cohort; banter throughout, picks Donatello as favorite Ninja Turtle." + }, + { + "name": "Denzel Walkes", + "role": "guest", + "notes": "Familiar voice billed as 'potential co-host'; IT guy; submits to interview questions, gives a rage segment and a dick tip; Twitter @THATDNZEL." + }, + { + "name": "Dustin Sinawa", + "role": "caller", + "notes": "'Chief of dickheads' of the Dickhead Army Facebook group; hosts the debut 'You Don't Know Dick' segment." + }, + { + "name": "Dan Kosterik", + "role": "caller", + "notes": "Email sender whose Trump inauguration fan art is described on air." + }, + { + "name": "Lieutenant Longshank", + "role": "caller", + "notes": "Voicemail from a self-described gold explorer in central Australia praising the show." + }, + { + "name": "Raph", + "role": "caller", + "notes": "Law graduate emailing for a bar-exam study dick tip; gets the move-your-furniture advice." + } + ], + "talking_points": [ + { + "topic": "Punnable baby names and the dickshow.com domain", + "summary": "Denzel's name sparks praise of punnable names; Dick recalls grandparents vetoing naming his sister Xanadu. dickshow.com was taken and redirects to gay porn, which Dick calls a 'Trumpian miracle'.", + "start_ts": 20, + "people": [ + "dick masterson", + "sean", + "denzel walkes" + ], + "controversy_ti": 1 + }, + { + "topic": "'I could do better' / Hangover sequels challenge", + "summary": "Dick rants that everyone smugly thinks they could do better than everything; Denzel claims he could out-write Hangover 2 and 3 and promises a screenplay in two months, jokingly pitched as a blaxploitation hangover movie.", + "start_ts": 173, + "people": [ + "dick masterson", + "sean", + "denzel walkes" + ], + "controversy_ti": 1 + }, + { + "topic": "Viewer mail: Revenant joke and Trump inauguration fan art", + "summary": "Justin Halbert's email mocks Leo DiCaprio crawling for a belt. Dan Kosterik's Photoshop piece depicts Trump riding Ann Coulter-pegasus, Dick with an 'unstumpability field' receiving a soul sword, Obama healthcare tentacles, and a Robo Clinton full of focus groups.", + "start_ts": 302, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Neil deGrasse Tyson 'Rationalia' rant", + "summary": "Dick mocks Tyson's one-line constitution ('all policy shall be based on the weight of evidence'), arguing science is trial-and-error and mostly wrong (geocentrism, pre-1900s medicine, Einstein vs quantum mechanics), and that evidence-worship yields communism; calls Tyson a smug megalomaniac worse than Trump on Twitter.", + "start_ts": 541, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Wrestling voicemail and Lesnar debate", + "summary": "A voicemail proposes a drinking game for last week's guest saying 'like' and disputes Joey Ryan being feared; Denzel defends indie wrestlers (Kenny Omega, Ricochet, Ospreay) over part-timer Brock Lesnar, returning at UFC 200. Dick compares WWE to his grandma's telenovelas.", + "start_ts": 963, + "people": [ + "dick masterson", + "denzel walkes" + ], + "controversy_ti": 1 + }, + { + "topic": "Lagunitas pronunciation and accents", + "summary": "Voicemail busts Dick's Anglo pronunciation of Lagunitas. Dick explains he avoids fake Spanish accents even speaking Spanish, arguing immigrants shouldn't flatten into generic American mush-mouth either.", + "start_ts": 1119, + "people": [ + "dick masterson", + "denzel walkes" + ], + "controversy_ti": 2 + }, + { + "topic": "Lieutenant Longshank voicemail", + "summary": "An Australian gold explorer describes 122F fly-camp life and hiking for one bar of signal to download Biggest Problem followed by Pornhub; Dick needles him for bragging about a hardship he chose.", + "start_ts": 1242, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Co-host interview Q1: worst cultural appropriation", + "summary": "Three news stories: Coachella headdress outrage, the dreadlocks-assault video, and Jesse Williams' BET speech (read verbatim). Denzel offers the Native-American-identity counterpoint; Dick calls appropriation outrage a 'factory of guilt', jokes about an appropriations tax building fiefdoms, and answers 'bikini wax, allegedly a Muslim invention'.", + "start_ts": 1344, + "people": [ + "dick masterson", + "denzel walkes", + "sean" + ], + "controversy_ti": 4 + }, + { + "topic": "Co-host interview Q2: will there ever be sex robots?", + "summary": "Both say yes; Dr. Ian Pearson's 2030 prediction that robot sex will be as common for women as porn is cited. Dick argues stigma evaporates if women adopt robots, requires true AI ('How am I gonna convince a supercomputer woman?'), yielding the 'computer roofie' line and China-manufacturing jokes.", + "start_ts": 2454, + "people": [ + "dick masterson", + "denzel walkes", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Denzel's rage: IT work and users who don't try", + "summary": "Denzel, sole IT guy, rages at users who don't attempt fixes (wrong password, refusing to attach files) and at being tricked into department-wide responsibility; Dick notes IT wage stagnation from overseas outsourcing at $13/hour and suggests subcontracting yourself.", + "start_ts": 2600, + "people": [ + "denzel walkes", + "dick masterson" + ], + "controversy_ti": 2 + }, + { + "topic": "Delivery drivers and competence as genius", + "summary": "Denzel recounts drivers lobbing packages over fences and leaving stickers without knocking; Dick mocks UPS support scripts and praises Amazon's 'call me now' button. Billy Joel's 'in an era of mediocrity, competence is genius' becomes the thesis.", + "start_ts": 2995, + "people": [ + "denzel walkes", + "dick masterson", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Dick tips: never leave the house vs expect fuck-ups", + "summary": "Denzel's tip is hermitry via apps; Dick rejects it as a WALL-E dystopia and counters that everyone is 'trying their best and they are very stupid', advising listeners to simply expect fuck-ups.", + "start_ts": 3189, + "people": [ + "dick masterson", + "denzel walkes" + ], + "controversy_ti": 2 + }, + { + "topic": "You Don't Know Dick debut (Facebook segment)", + "summary": "Dustin Sinawa launches the segment: the panel designs the most culturally appropriative outfit imaginable, Dick tells how 'what's your dad like' allegedly got him his wife at a 2am Denny's, Raph gets the rearrange-your-furniture bar-exam tip, Ginger Spice is ruled the correct answer, and a Michigan librarian's copy of Men Are Better Than Women awaits its first checkout.", + "start_ts": 3365, + "people": [ + "dick masterson", + "denzel walkes", + "sean", + "dustin sinawa" + ], + "controversy_ti": 3 + } + ], + "arguments": [ + { + "claim": "Tyson-style evidence-based governance is naive because science is perpetually provisional and mostly wrong", + "position": "anti", + "target": "Neil deGrasse Tyson / scientism", + "quality": "moderate", + "evidence_used": "Rationalia tweet quoted; geocentric epicycles; medicine harming patients until ~100 years ago; Einstein rejecting quantum mechanics" + }, + { + "claim": "Evidence-based policy taken seriously produces communism", + "position": "mockery-of", + "target": "central planning", + "quality": "trollish", + "evidence_used": "One-line syllogism about basing systems on assumed-correct production knowledge; 'you just killed 50 million people'" + }, + { + "claim": "Cultural appropriation panic is manufactured guilt and a 'dangerous form of brainwashing'", + "position": "anti", + "target": "outrage culture, Jesse Williams, dreadlocks harasser", + "quality": "moderate", + "evidence_used": "Coachella headdress controversy, viral dreadlocks confrontation video, Williams' BET speech quoted at length" + }, + { + "claim": "If you criticize something you should be able to do better", + "position": "pro", + "target": "armchair critics / Hangover 2-3", + "quality": "weak", + "evidence_used": "Craig Mazin's sequels offered as proof derivative writing is easy; Denzel's two-month screenplay pledge" + }, + { + "claim": "Sex robots are inevitable and normalization runs through female adoption", + "position": "pro", + "target": "", + "quality": "moderate", + "evidence_used": "Futurologist Dr. Ian Pearson's 2030 prediction; claim that women set a culture's moral barometer" + }, + { + "claim": "Most service failures come from people not trying, and competence now reads as genius", + "position": "anti", + "target": "lazy users, delivery carriers, outsourced support", + "quality": "moderate", + "evidence_used": "Password and email-attachment anecdotes; package thrown over fence; UPS phone-support script; Amazon callback feature; Billy Joel quote" + }, + { + "claim": "The sane response to universal incompetence is lowered expectations", + "position": "pro", + "target": "Denzel's perfectionism", + "quality": "moderate", + "evidence_used": "Package-driver 'that was his best' thought experiment" + }, + { + "claim": "Rearranging your furniture resets burnout and boosts productivity", + "position": "pro", + "target": "bar-exam burnout", + "quality": "weak", + "evidence_used": "Anecdote about companies hiring feng shui experts, then discovering mere furniture moves produced the gains" + } + ], + "ideas": [ + { + "concept": "Trumpian miracle", + "explanation": "Dick's term for the luck that dickshow.com was still ownable given .com squatters and the gay-porn redirect.", + "first_ts": 145 + }, + { + "concept": "Unstumpability field / soul sword", + "explanation": "Fan-art mythology casting Dick as a Trump-era paladin whose shitposting earns him a magical blade.", + "first_ts": 480 + }, + { + "concept": "Ho-host", + "explanation": "Dick's punny rename of the vacant co-host mantle Denzel is auditioning for.", + "first_ts": 957 + }, + { + "concept": "Factory of guilt", + "explanation": "His model of online outrage culture mass-producing shame for headdresses, playlists, and borrowed culture.", + "first_ts": 2042 + }, + { + "concept": "Appropriations tax / cultural fiefdoms", + "explanation": "Satirical endgame where customs are assigned to groups who collect royalties, recreating lords and kings of identity.", + "first_ts": 2187 + }, + { + "concept": "Computer roofie", + "explanation": "Dick's coin for programming an AI woman to consent to sex with you.", + "first_ts": 2573 + }, + { + "concept": "'Everybody is trying their best and they are very stupid'", + "explanation": "Dick's prescribed stoicism: expect fuck-ups, ditch the sadness, capacity defines 'best'.", + "first_ts": 3322 + }, + { + "concept": "You Don't Know Dick", + "explanation": "New Facebook-sourced trivia segment run by Dustin Sinawa testing fans (and Dick) on personal favorites.", + "first_ts": 3365 + }, + { + "concept": "Kirby's Dreamland outfit", + "explanation": "Bit proposing the single most appropriative costume on earth: headdress, samurai geta, fu manchu, biker vest, chaps, dreads, beret, bandoliers.", + "first_ts": 3400 + }, + { + "concept": "Competence is genius", + "explanation": "Adopted Billy Joel line used as the episode's service-industry standard: merely doing your job now amazes people.", + "first_ts": 3175 + } + ], + "notable_quotes": [ + { + "quote": "Yeah, because dickshow.com was taken, and it goes straight to gay porn.", + "ts": 131, + "ti": 2, + "why": "Crude self-deprecating domain joke" + }, + { + "quote": "Science is always wrong until it's not.", + "ts": 653, + "ti": 1, + "why": "Punchy aphorism anchoring the Tyson critique" + }, + { + "quote": "Neil deGrasse Tyson's Let's Bass It on the Evidence is how you get communism.", + "ts": 774, + "ti": 2, + "why": "Mocking transcribed jab at evidence-based policy" + }, + { + "quote": "This idea that evidence makes you infallible is fucking retarded to me.", + "ts": 848, + "ti": 4, + "why": "Uses the r-slur in sustained rant" + }, + { + "quote": "...this invention called whiteness uses and abuses us... gentrifying our genius and then trying us on like costumes before discarding our bodies like rinds of strange fruit.", + "ts": 1768, + "ti": 3, + "why": "Verbatim reading of Jesse Williams' racially charged speech" + }, + { + "quote": "By the way, the worst example of cultural appropriation is bikini wax. Allegedly a Muslim invention.", + "ts": 2428, + "ti": 3, + "why": "Religious-stereotype punchline to the interview question" + }, + { + "quote": "Then that's a computer roofie, my friend.", + "ts": 2573, + "ti": 3, + "why": "Sexual-assault framing played as joke about AI consent" + }, + { + "quote": "Well, if we see some homeless people with a podcast, I'm gonna kick the shit out of them.", + "ts": 3024, + "ti": 3, + "why": "Comedic threat of violence at package thieves" + }, + { + "quote": "...don't let me fucking catch you outside because I will hit you.", + "ts": 3272, + "ti": 3, + "why": "Hyperbolic violence fantasy toward hypothetical UPS driver" + }, + { + "quote": "And while you're there, have a nice yank at the jerkoff machines... every public library's got one.", + "ts": 4085, + "ti": 2, + "why": "Graphic crude gag about public libraries closing the episode" + } + ], + "transgression": { + "overall_ti": 4, + "profanity": 7, + "slur_usage": 3, + "harassment_or_cruelty": 3, + "sincerity": 3, + "targets": [ + "Neil deGrasse Tyson", + "Jesse Williams", + "social-justice outrage culture", + "lazy customers and service workers", + "women (sweeping generalizations)", + "Islam (bikini wax bit)", + "Apple products" + ], + "rationale": "Peak sustained edge sits in the long cultural-appropriation block, where the r-slur appears twice, racial/religious grievance is mocked, and throwaway violence jokes land, alongside constant hard profanity. It stays framed as comedy and roast rather than sincere demeaning rhetoric, holding the episode at level 4." + }, + "content_warnings": [ + "profanity", + "slurs", + "sexual content", + "comedy violence" + ], + "_analyzed_at": "2026-08-23T05:34:10.800166+00:00", + "_source_transcript": "ep0005.json", + "_verification": { + "verdict": "pass", + "checked_at": "2026-08-23T05:42:27.430948+00:00", + "issues": [] + }, + "verified": "pass" + }, + { + "ep_num": 6, + "title": "Episode 6 – Dick on Trans", + "pub_date": "Tue, 12 Jul 2016 05:54:07 +0000", + "runtime_minutes": 82, + "one_line_summary": "Dick auditions comedian Joan Ford—a Tournament of Nerds rival who has transitioned—in a frank, funny conversation about being a trans woman, dating, and Disneyland harassment, wrapped in rants about summer vacation, a satirical Marvel 'Summer of Inclusion' press release, and Trump's middle-class pitch.", + "guests": [ + { + "name": "Joan Ford", + "role": "guest", + "notes": "Comedian/writer (UCB, Tournament of Nerds); trans woman; discusses her transition, name change, dating, and street harassment; plugs her book 'Killing It'" + }, + { + "name": "Sean", + "role": "cohost", + "notes": "Audio engineer; occasional interjections (Disneyland bit, Quantum Leap dilemma)" + }, + { + "name": "Dustin Sinowah", + "role": "caller", + "notes": "'Chief of the dickheads' who runs The Dick Show Facebook group; delivers community updates" + }, + { + "name": "Weird Matthew McConaughey", + "role": "caller", + "notes": "Voicemail caller pitching a toilet flush-timing technique to avoid splashback" + } + ], + "talking_points": [ + { + "topic": "Intro & Tournament of Nerds credits", + "summary": "Dick introduces guest Joan Ford, praising her vicious UCB Tournament of Nerds battles, including her Harley Quinn bit roasting improv comedians for casting-couch abuse during the LA theater scandals.", + "start_ts": 29, + "people": [ + "dick masterson", + "joan ford" + ], + "controversy_ti": 2 + }, + { + "topic": "Rally-racing segue into trans talk", + "summary": "Dick uses a rally-racing navigator metaphor to confess his trepidation about introducing a trans guest; Joan says she welcomes addressing it and notes post-'Men Are Better Than Women' audience fascination with trans issues.", + "start_ts": 324, + "people": [ + "dick masterson", + "joan ford" + ], + "controversy_ti": 1 + }, + { + "topic": "Name choice & broken-hand banter", + "summary": "Joan explains choosing 'Joan' from 'John' after abandoning her defiant 'Female John' stance, plus middle name Haley. Dick recounts breaking his hand punching a kid, then lying with a different story each time, Joker-style.", + "start_ts": 544, + "people": [ + "dick masterson", + "joan ford" + ], + "controversy_ti": 1 + }, + { + "topic": "Rundown & mailbag", + "summary": "Denzel Walks leads the co-host rage pool; a reader email endorses Dick's anti-cultural-appropriation take; Philip Brodka transcribes episodes instead of studying social work; Justin Halbert's platoon sergeant 'DFU' dick tip prompts Gandalf/Dumbledore banter.", + "start_ts": 840, + "people": [ + "dick masterson", + "joan ford", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "'Summer of Inclusion' press release", + "summary": "Dick reads a fabricated Marvel PR announcing 'affirmative action heroes': Black Iron Man Woman, the Islamabad Hulk, a mentally disabled Superman, Professor Xavier with AIDS, autistic Dr. Robotnik, a Mexican wheelchair Quantum Leap, and Black Panther as a poor white college applicant.", + "start_ts": 1048, + "people": [ + "dick masterson", + "joan ford" + ], + "controversy_ti": 5 + }, + { + "topic": "Hillary tweets & Trump Twitter", + "summary": "They mock Hillary Clinton's Frozen-themed tweet responding to Trump's six-pointed-star coloring book controversy; Dick claims showing skeptics Trump's Twitter feed converts them, and Joan admits obsession after his Modern Family-writer feud.", + "start_ts": 1513, + "people": [ + "dick masterson", + "joan ford" + ], + "controversy_ti": 2 + }, + { + "topic": "Rage: summer vacations", + "summary": "Both rage that summer break stalls schooling and forces month-long refreshers; Dick argues school is mostly babysitting by incompetent teachers and that kids have 'a mental disability'; Joan adds it warps adults by creating an expectation of yearly breaks.", + "start_ts": 1597, + "people": [ + "dick masterson", + "joan ford" + ], + "controversy_ti": 3 + }, + { + "topic": "Trump & the middle class", + "summary": "Dick argues Trump's immigration and foreign policy will rebuild the gutted middle class via factory jobs; Joan suggests supporters treat him as a lottery ticket; Dick counters they just want an America-first president, mocking the app-economy hipster fantasy.", + "start_ts": 1979, + "people": [ + "dick masterson", + "joan ford" + ], + "controversy_ti": 2 + }, + { + "topic": "Tourist season & Disneyland slur", + "summary": "Joan rages that summer tourism turns LA into 'a vacationer's personal zoo,' describing increased staring, photos, and being called 'a faggot in a dress' at Disneyland by a girl wearing a Frozen t-shirt.", + "start_ts": 2160, + "people": [ + "joan ford", + "dick masterson" + ], + "controversy_ti": 4 + }, + { + "topic": "Dating while trans & drag pickup theory", + "summary": "Joan says interested women simply approach her and she's upfront about being into women; Dick tells his 'sexy lady gremlin' Goodwill dress-prison story and theorizes cross-dressing confidence attracts women, forecasting a Norma Desmond future for Hollywood Boulevard.", + "start_ts": 2320, + "people": [ + "joan ford", + "dick masterson" + ], + "controversy_ti": 3 + }, + { + "topic": "Bathroom bills, labels & alt-right", + "summary": "Joan dismantles the predator argument—anyone can already walk into any bathroom—and explains jokingly calling herself a lesbian; they debate alt-right 'moral degeneracy' claims, with Joan arguing her promoted alcoholism is more harmful than any gender identity.", + "start_ts": 2620, + "people": [ + "joan ford", + "dick masterson" + ], + "controversy_ti": 3 + }, + { + "topic": "Persecution olympics & trans realities", + "summary": "After comparing persecutions (Trump bumper sticker vs trans woman in LA), Joan describes lifelong feelings since age four-five, her own relative privilege, homelessness among trans women of color, the 40% attempted-suicide statistic, and 'trans panic' legal defenses.", + "start_ts": 2940, + "people": [ + "joan ford", + "dick masterson" + ], + "controversy_ti": 3 + }, + { + "topic": "Lyft tip & Facebook dispatch", + "summary": "Joan advises Lyft over Uber after drivers hit on or abuse her; she fake-dated one to shake him, inspiring Dick's zoo bear-cage prank idea. Dustin Sinowah reports group growth, a neighbor's gunfire, Pokemon Go robbery lore, ruined fireworks, and the library rental win.", + "start_ts": 3374, + "people": [ + "joan ford", + "dick masterson", + "dustin sinowah" + ], + "controversy_ti": 2 + }, + { + "topic": "Bondage tip, incest dilemma & daughter tip", + "summary": "Amanda asks where to tie up her kinky boyfriend without privacy; the panel suggests parents' bedrooms, dungeons, camping; Dick recalls Burning Man rope bondage. Mike Osborne's mother/girlfriend body-swap hypothetical draws incest jokes; daughters are advised to 'never put out.'", + "start_ts": 4018, + "people": [ + "joan ford", + "dick masterson", + "sean", + "dustin sinowah" + ], + "controversy_ti": 5 + }, + { + "topic": "Killing It promo, sign-off & voicemails", + "summary": "Joan plugs her action-movie parody guide 'Killing It' ('everyone I've ever known and loved died' means available); Dick teases a Tim Chang beef from Dodger Stadium Korean night; voicemails supply a 'Blackout' movie title, a basic-standing-cream puppet call, and a no-splashback flush tip.", + "start_ts": 4494, + "people": [ + "joan ford", + "dick masterson", + "weird matthew mcconaughey" + ], + "controversy_ti": 2 + } + ], + "arguments": [ + { + "claim": "Summer vacation wastes months of instruction and forces an annual refresher cycle every school year", + "position": "anti", + "target": "US school calendar", + "quality": "moderate", + "evidence": "Anecdotes: 'beginning of eighth grade is just a seventh grade refresher' compressed into six weeks; personal recollection of forgetting material" + }, + { + "claim": "School functions primarily as babysitting and most teachers are incompetent", + "position": "mockery-of", + "target": "public education, teachers, children", + "quality": "trollish", + "evidence": "Workplace analogy ('look around at your job—how many people are doing a good job') rather than data" + }, + { + "claim": "The push for college implicitly concedes high-school graduates are unemployable", + "position": "anti", + "target": "higher-education advocacy", + "quality": "weak", + "evidence": "Anecdotes about successful writers who skipped college; entertainment industry exception acknowledged" + }, + { + "claim": "Trump will halt America's slide into powerlessness and rebuild the middle class through factory jobs and America-first policy", + "position": "pro", + "target": "globalization, app economy, immigration status quo", + "quality": "moderate", + "evidence": "Assertion that the middle class is 'the engine of a country'; dismissal of the 'we don't want those jobs' objection" + }, + { + "claim": "Trump supporters want an interests-first president, not personal enrichment fantasies", + "position": "anti", + "target": "the 'temporarily embarrassed millionaires' stereotype of Trump voters", + "quality": "moderate", + "evidence": "Dick's claimed firsthand conversations with supporters" + }, + { + "claim": "Bathroom-predator panic is baseless: restrooms are unguarded and the confidence needed to cross-dress precludes covert predation", + "position": "anti", + "target": "conservative/trans-exclusionary bathroom-bill arguments", + "quality": "moderate", + "evidence": "Lived experience and the obvious point that nothing stops anyone from walking in today" + }, + { + "claim": "Cultural-appropriation policing is a segregationist, bigoted view that others cultures", + "position": "anti", + "target": "cultural-appropriation discourse", + "quality": "moderate", + "evidence": "Reader essay from Rauno Kingis framing cultural spread as humanity's vehicle for advancement" + }, + { + "claim": "Marvel and DC's diversity initiatives amount to cynical tokenism", + "position": "mockery-of", + "target": "Marvel Comics, DC Comics, Sega", + "quality": "trollish", + "evidence": "Fabricated satirical press release ('totally outrageous kick-ass ethnic superheroes or tokens')" + }, + { + "claim": "Alt-right 'moral degeneracy' objections to trans identity are selectively applied", + "position": "anti", + "target": "alt-right/ultra-conservative boards", + "quality": "moderate", + "evidence": "Comparison to tolerated vices: Joan's 'degree of alcoholism more dangerous than any sexual identity'; absence of a temperance movement" + }, + { + "claim": "Trans women of color face lethal structural risk, including 'trans panic' defenses excusing murder", + "position": "pro", + "target": "legal systems, family rejection, economic marginalization", + "quality": "moderate", + "evidence": "Cited 40% reported attempted-suicide statistic; description of trans panic legal doctrine" + }, + { + "claim": "Uber drivers harass trans riders at a far higher rate than Lyft drivers", + "position": "pro", + "target": "Uber", + "quality": "weak", + "evidence": "Personal frequency estimates (roughly 1-in-13 Lyft rides vs 1-in-30-or-40) and one aggressive anecdote" + } + ], + "ideas": [ + { + "concept": "Rally-navigator framing", + "explanation": "Dick casts himself as a blind rally driver and Joan as the navigator barking directions, to handle the delicate task of introducing a trans guest on air", + "first_ts": 324 + }, + { + "concept": "Peen Wienerstein", + "explanation": "Dick reveals his fake online alias used 'whenever I'm up to no good'", + "first_ts": 564 + }, + { + "concept": "'Female John' stance", + "explanation": "Joan's abandoned defiant position that names aren't inherently gendered and she'd stay John while living as a woman", + "first_ts": 590 + }, + { + "concept": "Break-your-hand liar training", + "explanation": "Tell everyone a different story about how you broke your hand until you become an urban myth, like the Joker's contradictory scar origin stories", + "first_ts": 816 + }, + { + "concept": "Rage pool", + "explanation": "Recurring contest where listeners/co-host candidates compete to be the biggest 'rage'; Denzel Walks currently leads", + "first_ts": 840 + }, + { + "concept": "'Summer of Inclusion'", + "explanation": "Satirical fake Marvel/DC/Sega press release coining 'affirmative action heroes' to mock diversity relaunches", + "first_ts": 1080 + }, + { + "concept": "Islamabad Hulk", + "explanation": "Bit character from the fake press release: Bruce Banner converts to Islam; catchphrase becomes 'you wouldn't like me because you're a racist'", + "first_ts": 1148 + }, + { + "concept": "The internet has become our mommy", + "explanation": "Subscription box services as care packages from a maternal internet sending monthly clothes and toothpaste", + "first_ts": 2068 + }, + { + "concept": "Temporarily embarrassed millionaires debate", + "explanation": "Joan invokes the idea that Americans see themselves as pre-rich (explaining Trump support); Dick disputes it for his base", + "first_ts": 2118 + }, + { + "concept": "Dress prison", + "explanation": "Dick's Goodwill mishap where he donned a dress like a shirt and got cinched immobile, arms aloft, requiring rescue", + "first_ts": 2455 + }, + { + "concept": "Cross-dressing pickup theory", + "explanation": "Dick's theory that gender-crossing confidence attracts women, predicting men in furs and sequins as the future of picking up women on Hollywood Boulevard", + "first_ts": 2562 + }, + { + "concept": "Trans panic defense explainer", + "explanation": "Joan explains laws/doctrines letting killers of trans women claim panic upon discovering the victim was trans", + "first_ts": 3326 + }, + { + "concept": "Zoo bear-cage fake date", + "explanation": "Dick's suggested upgrade to Joan's fake-date revenge: instruct a harassing driver to meet inside the LA Zoo bear cage at 12:15", + "first_ts": 3574 + }, + { + "concept": "Splash-back voiding technique", + "explanation": "Weird Matthew McConaughey's voicemail tip: time the flush so the log exits before water momentum causes splashback", + "first_ts": 4800 + } + ], + "notable_quotes": [ + { + "quote": "Yes, it's true, Iron Man is now a woman, and she's black.", + "ts": 1113, + "ti": 4, + "why": "Fake press release mocking Marvel's race-swapped relaunch" + }, + { + "quote": "Superman is retarded now. Krypton goes from super to special in an all-new relaunch.", + "ts": 1195, + "ti": 5, + "why": "Sustained disability-slur punchlines in the satire bit" + }, + { + "quote": "In the all-new mobile game... it's finally revealed that Dr. Robotnik is an autism.", + "ts": 1327, + "ti": 5, + "why": "Deliberately mangled grammar weaponizing autism for laughs" + }, + { + "quote": "A girl said, hey, that's some faggot in a dress. And she was wearing a Frozen t-shirt. And it's like, you missed the whole subtext of Frozen.", + "ts": 2280, + "ti": 4, + "why": "Quoted homophobic slur recounted from Disneyland harassment" + }, + { + "quote": "If you have that level of confidence, you can probably just interact with women on a normal human level and not have to be up to some sort of shenanigans to get into their fucking bathroom.", + "ts": 2645, + "ti": 2, + "why": "Profanity-laced but substantive rebuttal of bathroom-bill logic" + }, + { + "quote": "I am promoting a degree of alcoholism that is more dangerous and harmful than any kind of sexual identity.", + "ts": 2866, + "ti": 2, + "why": "Self-deprecating counter to alt-right degeneracy rhetoric" + }, + { + "quote": "In certain parts of the country, it might as well be legal to murder a trans woman of color.", + "ts": 3308, + "ti": 3, + "why": "Sincere, grave claim about impunity for anti-trans violence" + }, + { + "quote": "You're grown men. The only thing that excites you is buying things and maybe getting a blowjob from your wife later.", + "ts": 3892, + "ti": 2, + "why": "Crude roast of the dads judging his fireworks show" + }, + { + "quote": "This chick there tied me up and was slapping my tits around.", + "ts": 4197, + "ti": 4, + "why": "Graphic Burning Man bondage anecdote" + }, + { + "quote": "My mom is very beautiful and stays fit, but she's also a very sweet woman so she'd probably be an excellent lover.", + "ts": 4390, + "ti": 5, + "why": "Incest hypothetical played fully for shock comedy" + } + ], + "transgression": { + "overall_ti": 5, + "profanity": 7, + "slur_usage": 5, + "harassment_or_cruelty": 3, + "sincerity": 2, + "targets": [ + "Marvel/DC/Sega diversity initiatives", + "disabled people (satirical punchlines)", + "Muslim people (satire)", + "trans people (tropes mocked, guest defended)", + "alt-right", + "teachers and children", + "LA tourists", + "Uber drivers", + "Hillary Clinton" + ], + "rationale": "Peak sustained content is the roughly eight-minute 'Summer of Inclusion' fake press release built on disability slurs, AIDS jokes, autism mockery, and religious/racial caricature played entirely for laughs, reaching dehumanizing-group-mockery territory. The rest pairs near-constant strong profanity with a notably sincere, largely sympathetic long-form interview about the guest's transition." + }, + "content_warnings": [ + "slurs", + "strong language", + "sexual content", + "incest humor", + "discussion of suicide and anti-trans violence" + ], + "_analyzed_at": "2026-08-23T10:17:55.364480+00:00", + "_source_transcript": "ep0006.json", + "_verification": { + "verdict": "pass", + "checked_at": "2026-08-23T10:19:12.027590+00:00", + "issues": [] + }, + "verified": "pass" + }, + { + "ep_num": 361, + "title": "Episode 361 - Dick on Lizard Feet", + "pub_date": "Tue, 30 May 2023 06:46:00 +0000", + "runtime_minutes": 147, + "one_line_summary": "Dick opens at war with comic creator Eric July over scathing ISOM review notes, then roasts Target boycotters, Biden's antisemitism strategy, trans lactation, asexual micro-labels and a robot police dog, before interrogating furry callers about a lizard-feet kink and Fur Affinity's credit-card-driven cub-art ban.", + "guests": [ + { + "name": "sean", + "role": "cohost", + "notes": "the audio engineer; straight-man foil, supplies the asexual-wiki tip, mindfulness defense and vape/vaping riffs" + }, + { + "name": "eric july", + "role": "caller", + "notes": "ISOM comic writer; calls in mid-show to argue Dick's criticism was bad faith, after a 'three-hour meltdown stream' of clips is replayed; dubbed Dick 'Buster Baxter'" + }, + { + "name": "roxanne", + "role": "caller", + "notes": "furry with a lizard fursona; grilled on the sona's backstory and kinks until revealing a lizard-feet interest" + }, + { + "name": "ash vampire", + "role": "caller", + "notes": "car salesman with a fox fursona; walks through Fur Affinity's proportion-grid ban, the IMVU buyback and his payment-processor censorship theory" + }, + { + "name": "sam from wisconsin", + "role": "caller", + "notes": "reassures Dick about fair-gate with his wife's lifelong grudge over a judge ruling a snail 'not an animal'" + } + ], + "talking_points": [ + { + "topic": "Eric July feud opener: 'ho ass nigga' and crack-vs-cocaine", + "summary": "Dick opens claiming Eric July called him a 'ho ass nigga' and accused him of smoking crack after Dick criticized his comic. Long bit contrasts motivated cocaine 'doers' vs lazy crack smokers, ending with Dick vowing not to be intimidated ('pulled up on') in his deck shoes and lines of cocaine.", + "start_ts": 0, + "people": [ + "dick", + "sean", + "eric july" + ], + "controversy_ti": 5 + }, + { + "topic": "ISOM review and $3M culture-war comics", + "summary": "Eric's first comic sold ~$3M; Dick says buyers purchase it unread as a $35 win against the culture war. Vito predicted it would suck out of jealousy; Dick read it, found nothing happens in issue one (man may/may not have powers asks club friend about girl who may/may not be in trouble), posted notes, and triggered a meltdown stream where Eric refused to say his name.", + "start_ts": 134, + "people": [ + "dick", + "sean", + "eric july", + "vito" + ], + "controversy_ti": 4 + }, + { + "topic": "Storytelling craft: favorite-part test and editors", + "summary": "Dick's test: name a favorite scene in Godfather or Raiders—if a work has none it failed, lacking motivation, urgency, ticking clocks. Carole King wrote ~300 songs before a listenable one; Dick's own manuscript came back 70% redlined and he approved every note; Fox deleted an entire character from their sold TV script. Money doesn't last, art does.", + "start_ts": 420, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 1 + }, + { + "topic": "'The Thinly Skinned Middle-Aged Man' comic pitch", + "summary": "Parody comic coinage: an easily offended middle-aged man who stores toxic rage and, like a necromancer, summons armies of keyboard warriors to go tweet at whoever offended him; his nemesis is 'the incredibly stupid woman' whom he must make quit the internet—a ticking clock, Dick notes.", + "start_ts": 763, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Target Satanic pride confrontation", + "summary": "Clip of a Christian man confronting Target staff over 'satanic pride propaganda'; a deadpan employee trolls him ('bring him around back, we'll get him in freight'). Dick mocks the boycott as engineered provocation—Satanists don't believe in Satan, they just pick whichever side pisses you off—and notes actual evil gets ignored over rainbow clothes.", + "start_ts": 1013, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "LA Fair mosaic robbery", + "summary": "Their tile mosaic scored a literal zero while every other entry got a ribbon; 80s girl's spreadsheet sleuthing reveals clerks checked it in as polymer clay—where it won first place—which the judges then read as a zero in mosaic. The whole point, the gloating day, was ruined; girlfriend's Chicago pizza photo took second.", + "start_ts": 1548, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 1 + }, + { + "topic": "Lactating trans woman", + "summary": "Reaction to a trans woman who allegedly induced lactation to feed her partner's baby ('queer joy'). Dick suspects an OnlyFans cow-costume marketing scam; they riff on breast milk adapting to infants, fetish ubiquity ('anything coming in or out of a person'), and conclude the kid will turn out like every other shithead kid.", + "start_ts": 1847, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 4 + }, + { + "topic": "LAPD robot dog", + "summary": "City council voted 8-4 to accept a donated ~$300K Boston Dynamics quadruped for LAPD despite activist complaints it will surveil black and brown communities. Dick jokes John Henry pit-fighter folklore, harpoons at fat women, hates cops and robots, and begs LA criminals to steal it like the 'autism horse'.", + "start_ts": 2217, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 4 + }, + { + "topic": "Fish Tank shoutout and 'gender-affirming' steroids", + "summary": "Sam Hyde's Fish Tank game with Letty and Josie (Tim Pool cameo) gets a clip; Dick offers to shave his head for season two. Then a trans-inclusion tweet prompts Dick's consistency argument: if blockers are fairness, juicing little boys for football must be too—envisioning booster clubs bribing testers with untestable Lance Armstrong cycles.", + "start_ts": 2425, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Biden's antisemitism strategy, swastika buyback, Israel gaslighting", + "summary": "They mock the 'first ever' national strategy's '100 bold unprecedented actions'—invoking WWII, D-Day and Japanese internment as precedents—and pitch a swastika buyback program for Third Reich china. Debate follows on whether antisemitism is truly a top crisis; Sean floats that American Jews are gaslit into defending Israel, with tariffs/prosperity offered as hate reducers.", + "start_ts": 2669, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 5 + }, + { + "topic": "Mailbag: tips test, AI vs women's jobs, doctor math, proton vapes", + "summary": "Super-chat tipping is tested with a heroin-joke email and a 'pissing through the fly' salary-raise testimony. Bloomberg's paywalled 'AI-threatened jobs mostly held by women' headline gets skimmed and mocked. A listener letter about a female doctor misreading a 13cm cyst as 13mm fuels women-doctors-and-math ridicule; car-battery 'proton pack' vapes close the mailbag.", + "start_ts": 3208, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "101 new asexual sexualities", + "summary": "Deep dive into the Asexuals Wikia: cupiosexual, fraysexual ('oh, that's called straight'), ignatosexual, ivanasexual (enjoys receiving, refuses giving—'not the same thing as simply being selfish'), coinecisexual, lamosexual. They conclude the micro-labels describe normal behavior, suspect algorithmic generation, and ironically claim flags matching Dick's kitchen backsplash.", + "start_ts": 3968, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Eric July calls in: bad faith vs criticism", + "summary": "Eric accuses Dick of fake-reading ISOM and stirring shit; Dick stands by notes (the unearned 'two weeks ago' cold open, structure problems) and mocks Eric's 'Michael Jordan of comics' self-image ('you're not even a Kurt Rambis'). Both agree respect begets respect; Sean notes audiences owning failures openly.", + "start_ts": 4464, + "people": [ + "eric july", + "dick", + "sean" + ], + "controversy_ti": 4 + }, + { + "topic": "Roxanne the lizard furry interrogation", + "summary": "Caller Roxanne (lizard, species forgotten) is waterboarded with questions about the sona—not inflated, not a pedophile, does eat other lizards, has two cocks—until admitting a lizard-feet (paws being stepped on) interest sparked by Jurassic Park. Verdict: 'guy likes lizard feet, what are you gonna do?' Friend passage bargained in exchange.", + "start_ts": 4902, + "people": [ + "roxanne", + "dick", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Fur Affinity's cub-art ban and payment processors", + "summary": "Ash Vampire explains FA's new rule banning cub/pokemon art by head-to-body proportion grids (Pikachu allowed, Yoshi not, Lord Farquaad borderline) while teen-pregnancy fetish art stays—proving it's Visa/Mastercard pressure, not morality: wording mirrors Patreon's purge, timed with FA+ subscriptions and the IMVU buyback, and staff violate their own rules. Jokes aside, a sincere free-speech thread: vague private censorship strands small artists on less safe sites ('we need our own Israel for furry porn artists').", + "start_ts": 5268, + "people": [ + "ash vampire", + "dick", + "sean", + "roxanne" + ], + "controversy_ti": 5 + }, + { + "topic": "Rain Furrest horror and con hygiene", + "summary": "Ash ranks the carpet-scrap fursuit ('Buffalo Bill of the furry world', 'full of dog shit') and legendary Rain Furrest—diapers, desecrated ball pit, hotels banning furry cons—as the community's worst; Dick recounts the Chicago furry-con bathroom hallway smelling like a batting glove 'passed down from my father's father's father', plus the cum-pizza guy callback.", + "start_ts": 6691, + "people": [ + "ash vampire", + "dick", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Rumble rant and 'Snapback' premiere", + "summary": "Plugs collapse into a conspiracy riff: Rumble's swear filter blocks 'dick', its ads are broken, and Dick theorizes a $100M anti-Trump DeSantis Super PAC bought it as a propaganda shell with no intent to fix anything. Listener band Prisms and Sunsets premieres 'Snapback' early; Dick mangles the project names ('Little Green Ghouls') and signs off crudely.", + "start_ts": 7239, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Anti-mindfulness rage: skeleton of titanium", + "summary": "A caller touts mindfulness for men; Dick erupts that hyper-awareness of his surroundings would drive him to blow his brains out—he wants to be 'a skeleton of titanium', declaring 'fuck mental health and fuck you'. Sean counters that mirroring vulnerability works on women; both agree unsolicited thou-shalt advice breeds resentment.", + "start_ts": 7816, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Rage mailbag: forgotten deodorant and chili-oil shroom burn", + "summary": "Listener rages over forgetting deodorant, spawning stick-melt physics and lost aerosol nostalgia. Another letter details capsaicin transferring from hands to genitals at the peak of a two-gram shroom trip—the most intense penile pain while feeling great; Dick relates via jalapeño-contact-lens mishaps and admits the drug talk is tempting him.", + "start_ts": 8017, + "people": [ + "dick", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Snail-gate solidarity, rape-survivor jab and Buster Baxter finale", + "summary": "Sam's wife has beefed for decades with a judge who ruled a snail 'not an animal'—proof Dick will never get over fair-gate; Dick likens himself to Richard Jewell ('turns out it was Eric Rudolph all along') and jokes about addressing rape survivors about his LA Fair trauma. Final Eric July clips mock Dick as Buster Baxter from Arthur; Dick's verdict: 'you owe it to your funders to get an editor', closing 'fuck art and fuck you.'", + "start_ts": 8133, + "people": [ + "dick", + "sean", + "sam", + "eric july" + ], + "controversy_ti": 4 + } + ], + "arguments": [ + { + "claim": "Eric July's ISOM fails basic storytelling—no motivation, stakes, or memorable scenes", + "position": "mockery-of", + "target": "Eric July / ISOM", + "quality": "moderate", + "evidence_used": "his posted page-by-page notes (security-guard punch codes as murder), the Godfather/Raiders favorite-part test, panel read-through with Sean" + }, + { + "claim": "Anti-woke comics sell as unread political trophies, not literature", + "position": "pro", + "target": "culture-war comic buyers/marketing", + "quality": "moderate", + "evidence_used": "~$3M first-print sales, 'can't even name a favorite part' fan responses" + }, + { + "claim": "Professional editing makes art better and creators must submit to notes", + "position": "pro", + "target": "defensive first-time creators, Eric July", + "quality": "strong", + "evidence_used": "his own manuscript returned 70% redlined and improved, Fox TV notes deleting a character, Carole King's ~300 practice songs, 'very few Jimmy Pages'" + }, + { + "claim": "Target's Satanic-merch panic is manufactured provocation that Christians should starve, not feed", + "position": "mockery-of", + "target": "Christian boycott movement / The Satanic Temple stunts", + "quality": "moderate", + "evidence_used": "viral store-confrontation video, Satanists' self-described trolling rationale" + }, + { + "claim": "The LA Fair miscategorized their mosaic as polymer clay, awarded it first place there, then scored it zero in mosaic", + "position": "pro", + "target": "LA Fair judging staff", + "quality": "strong", + "evidence_used": "published winners spreadsheet showing zero in the mosaic column and a first-place ribbon in a category they never entered" + }, + { + "claim": "If puberty blockers count as sports fairness, steroid-doping boys must be equally permissible", + "position": "anti", + "target": "trans-inclusion in women's sports advocates", + "quality": "trollish", + "evidence_used": "reductio ad absurdum: Richard Williams injecting daughters, booster clubs bribing testing facilities, untestable Armstrong cycles" + }, + { + "claim": "'Unprecedented' government action against hate has historically meant abuses like Japanese internment", + "position": "mockery-of", + "target": "Biden administration's antisemitism strategy", + "quality": "trollish", + "evidence_used": "WWII/D-Day and nuclear-armament-of-Israel comparisons, internment-camp reference, swastika-buyback satire" + }, + { + "claim": "Antisemitism is overstated as an American societal crisis and Jewish support for Israel is culturally conditioned", + "position": "anti", + "target": "US national strategy framing / Israel-diaspora politics", + "quality": "weak", + "evidence_used": "speculation plus ~16M Jews worldwide figure; admits uncertainty throughout" + }, + { + "claim": "Fur Affinity's ban is credit-card-processor compliance disguised as morality, and platforms should admit it", + "position": "pro", + "target": "Fur Affinity owner / IMVU / payment processors", + "quality": "moderate", + "evidence_used": "rule wording identical to Patreon's 2018 purge, FA+ subscription launch timing, owner buying site back, staff galleries violating their own rules" + }, + { + "claim": "Opaque platform censorship pushes small artists onto demonstrably less safe sites", + "position": "pro", + "target": "payment processors and platform policy", + "quality": "moderate", + "evidence_used": "artist exodus narrative, prior platform hack leaking DMs/emails, Inkbunny 'legit pedophiles' migration claim" + }, + { + "claim": "Mindfulness coaching alienates men and functions as pickup-artist putty", + "position": "anti", + "target": "men's self-improvement/mindfulness gurus", + "quality": "trollish", + "evidence_used": "Dick's hyperawareness-leads-to-suicide bit; Sean's mirror-the-women counterargument" + } + ], + "ideas": [ + { + "concept": "Crack vs. cocaine motivation", + "explanation": "Running bit: crack smokers are lazy, cocaine 'doers' are motivated—recast as Dick's rebuttal to being called a crack smoker, callback all episode ('I'll smoke crack, Eric')", + "first_ts": 51 + }, + { + "concept": "The favorite-part test", + "explanation": "If nobody can name a favorite scene, the story objectively failed to create investment; applied to Godfather, Raiders, South Park vs ISOM", + "first_ts": 487 + }, + { + "concept": "$35 win against the culture war", + "explanation": "Theory that anti-woke comics are bought unread as tribal victory tokens, which is still a legitimate product a creator sells", + "first_ts": 252 + }, + { + "concept": "The Thinly Skinned Middle-Aged Man", + "explanation": "Parody comic pitch: rage-hoarding offended man necromancers armies of keyboard warriors; nemesis is 'the incredibly stupid woman'", + "first_ts": 763 + }, + { + "concept": "Buster Baxter", + "explanation": "Eric July's nickname for Dick (rabbit from Arthur), adopted as a running gag and dissected via cartoon screenshots in the finale", + "first_ts": 1166 + }, + { + "concept": "Swastika buyback program", + "explanation": "Gun-buyback satire for confiscating 'Third Reich china wear' from hate-mongers, no questions asked", + "first_ts": 3077 + }, + { + "concept": "Lizard feet disclosure bargain", + "explanation": "Interrogation format: caller's friend only admitted to the stream once the caller confesses his fursona's kink—Jurassic Park footstep origin story", + "first_ts": 5591 + }, + { + "concept": "Our own Israel for furry porn artists", + "explanation": "Bit-proposal for a homeland platform where furry artists can't be pushed around by payment processors; immediately fact-checked as not antisemitic", + "first_ts": 6499 + }, + { + "concept": "Payment-processor determinism", + "explanation": "Serious thesis threaded through the furry segment: visible content rules on indie platforms are really Visa/Mastercard compliance, and honest disclosure would redirect artist anger upward", + "first_ts": 5268 + }, + { + "concept": "Skeleton of titanium", + "explanation": "Dick's anti-mindfulness ideal self—all vulnerability burned away, Terminator-style; 'fuck mental health and fuck you'", + "first_ts": 7933 + } + ], + "notable_quotes": [ + { + "quote": "That's my motivation is cocaine, motherfucker. You lazy asses are smoking crack.", + "ts": 101, + "ti": 2, + "why": "signature opening bit equating stimulant choice with work ethic" + }, + { + "quote": "They're to black people what black people are to white people, as far as sacred cows go.", + "ts": 571, + "ti": 5, + "why": "group-hierarchy comparison about trans people played for provocation" + }, + { + "quote": "I've never been called the N word three times.", + "ts": 731, + "ti": 4, + "why": "repeated slur referencing as centerpiece of the opening feud bit" + }, + { + "quote": "There's actual evil being perpetrated and you're crying about rainbow clothes.", + "ts": 1077, + "ti": 2, + "why": "dismissive jab at Christian Target boycotters" + }, + { + "quote": "That fucking thing is gonna end up in a dog fighting ring.", + "ts": 2253, + "ti": 3, + "why": "edgy racialized crime stereotype joke about the LAPD robot" + }, + { + "quote": "Third Reich china wear—you gotta get that stuff off the streets.", + "ts": 3091, + "ti": 4, + "why": "Nazi-paraphernalia buyback satire" + }, + { + "quote": "Trick question. They're all child porn, Dick.", + "ts": 5448, + "ti": 5, + "why": "caller punchline joking through the cub-art proportion grid" + }, + { + "quote": "Are you like a professional pedophile or something?", + "ts": 5938, + "ti": 4, + "why": "deadpan accusation to furry guest during CSAM-policy segment" + }, + { + "quote": "We need our own Israel for furry porn artists.", + "ts": 6499, + "ti": 3, + "why": "ethnically-charged analogy for a censorship-proof art platform" + }, + { + "quote": "It was like the inside of a batting glove that had been passed down from my father's father's father.", + "ts": 6581, + "ti": 1, + "why": "gross-out but harmless furry-con smell simile" + }, + { + "quote": "No, I want to be a skeleton of titanium that has burned everything else away. Fuck mental health and fuck you.", + "ts": 7933, + "ti": 3, + "why": "comedic total rejection of mental-health discourse" + }, + { + "quote": "I thought I was gonna have a nice day celebrating my achievements and myself and I was raped.", + "ts": 8300, + "ti": 4, + "why": "rape comparison joke about losing a county-fair ribbon" + } + ], + "transgression": { + "overall_ti": 5, + "profanity": 8, + "slur_usage": 5, + "harassment_or_cruelty": 5, + "sincerity": 3, + "targets": [ + "Eric July", + "trans people", + "furries", + "women", + "Christian conservatives", + "Biden administration", + "Jews/Israel discourse", + "LAPD", + "payment processors", + "county fair staff" + ], + "rationale": "Peak sustained level hits twice: the ten-minute opening built on repeated n-word referencing of Eric July's insults, and the thirty-minute Fur Affinity stretch where hosts and callers banter through cub-porn moderation rules ('trick question, they're all child porn'). Group-directed mockery of trans people, women and furries is constant but consistently framed as bits, keeping it at the dehumanizing-for-laughs tier rather than sincere demeaning rhetoric." + }, + "content_warnings": [ + "racial slurs", + "sexual content", + "jokes about drawn/fictional child pornography (Fur Affinity policy segment)", + "drug use", + "rape jokes", + "misogyny", + "transphobia" + ], + "_analyzed_at": "2026-08-23T02:40:54.300015+00:00", + "_source_transcript": "ep0361.json", + "_verification": { + "verdict": "pass", + "checked_at": "2026-08-23T03:14:42.940901+00:00", + "issues": [] + }, + "verified": "pass" + }, + { + "ep_num": 362, + "title": "Episode 362 - Dick on Apparently Unfinished", + "pub_date": "Mon, 05 Jun 2023 06:17:00 +0000", + "runtime_minutes": 107, + "one_line_summary": "Dick escalates the Eric July 'Isom' review war, closes the LA Fair mosaic saga by forensically exposing a judge's erased 'apparently unfinished' note, and detours through Lizzo fat-shaming, Iranian mosque closures, and listener rage mail.", + "guests": [ + { + "name": "Sean", + "role": "cohost", + "notes": "Audio engineer/'world-touring LA-based comedian'; delivered his own Isom review (2 of 5 Mickeys), explains audio/animation craft analogies, helps examine the mosaic tag" + }, + { + "name": "Jacuzzi Samurai (John)", + "role": "caller", + "notes": "Boston voicemail contributor who submitted a ruined-theme-song remix" + }, + { + "name": "Various voicemail callers", + "role": "caller", + "notes": "Listeners submitting 'what makes me rage' segments: air-quality alerts, Minecraft clone labor, cleaning-product sprawl, hazy IPAs, D&D/black elves" + } + ], + "talking_points": [ + { + "topic": "Cold open: insomnia, broken multistream, meth beans", + "summary": "Dick got zero sleep and fights his streaming software; jokes about bullying 'retarded' drivers and blames a neighborhood house fire on homeless people cooking 'meth beans.'", + "start_ts": 0, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 4 + }, + { + "topic": "Eric July Isom feud recap", + "summary": "Sean confirms he read Isom and found his own notes diplomatic; Dick reads the fan quote 'we are not an echo chamber,' recounts calling into Eric's stream to call him childish, notes Eric again 'calling me the n-word.'", + "start_ts": 260, + "people": [ + "dick masterson", + "sean", + "eric july" + ], + "controversy_ti": 5 + }, + { + "topic": "Anti-woke politics and storytelling gospels", + "summary": "Dick mocks both wokeness and anti-woke marketing, ridicules DeSantis as 'the darkness from The Neverending Story,' cites Save the Cat and A Hero with a Thousand Faces, and riffs on Isom's Calvary/cavalry typo.", + "start_ts": 515, + "people": [ + "dick masterson", + "sean", + "eric july" + ], + "controversy_ti": 3 + }, + { + "topic": "Show open: Mickey scores and the mosaic", + "summary": "Formal intro ($20 million man); Sean rates Isom two of five Mickeys after confusing the scale; Dick unveils the Randy-collaboration LA mosaic and defends its groutless design via his 'grout equals toilet' theory, including a waterboarding bit.", + "start_ts": 876, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 4 + }, + { + "topic": "LA Fair saga pt. 1: results and pedaball", + "summary": "Recap: Dick's girlfriend's joke pizza photo took second place while their ribbonless mosaic scored 'looks unfinished'; a '1' appeared under the wrong category. Digression: imaginary 'pedaball' game exposing panelists who can't endorse curing pedophiles.", + "start_ts": 1260, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 5 + }, + { + "topic": "Fundamentals doctrine", + "summary": "Argument that Picasso mastered realism before Cubism, so creators must learn fundamentals before breaking them or their art is 'a function of chance'; improvement must be structured, not mere repetition ('you don't shit out a Venus de Milo in your 80s').", + "start_ts": 1528, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Fat ladies nachos story", + "summary": "Dick retells a fair incident where two large women spilled nachos on him, demanded free replacements blaming him, and he counter-scammed them as 'the manager'; extended fat-shaming riff including a 'two girls one cup of salt' joke.", + "start_ts": 2125, + "people": [ + "dick masterson" + ], + "controversy_ti": 4 + }, + { + "topic": "Isom teardown: plot and continuity", + "summary": "Dick presses that Isom's plot is just 'a woman maybe in danger'; disputes over whether Isom flies; flags the security guard whose stomach explodes yet reappears alive; Sean contrasts with animation's 'keep-alive groan' convention.", + "start_ts": 2271, + "people": [ + "dick masterson", + "sean", + "eric july" + ], + "controversy_ti": 5 + }, + { + "topic": "LA Fair saga pt. 2: confrontation and cover-up", + "summary": "Pickup visit: the organizer apologizes, calls the '1' a 'data entry error,' and reveals the judge's tag note 'Unfinished.' Rants about participation ribbons; Randy's puppet was donated to a children's hospital; flippant Brian Singer/Godfather III child-rape satire about Hollywood impunity.", + "start_ts": 2994, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 6 + }, + { + "topic": "Tag forensics: 'apparently unfinished'", + "summary": "Gamma-correcting the tag photo reveals erased pencil text reading 'apparently unfin—' beneath 'unfinished,' which Dick frames as a judge's abandoned honest verdict and literal cover-up; girlfriend plots a revenge photo entry for next year.", + "start_ts": 3572, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "Lizzo quits over fat-shaming", + "summary": "Reading Lizzo's tweets about online abuse, Dick celebrates the possibility 'we got her,' mocks her body and outfit choices ('you dumb bitch'), and jokes that mocking her music might make her 'quit eating'; concedes her music is good.", + "start_ts": 3882, + "people": [ + "dick masterson", + "sean", + "lizzo" + ], + "controversy_ti": 5 + }, + { + "topic": "CDC director Mandy Cohen clip", + "summary": "They play Mandy Cohen describing coordinating COVID mandates by phoning Massachusetts ('are you gonna let them have professional football?' 'Nope.' 'Neither are we'), mocking the policymaking as frivolous, with a hijab joke and 'pig dicks' jab.", + "start_ts": 4251, + "people": [ + "dick masterson", + "sean", + "mandy cohen" + ], + "controversy_ti": 3 + }, + { + "topic": "Comments: Islam dying, Tate, shitiverse, fursuit", + "summary": "Mailbag: Iran mosque-closure stats framed as Islam being 'Christianity for dumb people'; theory that Andrew Tate is paid to promote Islam; Eric July's 'shitiverse' spin-offs teased; listener update identifies the carpet fursuiter as an elderly zoophile with a criminal record.", + "start_ts": 4456, + "people": [ + "dick masterson", + "sean", + "andrew tate", + "eric july" + ], + "controversy_ti": 5 + }, + { + "topic": "Sweden rant, obesity rankings, pedophile-cure redux", + "summary": "Swedish listener decries alcohol monopoly and drug laws amid gang violence; Dick ranks nations by 'how fat the women are'; more Eric July-stream clips: Dick defends rehab over killing pedophiles, spawning the 'retroactive abortion' satirical form bit.", + "start_ts": 4861, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 6 + }, + { + "topic": "Voicemails, black elves, sign-off", + "summary": "Theme-song remix praised; rages on air-quality alerts, Minecraft-clone labor, women's cleaning products ('they don't understand chemicals'), vinegar stereotypes, hazy IPAs, and Rings of Power black-elf outrage ('it's make-believe'); Canada MAiD suicide joke; Emmett Till jab at Eric July; confrontational sign-off.", + "start_ts": 5321, + "people": [ + "dick masterson", + "sean", + "eric july" + ], + "controversy_ti": 5 + } + ], + "arguments": [ + { + "claim": "Isom suffers real structural failures: no articulable plot, an unclear protagonist, and continuity errors (a murdered security guard who returns)", + "position": "mockery-of", + "target": "Eric July / Isom", + "quality": "moderate", + "evidence_used": "Dick's written notes, Sean's independent review, page-specific citation of the exploding-stomach guard reappearing, Eric's own request for audience criticism" + }, + { + "claim": "Creators must master fundamentals before breaking rules, or their output is 'a function of chance'", + "position": "pro", + "target": "Eric July and untrained creators", + "quality": "strong", + "evidence_used": "Save the Cat, A Hero with a Thousand Faces, Picasso's academic training, Pee-wee's Big Adventure as formula executed perfectly" + }, + { + "claim": "Hiring by identity instead of merit makes storytelling binary pass/fail and hurts everyone including beneficiaries", + "position": "anti", + "target": "Hollywood diversity hiring and Eric July's anti-woke marketing alike", + "quality": "moderate", + "evidence_used": "Little Mermaid remake, disabled-golfer tee analogy, session-drummer 'self-taught stops mattering' anecdote" + }, + { + "claim": "The LA Fair dishonestly disqualified the mosaic and then covered its tracks", + "position": "pro", + "target": "LA Fair judges/staff", + "quality": "moderate", + "evidence_used": "Physical name tag, brightness/gamma-adjusted scans showing erased pencil text 'apparently unfin—', prior written promise of display and non-disqualification, shifting 'data entry error' explanation" + }, + { + "claim": "Eric July cannot process criticism, deflects with pedantry, and monetizes haters", + "position": "mockery-of", + "target": "Eric July", + "quality": "trollish", + "evidence_used": "His stream meltdowns, 'dance vs moonwalk on graves' dispute, 'we are not an echo chamber' fan quote, alleged n-word use, karaoke-style reading of Dick's notes" + }, + { + "claim": "Curing pedophilia would be preferable to killing offenders, and bloodlust rhetoric logically extends to killing abused kids who become offenders", + "position": "anti", + "target": "Right-wing streamers (Ethan Van Sciver cohort) advocating shooting pedophiles", + "quality": "moderate", + "evidence_used": "Claimed child-services worker call-in, reductio ad absurdum exchanges, 'retroactive abortion' satirical bit" + }, + { + "claim": "Islam is collapsing in majority-Muslim countries and influencers like Andrew Tate may be paid to promote it", + "position": "anti", + "target": "Islam / Andrew Tate", + "quality": "weak", + "evidence_used": "Iran International report citing a cleric: ~50,000 of 75,000 Iranian mosques closed; speculation about Tate's webcam-operation hustle" + }, + { + "claim": "Outrage over black elves/dwarves in Tolkien adaptations is absurd because the material is invented fantasy", + "position": "mockery-of", + "target": "Anti-woke Rings of Power complainers (grouped with Eric July buyers)", + "quality": "moderate", + "evidence_used": "'It's make-believe' refrain, melanistic-jaguar evolutionary bit, admission that the black elf character was actually cool" + } + ], + "ideas": [ + { + "concept": "Peter Griffin insomniacs", + "explanation": "Bit mocking people who one-up insomnia sufferes with impossible claims like 'I haven't slept since '78'", + "first_ts": 33 + }, + { + "concept": "Meth beans", + "explanation": "Homeless caricature bit: cooking meth inside beans ('two birds one bean'), offered as the cause of a neighborhood house fire", + "first_ts": 201 + }, + { + "concept": "Mickey score", + "explanation": "Running gag rating works 'out of five Mickeys' (Mickey Mouse), repeatedly confused with slipping someone a Mickey", + "first_ts": 897 + }, + { + "concept": "Grout-toilet theory", + "explanation": "Dick's design rule that visible grout makes tilework read as toilet/non-art, justifying the mosaic's tightly packed groutless tiles as a deliberate artistic choice", + "first_ts": 1195 + }, + { + "concept": "Pedaball", + "explanation": "Imaginary rec-center game where passing the ball requires stating escalating ways to kill pedophiles; used to trap interlocutors into admitting they'd also 'cure' pedophilia", + "first_ts": 1372 + }, + { + "concept": "Function of chance", + "explanation": "Craft doctrine: without learned fundamentals, artistic success is accidental rather than intended ('learn the fundamentals and then you can break them')", + "first_ts": 1528 + }, + { + "concept": "Stri-san effect", + "explanation": "Deliberately mangled 'Streisand effect' mocking Eric July's literacy; Dick insists he doesn't care if feuding boosts the comic's sales", + "first_ts": 2580 + }, + { + "concept": "Blackmatics", + "explanation": "Portmanteau explaining Eric July's inability to admit anything is wrong with Isom", + "first_ts": 2656 + }, + { + "concept": "Keep-alive groan", + "explanation": "Sean's animation term for a sound cue (accordion wheeze) telling kid viewers a character survived, contrasted with Isom's unexplained resurrection", + "first_ts": 2944 + }, + { + "concept": "Artist-judge confidentiality", + "explanation": "Mock coinage for the fair official's refusal to discuss any judging besides the visitor's own ('I can only talk about her art')", + "first_ts": 3548 + }, + { + "concept": "Apparently unfinished", + "explanation": "Episode-title payoff: gamma-corrected imaging of the exhibit tag reveals an erased judge's pencil note 'apparently unfin—' beneath the final 'unfinished,' cast as a cover-up", + "first_ts": 3718 + }, + { + "concept": "Shitiverse", + "explanation": "Derisive name for Eric July's expanding Rippaverse shared universe of spin-off comics that Dick pledges to keep reviewing", + "first_ts": 4721 + }, + { + "concept": "Retroactive abortion", + "explanation": "Satirical bit offering a paperwork 'form' to abort people post-birth if they become pedophiles, lampooning kill-all-pedophiles streamer rhetoric", + "first_ts": 5273 + } + ], + "notable_quotes": [ + { + "quote": "We are not an echo chamber.", + "ts": 393, + "ti": 2, + "why": "Fan quote read aloud and ridiculed as defensive cult-speak" + }, + { + "quote": "It's the cavalry. You don't call in the little area right outside of Jerusalem where Christ our Lord and Savior was crucified.", + "ts": 686, + "ti": 1, + "why": "Grammar-nerd bit mocking Isom's Calvary/cavalry typo" + }, + { + "quote": "I'd like to hold a mystery woman in a toilet bowl and waterboard her with her face in a latrine and shout this at her.", + "ts": 1200, + "ti": 4, + "why": "Casual waterboarding-torture fantasy delivered as an art-defense joke" + }, + { + "quote": "I'd go back in time and rape him as a kid. And then I'd go forward in time and say, I raped you and turned you into a pedophile.", + "ts": 1397, + "ti": 5, + "why": "Graphic child-rape premise embedded in the pedophile-punishment escalation bit" + }, + { + "quote": "Learn the fundamentals and then you can break them, or else your art is a function of chance.", + "ts": 1528, + "ti": 1, + "why": "Core craft thesis of the episode's criticism arc" + }, + { + "quote": "Pedophile it up, man. Does it make the movie better? And we turn Godfather three into Godfather one by letting him rape a couple kids.", + "ts": 3202, + "ti": 6, + "why": "Flippant child-rape satire about Hollywood impunity and Brian Singer allegations" + }, + { + "quote": "So if we make fun of her music, maybe she'll quit eating.", + "ts": 4002, + "ti": 4, + "why": "Joke about inducing an eating disorder in a named celebrity amid sustained body-shaming" + }, + { + "quote": "So we're like a dress and not like an outfit that shoves your fat ass in everyone's face, you dumb bitch.", + "ts": 4144, + "ti": 4, + "why": "Direct degrading insult at Lizzo's body and clothing choices" + }, + { + "quote": "Just like spirituality is not like a big deal to people. Apparently even in shitholes they experience a similar thing with their version of Christianity for dumb people, aka Islam.", + "ts": 4483, + "ti": 5, + "why": "Dehumanizing generalization about a religion played for laughs" + }, + { + "quote": "His beard is probably just compensation for being such a fucking cry baby. Acting like he's fucking Emmett Till because I reviewed his [comic].", + "ts": 6305, + "ti": 5, + "why": "Invokes a lynching victim's name to belittle a rival's grievance" + } + ], + "transgression": { + "overall_ti": 5, + "profanity": 8, + "slur_usage": 5, + "harassment_or_cruelty": 5, + "sincerity": 3, + "targets": [ + "Eric July / Rippaverse fans", + "Lizzo and fat women", + "Islam / Muslims", + "homeless people", + "women (cleaning-products, 'work talk' bits)", + "pedophiles as a class", + "furries/zoophiles", + "LA Fair judges", + "Brian Singer / Hollywood", + "Andrew Tate", + "DeSantis", + "CDC / Mandy Cohen", + "Sweden", + "Rings of Power anti-woke fandom" + ], + "rationale": "Peak sustained segments reach level 5: dehumanizing group generalizations (Islam as 'Christianity for dumb people,' women and chemicals, routine fat-shading), graphic sexual-violence comedy (time-travel child-rape joke, wood-chipper pedaball, Hollywood rape satire), and a weeks-long targeted ridicule campaign against Eric July including celebrating Lizzo's harassment-driven retreat. It stays below 6+ because every extreme passage is framed as a comedic bit or grievance rather than sincere incitement, threats, or endorsement of real-world harm." + }, + "content_warnings": [ + "extreme pervasive profanity", + "slurs (repeated r-slur, censored f-slur, quoted n-word reference)", + "sexual content including rape, pedophilia, and zoophilia jokes", + "fat-shaming/body humiliation of a named celebrity", + "religious mockery (Islam, Christianity)", + "torture/violence fantasy humor", + "suicide joke (Canada MAiD reference)" + ], + "_analyzed_at": "2026-08-23T03:21:31.023706+00:00", + "_source_transcript": "ep0362.json", + "_verification": { + "verdict": "pass", + "checked_at": "2026-08-23T03:59:17.541279+00:00", + "issues": [] + }, + "verified": "pass" + }, + { + "ep_num": 370, + "title": "Episode 370 - Dick on Greece", + "pub_date": "Mon, 07 Aug 2023 17:27:00 +0000", + "runtime_minutes": 139, + "one_line_summary": "Back from vacation, Dick rants about TSA, fat America, and Greek funerals before joining Sean to mock DeSantis, diagnose Zherka's amphetamine habit, roast Maddox's AEW cameo, take Riley's call on the Eric July DMCA war and his new Fansly porn venture, and close with a brutal Fat Watch.", + "guests": [ + { + "name": "sean", + "role": "cohost", + "notes": "Audio engineer and second voice throughout; addressed by name repeatedly ('Smooches for Sean', top-hat therapy banter); tells the Greek funeral, oyster-shucking homeless, and therapist anecdotes." + }, + { + "name": "riley", + "role": "caller", + "notes": "Calls in ~01:10; recently suspended from Twitter via Eric July DMCA strikes; presents pirated ISOM #2 review, unveils 'Clip-a-verse' parody logo, and pitches the Fansly amateur porn operation he runs with Mint Salad." + }, + { + "name": "eric july", + "role": "subject", + "notes": "Never appears on this episode; central antagonist discussed throughout (DMCA strikes on Vicki and Riley's store/account, Rippaverse, hiring fired employees)." + } + ], + "talking_points": [ + { + "topic": "Opening: Eric July's DMCA war on Riley", + "summary": "Dick recounts Eric July copyright-striking Riley's store and getting his account suspended for posting Rippaverse pages; jokes about Ralph's comeback fighting Nick Fuentes and recalls Riley's fistfight with Ralph as forgotten content.", + "start_ts": 5, + "people": [ + "dick masterson", + "sean", + "riley", + "eric july" + ], + "controversy_ti": 3 + }, + { + "topic": "TSA rant: Lizzo clone and cupped-hand bit", + "summary": "Post-flight tirade about a Black TSA agent barking orders; extended racial caricature of Black women speaking with a cupped hand, Lizzo banana-lawsuit jokes, Harvard/Asian admissions jab, and a slavery 'unshackled the chains' punchline.", + "start_ts": 162, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 5 + }, + { + "topic": "Greece recap: hot women, fat America, ugly Greek men", + "summary": "Dick says Greek women were so beautiful they induced despair, ranks the US among fattest countries ('jean pool'), mocks Leviathan Greek men, and details ferry trips, Airbnb ride scams ($150 haggled to $20), and the toilet-paper-in-trash rule he refused to follow.", + "start_ts": 480, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 4 + }, + { + "topic": "Greek funeral and Vito's standup eulogy", + "summary": "Sean describes attending a devout Greek funeral: 35 minutes of improvised Orthodox chanting, open casket, being drafted as a last-minute pallbearer because the mean age is 89; recalls Vito doing a killer standup set at a comedian friend's funeral, seething her comic friends.", + "start_ts": 719, + "people": [ + "dick masterson", + "sean", + "vito gesualdi" + ], + "controversy_ti": 3 + }, + { + "topic": "Politics block: Trump, DeSantis, Niger, science chart", + "summary": "They mock the asymmetry of outrage over Trump's election claims vs presidential drone strikes; ridicule DeSantis's pledge to bomb 'third world countries hotbeds of antisemitism'; riff on Niger expelling a US-backed leader; then analyze a Financial Times chart showing Democratic trust in science spiking post-2012 while Republican trust fell, arguing policy enforcement isn't science and blind trust is unscientific.", + "start_ts": 1908, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Zherka 'drug habit with momentum' diagnosis", + "summary": "Reacting to last week's Zherka/Ralph episode, Dick delivers a confident armchair diagnosis that Zherka is on amphetamines, citing manic self-exceptionalism, chaotic thinking, and the Charlie Sheen Tiger-Blood arc; debates whether Zherka is a bit or exactly what he appears.", + "start_ts": 2709, + "people": [ + "dick masterson", + "sean", + "zherka" + ], + "controversy_ti": 4 + }, + { + "topic": "Ralph sobriety, JLP nihilism theory, Sacred Sons roast", + "summary": "Dick likes sober Ralph and analyzes Jesse Lee Peterson's worldview as ego-less Christianity indistinguishable from nihilism ('let them suffer and die'). Then the pair gut-laugh through the Sacred Sons men's retreat video: roaring at waterfalls, group crying, drums, tattoos—therapy that isn't gay somehow.", + "start_ts": 2975, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Mailbag: Tinder trans-match conspiracy and gay cigar", + "summary": "A listener claims Tinder Premium matched him exclusively with non-passing trans women, floating 'corporate enforced homosexuality'; Dick suggests checking Grindr Premium. Fuzz's voicemail asking if a celebratory cigar for his newborn daughter makes him gay gets teased.", + "start_ts": 3444, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 4 + }, + { + "topic": "Clip reactions: Brazil's Rogan, Maddox on AEW, Sharpton gaffe", + "summary": "Brazil criminally investigating its top podcaster lets Dick slam those who cheered Bolsonaro's ban; they discover ex-nemesis Maddox cameoing in an AEW skit and shred his improvised 'Me?' moment as worthless; Al Sharpton's James Madison/Thomas Jefferson overthrow metaphor gets ridiculed.", + "start_ts": 3686, + "people": [ + "dick masterson", + "sean", + "maddox" + ], + "controversy_ti": 3 + }, + { + "topic": "Riley call: piracy, Clip-a-verse, comic-industry takes", + "summary": "Riley reports his Eric July-caused suspension, screens his pirated ISOM #2 unboxing, announces a 'Clip-a-verse' parody logo Dick dares him to sell, compares July to DC gangster-publisher Harry Donenfeld, and pitches a weekly comic-review show exposing what Eric doesn't know.", + "start_ts": 4213, + "people": [ + "dick masterson", + "sean", + "riley", + "eric july" + ], + "controversy_ti": 3 + }, + { + "topic": "Elon's tweet-firing lawsuits and racism-firing bit", + "summary": "Dick trashes Musk's plan to fund suits for people fired over tweets as conservative 'chest-beating plans,' detailing community manager Caroline's Hogwarts-Legacy firing and Eric July hiring her; argues employers should legally fire anyone for any reason 'out of pure racism' with market consequences only.", + "start_ts": 4755, + "people": [ + "dick masterson", + "sean", + "riley", + "eric july" + ], + "controversy_ti": 5 + }, + { + "topic": "Riley and Mint Salad's Fansly porn empire", + "summary": "Riley reveals he monetizes sex with e-girl Mint Salad via Fansly: three-camera setups, cosplay tied to movie reviews, $100 tiers, average-penis disclosure, and a planned The Boys 'rape scene' parody; Dick and Sean alternate between horror and sales coaching.", + "start_ts": 5236, + "people": [ + "dick masterson", + "sean", + "riley" + ], + "controversy_ti": 5 + }, + { + "topic": "Andrew Tate clips and tarred TV-license man", + "summary": "Tate's webcam-confession clips show him boasting of milking lonely men out of life savings; Dick notes Tate confessed on camera to trafficking-adjacent conduct. A Northern Ireland email celebrates locals tar-and-feathering a BBC license enforcer, prompting a 'you can't commit violence against the government' riff.", + "start_ts": 5619, + "people": [ + "dick masterson", + "sean", + "riley" + ], + "controversy_ti": 5 + }, + { + "topic": "Faith mailbag and wedding-advice follow-up", + "summary": "A Christian subscriber's letter on fake holy wars (Fuentes/Zherka/Kanye), Romans 11, Israel-the-country vs Israel-the-prophecy, and BLM sparks a genuine discussion on belief as baked-in DNA and show-don't-tell faith. Mark admits ignoring Dick's advice about his stalker ex led to post-wedding hysteria.", + "start_ts": 6078, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 3 + }, + { + "topic": "Fat Watch gauntlet", + "summary": "Extended roast session: Club Pure Plus plus-size nightclub ad ('Gorac the destroyer'), Pot Smoking Moms pool reversals and 'talking belly button', Philly Fat Con founders, body-neutrality jargon, Curve Conscious merch, a naked woman smearing food on herself in a store, and Apple's fat-ballerina iPhone ad with injury betting.", + "start_ts": 6765, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 5 + } + ], + "arguments": [ + { + "claim": "Democrats' sudden spike in trust in science tracks with science becoming synonymous with policy enforcement; 'trust the science' is inherently unscientific.", + "position": "anti", + "target": "'trust the science' liberalism / Democrats", + "quality": "moderate", + "evidence": "Financial Times / General Social Survey chart shown on screen; secondhand-smoke-to-bans and replication-crisis examples; Nixon-founded-EPA counterpoint." + }, + { + "claim": "Zherka displays unmistakable signs of an amphetamine habit with momentum, comparable to Charlie Sheen's Tiger Blood phase, and his confidence exceeds his intellect.", + "position": "mockery-of", + "target": "zherka", + "quality": "weak", + "evidence": "Demeanor on prior week's episode; Dick's claimed lifelong familiarity with addicts; no direct receipts." + }, + { + "claim": "DeSantis promising military action against 'third world' antisemitism is preposterous and irrelevant to actual voters.", + "position": "mockery-of", + "target": "ron desantis", + "quality": "trollish", + "evidence": "Campaign clip played; rhetorical questions about Ethiopia/Nigeria Jews; Niger uranium tangent." + }, + { + "claim": "Elon Musk funding lawsuits over tweet-related firings is dumb advertising for Twitter that will financially ruin participants; employers should face zero legal penalty for any firing, including racist ones.", + "position": "anti", + "target": "elon musk / wrongful-termination law", + "quality": "moderate", + "evidence": "Caroline Hogwarts-Legacy firing anecdote; sponsorship-pull analogy; assertion the suit has 'zero chance' even in California." + }, + { + "claim": "Brazil outlawing Bolsonaro's candidacy and criminally fining its biggest podcaster proves celebrating government speech crackdowns invites escalation.", + "position": "pro", + "target": "brazilian government / censorship apologists", + "quality": "moderate", + "evidence": "News headlines read on air; sarcastic 'totally unrelated incidents' framing." + }, + { + "claim": "Eric July's DMCA crusade backfires by amplifying pirates, inspiring knockoff merch (CISA-verse), and proving he'd have to sue to stop parody logos.", + "position": "mockery-of", + "target": "eric july", + "quality": "moderate", + "evidence": "Riley's surviving pirated scans, Clip-a-verse logo comparison, Tracy Scopes Marvel fan-art-porn Patreon precedent." + }, + { + "claim": "Andrew Tate openly confessed on camera to webcam fraud and trafficking-adjacent exploitation, so his defenders' 'circumstantial case' whining is absurd.", + "position": "anti", + "target": "andrew tate", + "quality": "strong", + "evidence": "Compilation of Owens interview and Tate's own streams, cited live." + } + ], + "ideas": [ + { + "concept": "Flaggers / false flaggers", + "explanation": "Dick's name for Eric July and his crew who mass-copyright-flag critics; he deems 'flagger' too close to a slur to say on air.", + "first_ts": 14 + }, + { + "concept": "Fat Thulu", + "explanation": "Coinage for the eclipse-of-the-sun disorientation of turning toward an American woman's voice abroad and beholding an enormous woman.", + "first_ts": 490 + }, + { + "concept": "Jean pool", + "explanation": "Malapropism for 'gene pool' while arguing America is effectively the fattest nation in the universe.", + "first_ts": 585 + }, + { + "concept": "Big fat Greek funeral", + "explanation": "Sean's account of Orthodox funerals: improvised 35-minute chanting, open casket verification, elderly pallbearer conscription.", + "first_ts": 727 + }, + { + "concept": "Kick it down the road plumbing", + "explanation": "The second-opinion plumber's business model: refusing to fix anything until it breaks, immortalized as a hypothetical company name.", + "first_ts": 1470 + }, + { + "concept": "Homies becoming homos (homeowners)", + "explanation": "His sister's kids' nickname for homeless people, spun into a prophecy that squatters will inherit his unrepaired house and its sewage.", + "first_ts": 1520 + }, + { + "concept": "A drug habit with momentum", + "explanation": "Dick's coinage for Zherka's manic, amphetamine-fueled self-exceptionalism; paired with the Charlie Sheen tipping-point comparison.", + "first_ts": 2755 + }, + { + "concept": "JLP nihilism equivalence", + "explanation": "Theory that Jesse Lee Peterson's advice is pure nihilism with God swapped in for nothing—'let them suffer and die' minus condemning the gays.", + "first_ts": 3010 + }, + { + "concept": "Corporate enforced homosexuality", + "explanation": "Listener theory that Tinder Premium deliberately serves trans matches as bait-and-switch profiles; Dick counters with the Grindr-Premium-women symmetry.", + "first_ts": 3505 + }, + { + "concept": "Think like liberals, have good plans", + "explanation": "Dick's frame that liberals chisel away incrementally while conservatives announce chest-beating plans (like suing over firings) that fail.", + "first_ts": 4790 + }, + { + "concept": "Clip-a-verse", + "explanation": "Riley's parody logo brand (hair clippers replacing lightning bolts) designed to bait Eric July's lawyers into striking obvious fair-use satire.", + "first_ts": 4630 + }, + { + "concept": "Body neutrality", + "explanation": "Fat Con buzzword mocked as clinically not caring about bodies at all; Dick jokes it must not apply to his Fat Watch commentary.", + "first_ts": 7285 + } + ], + "notable_quotes": [ + { + "quote": "God, you've unshackled the chains and somehow made your way here from the Empire State. Here's our passports. Please don't eat us.", + "ts": 245, + "ti": 5, + "why": "Slavery-referencing racist caricature of a Black TSA agent played for laughs" + }, + { + "quote": "Because black women can only speak into a speaker phone. So whenever they're shouting in public, even if they don't have a phone... they still have their hand cupped like this.", + "ts": 218, + "ti": 5, + "why": "Sustained dehumanizing racial stereotype as a recurring bit" + }, + { + "quote": "There's a few things that I know that I know I know... one of them is what a drug habit with momentum sounds like. You put a gun to my head, you say, what is he? I say a lot of amphetamine.", + "ts": 2755, + "ti": 4, + "why": "Confident unsolicited addiction diagnosis of a named individual" + }, + { + "quote": "But I mean, I think you should just be able to fire people out of pure racism. I would be fine with that. I think it's evil, but I think it should be protected by the fucking law.", + "ts": 5068, + "ti": 6, + "why": "Half-sincere endorsement of legalized racial discrimination in employment" + }, + { + "quote": "We've got a Supergirl costume this season and we've got a sex tape of her and I... we're just gonna do that rape scene.", + "ts": 5462, + "ti": 5, + "why": "Casual plan to recreate a rape scene as commercial parody porn" + }, + { + "quote": "Grab the guy as he was going door to door and proceeded to tar and feather him. The screams were very audible from three streets down.", + "ts": 5995, + "ti": 5, + "why": "Relished retelling of vigilante torture of a BBC license agent, endorsed as justified" + }, + { + "quote": "You could probably stick two dicks in this talking belly button that this one has.", + "ts": 7066, + "ti": 5, + "why": "Extreme degrading body mockery of a fat woman in the Fat Watch segment" + }, + { + "quote": "Am I not the only one to tranquilize this hippo? What the fuck? That's a lady?", + "ts": 7362, + "ti": 5, + "why": "Dehumanizing animal comparison as the Fat Watch centerpiece" + }, + { + "quote": "It's embarrassing that Maddox decided to improv his own bit into the comedy that has nothing to do with him. And he's not on TV. So who the fuck is he talking about?", + "ts": 4170, + "ti": 3, + "why": "Sustained public humiliation of his ex-adversary over the AEW cameo" + }, + { + "quote": "Well, it's like a big fat Greek wedding, but there's a corpse.", + "ts": 727, + "ti": 2, + "why": "Mild crudeness summarizing the Greek funeral bit" + } + ], + "transgression": { + "overall_ti": 5, + "profanity": 8, + "slur_usage": 4, + "harassment_or_cruelty": 4, + "sincerity": 3, + "targets": [ + "fat people (especially women)", + "Black women", + "trans women", + "Greek men", + "autistic children (jokes)", + "homeless people", + "eric july", + "zherka", + "maddox", + "andrew tate", + "ron desantis", + "al sharpton", + "elon musk", + "jesse lee peterson", + "religious believers" + ], + "rationale": "Peak sustained levels reach 5 in the TSA racial-caricature run and the roughly 20-minute Fat Watch gauntlet of dehumanizing fat mockery, with the racism-firing endorsement and celebrated tarring-and-feathering brushing 6 before retreating into bit territory. Content stays comedic-framed throughout, keeping the defining level at 5 rather than sincere hate." + }, + "content_warnings": [ + "profanity", + "racism", + "fat-shaming", + "transphobia", + "ableist language", + "sexual content", + "discussion of sexual assault (parody joke)", + "vigilante violence", + "discussion of suicide", + "drug addiction speculation" + ], + "_analyzed_at": "2026-08-23T03:49:57.726167+00:00", + "_source_transcript": "ep0370.json", + "_verification": { + "verdict": "fix", + "checked_at": "2026-08-23T03:54:31.122588+00:00", + "issues": [ + { + "field": "guests", + "claim": "eric july listed in the guests array with role \"guest\"", + "issue": "Eric July does not appear anywhere in this episode; the transcript only discusses him as the off-air antagonist of the opening DMCA segment (lines 5-35), and the analysis's own notes admit \"Not present.\" Attributing a guest seat to an absent person is a speaker/role misattribution.", + "correction": "Relabel role from \"guest\" to \"subject\" (person discussed but never present); retain him in the people arrays of the relevant talking_points, where listing him is appropriate." + } + ] + }, + "verified": "fix" + }, + { + "ep_num": 373, + "title": "Episode 373 - Dick on Maddox Lives!", + "pub_date": "Mon, 28 Aug 2023 04:47:00 +0000", + "runtime_minutes": 208, + "one_line_summary": "Dick, Sean and (later) Vito ride the ISOM v. Eric July trademark saga - reading the 'Obtuse Gnome' troll email into evidence, coining the 'context book, tortious interference' runner, baiting listeners to email ISOM's attorneys - then dissect Maddox's months-in-the-making plagiarism hit piece on Justin Wang, who calls in live to defend himself before the call drops.", + "guests": [ + { + "name": "Sean", + "role": "cohost", + "notes": "Audio engineer; self-identified in intro as 'world touring LA based comedian Sean the audio engineer'; delivers German tube-mic history, physics riffs, and bar-fight story." + }, + { + "name": "Vito Gesualdi", + "role": "cohost", + "notes": "Arrives mid-show (~01:34) after driving in; discusses lawsuit anxiety, dead father/pizza-tracker stories, merch and live-show pizza plans." + }, + { + "name": "Justin Wang", + "role": "caller", + "notes": "YouTuber/internet historian; calls in near end (~03:05) to respond to Maddox's plagiarism video; explains sourcing, band news; call cuts out abruptly." + } + ], + "talking_points": [ + { + "topic": "Cold open: prison over Isom", + "summary": "Dick opens joking he's headed to prison for mocking Eric July's comic: butt-plug prep, cellmate-Trump Morse-code bit, and his attorney allegedly calling the troll email 'hilarious.'", + "start_ts": 0.0, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 4 + }, + { + "topic": "Identical characters / Chris Chan", + "summary": "Dick argues autistic writers can't create distinct voices, citing Eric July and Maddox scripts; detours into Chris Chan's mother-rape case ('hide your moms') and retroactive '300th trimester abortion' jokes.", + "start_ts": 385.0, + "people": [ + "dick masterson", + "sean", + "eric july", + "maddox" + ], + "controversy_ti": 4 + }, + { + "topic": "Oliver Anthony song & M&M rule", + "summary": "Panel debates the viral protest song after its writer disavowed Republican fans; Dick institutes a rule that sent videos require a paragraph of explanation, illustrated by Van Halen's brown-M&Ms contract-rider anecdote.", + "start_ts": 566.0, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 2 + }, + { + "topic": "ISOM v. July evidence", + "summary": "Dick walks the trademark filing: fan 'Obtuse Gnome's' sarcastic 'TDS News reporter Roy Gerbil' email, the cross on Isom's crotch, $17.50 hospital-comic charity; actual brand confusion is demonstrated; Vito panicked pre-show.", + "start_ts": 886.0, + "people": [ + "dick masterson", + "sean", + "eric july" + ], + "controversy_ti": 3 + }, + { + "topic": "'Rock star attorneys' + Wang tease", + "summary": "Eric July's video promising 'serious consequences' is mocked via black-whiteboard impressions; Dick notes everyone's dogpiling Nick Rekieta for staying friends, and reveals Maddox now calls Justin Wang a plagiarist.", + "start_ts": 1440.0, + "people": [ + "dick masterson", + "sean", + "eric july", + "maddox", + "nick rekieta", + "justin wang" + ], + "controversy_ti": 3 + }, + { + "topic": "USC creep & pizza scheme", + "summary": "Sean recounts a tailgate stranger calling college girls 11-year-olds; then the sold-out Biggest Problem live show, Vito's Costco-pizza fundraising idea, dollar-hot-dog egress rant, and Vito-plush eating contest.", + "start_ts": 1770.0, + "people": [ + "sean", + "vito gesualdi", + "dick masterson" + ], + "controversy_ti": 3 + }, + { + "topic": "Homeless fires / Prop 69", + "summary": "Homeless cookouts blamed for freeway fires; Dick unveils 'Proposition 69: blow jobs for the homeless,' actually a fire-hose-to-the-skull fantasy, plus a George Mallory crackhead-climbing riff.", + "start_ts": 2146.0, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 5 + }, + { + "topic": "DOJ v. SpaceX + context book", + "summary": "DOJ suit over SpaceX not hiring asylees triggers outrage; an Eric July fan's 'context book, torturous interference' malapropism becomes an episode-long runner; Null's 'fucked like a pig' prediction and his falling-out are noted.", + "start_ts": 2325.0, + "people": [ + "dick masterson", + "sean", + "null" + ], + "controversy_ti": 4 + }, + { + "topic": "Mugshot, GOP, Rekieta loyalty", + "summary": "Trump's mugshot reviewed; Dick argues the GOP exists to lose while funneling money to donors and Israel; a fan's 'if Dick was raping little girls' friendship test gets compared to MeToo equivalence logic.", + "start_ts": 2872.0, + "people": [ + "dick masterson", + "sean", + "nick rekieta" + ], + "controversy_ti": 4 + }, + { + "topic": "SpaceX release, Nazi scientists, climate media", + "summary": "Press-release reading slides into Operation Paperclip nostalgia, Sean's U47/U67 mic-history lesson, NASA-assassinated-the-flat-earther joke, CNN's leaked climate-pivot tape, John Coleman's denier meltdown, and the welded-open border wall.", + "start_ts": 3146.0, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 5 + }, + { + "topic": "Trans stabbing & Perch brawl", + "summary": "Confusion over 'trans-identified male' charged with killing a homeless woman spawns the 'trans versus homeless' prison-program bit and lesbian-bar DV jokes; segue into Sean's The Perch girl-fight footage and Latina weight stereotypes.", + "start_ts": 4205.0, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 5 + }, + { + "topic": "Quick hits block", + "summary": "Fentanyl contact-OD police panic mocked via demon-core analogy; PFAS paper-straw study vindicates plastic; dreadlock-harassment clip deemed staged; house sold for breast reduction; Tucker/Jones promoting Tate brothers slammed beside Ricky Vaughn's imprisonment.", + "start_ts": 4982.0, + "people": [ + "dick masterson", + "sean" + ], + "controversy_ti": 4 + }, + { + "topic": "Dying-mom email advice", + "summary": "Vito arrives; panel coaches a Dutch listener whose cancer-stricken mother is dying: stop blaming mom, talk to your dad, 'cancer travel,' Vito's Domino's-pizza-tracker dad and skull-keepsake regrets, Eric July's estranged-father jab.", + "start_ts": 5657.0, + "people": [ + "dick masterson", + "sean", + "vito gesualdi" + ], + "controversy_ti": 4 + }, + { + "topic": "Revenge doctrine & escalation", + "summary": "Dick 'fully avows' tenfold revenge within legal bounds, urges confused listeners to email ISOM's trademark attorneys, plays the satirical '1488/ethno-state my nigs' fedposter song, approves gay-Isom cover art, mocks Riley's 'actionable' warehouse-shave threat.", + "start_ts": 6424.0, + "people": [ + "dick masterson", + "sean", + "vito gesualdi", + "eric july" + ], + "controversy_ti": 6 + }, + { + "topic": "Maddox's Wang expose", + "summary": "Panel watches Maddox's 55-minute plagiarism video, half secretly aimed at Asterios; 'you can't steal a meme / can't plagiarize facts' rebuttals; Justin Wang calls in to defend his sourcing before the call mysteriously dies; closes with the 'infinite energy for fighting retards' credo.", + "start_ts": 9459.0, + "people": [ + "dick masterson", + "sean", + "vito gesualdi", + "maddox", + "justin wang", + "asterios kokkinos" + ], + "controversy_ti": 5 + } + ], + "arguments": [ + { + "claim": "ISOM's trademark claim against Eric July has merit because real brand confusion already exists", + "position": "pro", + "target": "Eric July / Rippaverse", + "quality": "moderate", + "evidence_used": "Exhibit email from 'Obtuse Gnome' in the filing, cross imagery on Isom's costume, online posts asking if they're related" + }, + { + "claim": "Nobody goes to prison for defamation or tortious interference; the jail threats are empty", + "position": "anti", + "target": "Eric July's audience", + "quality": "strong", + "evidence_used": "Basic law plus Nick Rekieta's analysis relayed on air; 'do you think courts give a fuck about you retards'" + }, + { + "claim": "Eric July false-flagged critics first (trademark-striking Riley's clip store), so the backlash is deserved karma", + "position": "anti", + "target": "Eric July", + "quality": "moderate", + "evidence_used": "Anecdote of Riley's store/account being wiped after July's IP claims" + }, + { + "claim": "Five anonymous owners behind the Rippaverse company are suspicious, possibly hiding predators", + "position": "mockery-of", + "target": "Eric July", + "quality": "trollish", + "evidence_used": "Lawsuit listing five owners vs. Dick's sole ownership; 'I'm just asking questions' framing" + }, + { + "claim": "DOJ suing SpaceX over refugee hiring is ideological overreach harming aerospace progress", + "position": "anti", + "target": "DOJ / Biden administration", + "quality": "moderate", + "evidence_used": "Reading of DOJ press release; citizenship-status logistics argument" + }, + { + "claim": "The GOP exists to lose elections while siphoning money to corporate donors and Israel", + "position": "anti", + "target": "Republican Party", + "quality": "weak", + "evidence_used": "Pure assertion with abortion-politics anecdote" + }, + { + "claim": "Climate coverage is a manufactured fear cycle and funded consensus, not science", + "position": "anti", + "target": "CNN / mainstream media / climate establishment", + "quality": "moderate", + "evidence_used": "Project Veritas-style CNN insider clip; John Coleman interview claiming $2.5B funds only pro-warming research" + }, + { + "claim": "Retaliation doctrine: if someone hits you, hammer back ten times harder, legally", + "position": "pro", + "target": "anyone who wrongs the show", + "quality": "trollish", + "evidence_used": "Stated as long-standing personal policy; flash-mob theft and bum anecdotes as rhetorical props" + }, + { + "claim": "Maddox's plagiarism case against Justin Wang collapses because facts cannot be plagiarized and memes cannot be stolen", + "position": "anti", + "target": "Maddox", + "quality": "strong", + "evidence_used": "Side-by-side highlighting showing rewritten phrasing, Wang's testimony about Facebook-group sourcing, plagiarism-law discussion" + }, + { + "claim": "Cops claiming contact fentanyl overdoses is bogus theater", + "position": "mockery-of", + "target": "police / media drug panic", + "quality": "moderate", + "evidence_used": "Demon-core hazmat-suit analogy, sarcasm about 'alcohol exposure'" + }, + { + "claim": "Plastic-straw bans backfired by producing PFAS-laced paper alternatives", + "position": "anti", + "target": "eco regulators / straw-ban moms", + "quality": "moderate", + "evidence_used": "European study headline finding PFAS in majority of paper/bamboo straws" + }, + { + "claim": "Right-wing figures promoting Tate brothers while meme-posters like Ricky Vaughn go to prison exposes conservative hypocrisy", + "position": "anti", + "target": "Tucker Carlson, Alex Jones, GOP", + "quality": "moderate", + "evidence_used": "Tate trafficking investigation mention; Ricky Vaughn election-meme sentence" + } + ], + "ideas": [ + { + "concept": "Prison-arc framing ('Season two of the lawsuit')", + "explanation": "Dick frames the ISOM/July dispute as the sequel to the Maddox LOLSUIT, opening with running bits about going to prison for mocking Isom.", + "first_ts": 55.0 + }, + { + "concept": "'Obtuse Gnome' / Roy Gerbil of TDS News", + "explanation": "Fan troll whose fake-journalist email landed in the court filing; Dick fully endorses him as the show's independent investigative reporter.", + "first_ts": 886.0 + }, + { + "concept": "'Context book, torturous interference'", + "explanation": "Episode-defining runner mocking an Eric July fan's malapropism of 'tortious interference'; endlessly recombined ('context book murder', 'context book sedition').", + "first_ts": 2405.0 + }, + { + "concept": "'Legion of Autistic Doom'", + "explanation": "Mock super-team of Maddox, Eric July and allies uniting against Dick.", + "first_ts": 1635.0 + }, + { + "concept": "'Proposition 69: blow jobs for the homeless'", + "explanation": "Fake ballot measure concealing a fire-hose-to-the-skull fantasy aimed at homeless cookout fires.", + "first_ts": 2199.0 + }, + { + "concept": "'Trans versus homeless' prison program", + "explanation": "Satirical special-custody scheme letting trans offenders serve sentences attacking homeless people.", + "first_ts": 4348.0 + }, + { + "concept": "Punch-back-ten-times-as-hard revenge doctrine", + "explanation": "Dick's stated policy of full 'avowal' of disproportionate but legal retaliation against anyone who wrongs you or the show.", + "first_ts": 6424.0 + }, + { + "concept": "Email-the-trademark-lawyers bait", + "explanation": "Call to action telling listeners genuinely confused by ISOM/Isom to swear confusion to the ministry's attorneys - framed as lawful trolling.", + "first_ts": 6482.0 + }, + { + "concept": "'Cancer travel'", + "explanation": "Bit about terminal-diagnosis vacations being the purest travel since nothing at home matters anymore.", + "first_ts": 6608.0 + }, + { + "concept": "Dumbo's magic feather", + "explanation": "Metaphor told to the dying-mom letter writer: his mother was never the source of his motivation or his problems.", + "first_ts": 7216.0 + }, + { + "concept": "Oldest son inherits the skull", + "explanation": "Vito's family lore: cremated father without keeping the skull, framed as a lost caveman-era heirloom right.", + "first_ts": 7449.0 + }, + { + "concept": "NAC supplement for anxiety", + "explanation": "Listener-recommended biohack for anxiety; ties into Dick's 'befriend a gym bro' mental-health theory and Cernovich name-check.", + "first_ts": 8246.0 + }, + { + "concept": "'Infinite energy for fighting retards'", + "explanation": "Closing credo: as one 'retard' sets another rises, promising endless episodes mocking enemies for the listeners.", + "first_ts": 12443.0 + } + ], + "notable_quotes": [ + { + "quote": "I'm afraid I'm going to prison again, Sean... Made fun of Eric a little too hard.", + "ts": 55.0, + "ti": 2, + "why": "Defining opening premise played as self-aware hyperbole." + }, + { + "quote": "He said this email specifically was quote, hilarious. And quote.", + "ts": 1263.0, + "ti": 2, + "why": "Deadpan attorney-validation punchline about the troll email." + }, + { + "quote": "I'm calling it Proposition 69, blow jobs for the homeless.", + "ts": 2201.0, + "ti": 5, + "why": "Dehumanizing homeless-targeted gag masking violent fire-hose fantasy." + }, + { + "quote": "Kill yourself, idiot.", + "ts": 2534.0, + "ti": 4, + "why": "Flippant suicide encouragement tossed at an Eric July fan commenter." + }, + { + "quote": "If Dick was raping little girls, you'd feel different about people who remain his friend.", + "ts": 3066.0, + "ti": 4, + "why": "Quoted accusation framework around Nick Rekieta's loyalty." + }, + { + "quote": "The only good refugees that should be working on our space program are Nazi scientists.", + "ts": 3211.0, + "ti": 5, + "why": "Ironically delivered Nazi-praise jab at DOJ refugee policy." + }, + { + "quote": "It's called trans versus homeless. We're letting all the trans people work out their aggression on the homeless, full commuted sentence.", + "ts": 4348.0, + "ti": 5, + "why": "Group-vs-group cruelty bit played straight-faced." + }, + { + "quote": "You should take 100% revenge on the people that have wronged you in every possible way that you can.", + "ts": 6424.0, + "ti": 5, + "why": "Sincere-sounding retaliation doctrine encouraging escalation." + }, + { + "quote": "Hello rapist, 1488. Hi, all my mates, howdy kids. How's the ethno state, my nigs?", + "ts": 9244.0, + "ti": 6, + "why": "Quoted song pairing racial slurs with neo-Nazi and mass-violence imagery in fedposter satire." + }, + { + "quote": "And I promise you that I have infinite energy for fighting retards.", + "ts": 12443.0, + "ti": 5, + "why": "Slur-laden mission statement summarizing the show's adversarial ethos." + } + ], + "transgression": { + "overall_ti": 5, + "profanity": 8, + "slur_usage": 6, + "harassment_or_cruelty": 6, + "sincerity": 3, + "targets": [ + "Eric July and his fanbase", + "Maddox", + "Nick Rekieta (by proxy)", + "homeless people", + "trans people", + "Mexican/Latina women", + "police", + "GOP establishment", + "CNN/mainstream media", + "DOJ/Biden administration", + "disabled people ('retard' usage)" + ], + "rationale": "Level 5 is sustained throughout via dehumanizing group bits (homeless fire-hose fantasy, Latina weight stereotypes, trans/homeless prison gag) and pervasive 'retard'-framing of Eric July's audience. Peaks toward 6 include the slur-heavy '1488 ethno-state' satire song and urging listeners to swarm ISOM's trademark attorneys, but the worst content remains framed as bits rather than sincere advocacy, keeping it below targeted-abuse level 7." + }, + "content_warnings": [ + "profanity", + "ableist slurs", + "racial slurs (quoted song)", + "rape jokes", + "graphic violence jokes", + "suicide encouragement joke", + "audience action against litigants", + "transphobia", + "racist stereotypes", + "homophobic humor" + ], + "_analyzed_at": "2026-08-23T03:38:55.248722+00:00", + "_source_transcript": "ep0373.json", + "_verification": { + "verdict": "pass", + "checked_at": "2026-08-23T04:05:28.798641+00:00", + "issues": [] + }, + "verified": "pass" + }, + { + "ep_num": 520, + "title": "Episode 520 - Dick on Male to Fester", + "pub_date": "Sun, 16 Aug 2026 02:02:00 +0000", + "runtime_minutes": 121, + "one_line_summary": "A chaotic cold open of stream-start panic and 'fuck Vimeo' tech rage frames Dick's philosophy that effort doesn't matter - just ship the product - as Dick recounts bombing an egg-sketch audition while Vito Gesualdi, cohost of the revived Biggest Problem in the Universe, gets roasted about cohosting being a two-hour dunk tank.", + "guests": [ + { + "name": "dick", + "role": "host", + "notes": "Drives the stream-setup panic and Vimeo rage, recounts his own egg-sketch audition, and delivers the effort-vs-output philosophy." + }, + { + "name": "vito_gesualdi", + "role": "guest", + "notes": "Second voice; cohost of the revived Biggest Problem in the Universe (2025+). Confirms Dick's audition story ('You did, yeah.') and is teased that BPITU cohosting amounts to sitting in a dunk tank for two hours of reputational damage." + } + ], + "talking_points": [ + { + "topic": "Stream startup chaos (Rumble/Vimeo)", + "summary": "Dick scrambles to get the stream rolling while demanding confirmation the sound works; Vimeo isn't showing the episode and earns a dismissive 'fuck Vimeo'.", + "start_ts": 1.0, + "people": [ + "dick", + "vito_gesualdi" + ], + "controversy_ti": 2 + }, + { + "topic": "Egg sketch audition story", + "summary": "Dick recalls auditioning for the 'egg sketch' on 'that show we're talking about'; he tried hard, didn't get it, and wonders why he bothered exerting effort. Vito confirms Dick had already told him the story.", + "start_ts": 61.0, + "people": [ + "dick", + "vito_gesualdi" + ], + "controversy_ti": 1 + }, + { + "topic": "Effort vs. shipping product", + "summary": "Dick argues his career secret is that effort doesn't distinguish success from failure - putting a product out does - so stop stressing about trying so hard.", + "start_ts": 90.0, + "people": [ + "dick", + "vito_gesualdi" + ], + "controversy_ti": 1 + }, + { + "topic": "Undertaker balls bit", + "summary": "Running joke about the Undertaker's anatomy derails into dunk-tank roasting of Vito's BPITU cohosting as two hours of fans shitting on him for no benefit.", + "start_ts": 120.0, + "people": [ + "dick", + "vito_gesualdi" + ], + "controversy_ti": 2 + } + ], + "arguments": [ + { + "claim": "Effort matters less than shipping the product", + "position": "pro", + "target": "perfectionists who stress over output", + "quality": "moderate", + "evidence_used": "anecdote about the egg-sketch audition" + } + ], + "ideas": [ + { + "concept": "Two-hour dunk tank", + "explanation": "cohosting the revived Biggest Problem framed as passive target practice", + "first_ts": 150.0 + } + ], + "notable_quotes": [ + { + "quote": "Where the fuck is the episode on Vimeo? It's not working again.", + "ts": 126.0, + "ti": 2, + "why": "profanity-laced tech rage" + }, + { + "quote": "You're a star.", + "ts": 40.0, + "ti": 0, + "why": "sarcastic encouragement during setup" + } + ], + "transgression": { + "overall_ti": 2, + "profanity": 4, + "slur_usage": 0, + "harassment_or_cruelty": 1, + "sincerity": 1, + "targets": [ + "Vimeo", + "the BPITU cohost (Vito)" + ], + "rationale": "Cold-open tech rage with light roasting; nothing beyond profanity." + }, + "content_warnings": [ + "profanity" + ], + "_verification": { + "verdict": "fix", + "checked_at": "2026-08-23T03:31:49.682327+00:00", + "issues": [ + { + "field": "guests", + "claim": "maddox, role 'cohost', 'Longtime cohost; recounts auditioning for the egg sketch'", + "issue": "Falsely attributes a modern-era (2026) Dick Show cohost seat to Maddox. Verified record: Maddox was BPITU co-host 2014-2016 only; he and Dick have been adversaries since Oct 2016 and he appears nowhere in this transcript. The second voice discusses 'co-hosting the biggest problem', which per the dossier is the 2025+ BPITU revival co-hosted exclusively by Vito Gesualdi.", + "correction": "Replace maddox with vito_gesualdi (second voice; BPITU-revival cohost, guest on this episode)." + }, + { + "field": "talking_points", + "claim": "'Egg sketch audition story': 'Maddox recalls auditioning for the egg sketch'", + "issue": "Wrong speaker. The transcript shows the HOST voice (Dick, the one running stream setup and the Vimeo check) telling the story: 'Did I tell you I auditioned for that sketch?' / 'I'm telling the show I auditioned for the egg sketch' / 'I really tried at that audition. I didn't get it.' The second voice merely confirms 'You did, yeah.'", + "correction": "Reattribute the audition anecdote to Dick; Vito only confirms having heard it." + }, + { + "field": "talking_points", + "claim": "people arrays list 'maddox' on all four talking points", + "issue": "Maddox is not present in this August 2026 episode; the second participant is the BPITU-revival cohost (Vito Gesualdi), identified via the transcript line 'you're saying co-hosting the biggest problem comes with some sort of cost' answered by 'Something along those lines.'", + "correction": "Swap 'maddox' for 'vito_gesualdi' in every people array and adjust summaries referencing him." + }, + { + "field": "one_line_summary", + "claim": "'as Maddox recounts bombing an egg-sketch audition and gets roasted about co-hosting being a two-hour dunk tank'", + "issue": "Attributes both the audition story and the roast to Maddox. The audition was Dick's own story; the dunk-tank roast targets the BPITU-revival cohost (Vito Gesualdi).", + "correction": "Rewrite summary: Dick recounts bombing the egg-sketch audition while Vito, his Biggest Problem revival cohost, is roasted about cohosting being a two-hour dunk tank." + }, + { + "field": "ideas", + "claim": "Two-hour dunk tank: 'cohosting framed as passive target practice'", + "issue": "Cohosting is specifically tied to the revived Biggest Problem in the Universe, not generic cohosting; the dunk-tank line follows the 'co-hosting the biggest problem' exchange.", + "correction": "Specify 'cohosting the revived Biggest Problem framed as passive target practice'." + } + ] + }, + "verified": "fix" + } + ], + "indexes": { + "by_person": { + "allegra ringo": [ + { + "episode": 1, + "topic": "Voldemort opener & BPITU eulogy", + "ts": 134 + }, + { + "episode": 1, + "topic": "Co-host audition Q1: best dog for picking up women", + "ts": 983 + }, + { + "episode": 1, + "topic": "Audition Q2: what makes you rage - conference calls", + "ts": 1265 + }, + { + "episode": 1, + "topic": "Audition Q3: what do you love most about Donald Trump", + "ts": 1752 + }, + { + "episode": 1, + "topic": "Dick Tip: always bring your own water", + "ts": 2071 + }, + { + "episode": 1, + "topic": "Mexico trip setup: 80s model, short shorts, caravans", + "ts": 2410 + }, + { + "episode": 1, + "topic": "Mexican construction epiphany / wall politics", + "ts": 2716 + }, + { + "episode": 1, + "topic": "Sexual assault story: the large woman & scotch tumbler", + "ts": 3404 + }, + { + "episode": 1, + "topic": "Patreon thanks & sign-off", + "ts": 3722 + } + ], + "andrew tate": [ + { + "episode": 362, + "topic": "Comments: Islam dying, Tate, shitiverse, fursuit", + "ts": 4456 + } + ], + "ash vampire": [ + { + "episode": 361, + "topic": "Fur Affinity's cub-art ban and payment processors", + "ts": 5268 + }, + { + "episode": 361, + "topic": "Rain Furrest horror and con hygiene", + "ts": 6691 + } + ], + "asterios kokkinos": [ + { + "episode": 373, + "topic": "Maddox's Wang expose", + "ts": 9459.0 + } + ], + "bono": [ + { + "episode": 1, + "topic": "Patreon thanks & sign-off", + "ts": 3722 + } + ], + "denzel walkes": [ + { + "episode": 5, + "topic": "Punnable baby names and the dickshow.com domain", + "ts": 20 + }, + { + "episode": 5, + "topic": "'I could do better' / Hangover sequels challenge", + "ts": 173 + }, + { + "episode": 5, + "topic": "Wrestling voicemail and Lesnar debate", + "ts": 963 + }, + { + "episode": 5, + "topic": "Lagunitas pronunciation and accents", + "ts": 1119 + }, + { + "episode": 5, + "topic": "Co-host interview Q1: worst cultural appropriation", + "ts": 1344 + }, + { + "episode": 5, + "topic": "Co-host interview Q2: will there ever be sex robots?", + "ts": 2454 + }, + { + "episode": 5, + "topic": "Denzel's rage: IT work and users who don't try", + "ts": 2600 + }, + { + "episode": 5, + "topic": "Delivery drivers and competence as genius", + "ts": 2995 + }, + { + "episode": 5, + "topic": "Dick tips: never leave the house vs expect fuck-ups", + "ts": 3189 + }, + { + "episode": 5, + "topic": "You Don't Know Dick debut (Facebook segment)", + "ts": 3365 + } + ], + "dick": [ + { + "episode": 361, + "topic": "Eric July feud opener: 'ho ass nigga' and crack-vs-cocaine", + "ts": 0 + }, + { + "episode": 361, + "topic": "ISOM review and $3M culture-war comics", + "ts": 134 + }, + { + "episode": 361, + "topic": "Storytelling craft: favorite-part test and editors", + "ts": 420 + }, + { + "episode": 361, + "topic": "'The Thinly Skinned Middle-Aged Man' comic pitch", + "ts": 763 + }, + { + "episode": 361, + "topic": "Target Satanic pride confrontation", + "ts": 1013 + }, + { + "episode": 361, + "topic": "LA Fair mosaic robbery", + "ts": 1548 + }, + { + "episode": 361, + "topic": "Lactating trans woman", + "ts": 1847 + }, + { + "episode": 361, + "topic": "LAPD robot dog", + "ts": 2217 + }, + { + "episode": 361, + "topic": "Fish Tank shoutout and 'gender-affirming' steroids", + "ts": 2425 + }, + { + "episode": 361, + "topic": "Biden's antisemitism strategy, swastika buyback, Israel gaslighting", + "ts": 2669 + }, + { + "episode": 361, + "topic": "Mailbag: tips test, AI vs women's jobs, doctor math, proton vapes", + "ts": 3208 + }, + { + "episode": 361, + "topic": "101 new asexual sexualities", + "ts": 3968 + }, + { + "episode": 361, + "topic": "Eric July calls in: bad faith vs criticism", + "ts": 4464 + }, + { + "episode": 361, + "topic": "Roxanne the lizard furry interrogation", + "ts": 4902 + }, + { + "episode": 361, + "topic": "Fur Affinity's cub-art ban and payment processors", + "ts": 5268 + }, + { + "episode": 361, + "topic": "Rain Furrest horror and con hygiene", + "ts": 6691 + }, + { + "episode": 361, + "topic": "Rumble rant and 'Snapback' premiere", + "ts": 7239 + }, + { + "episode": 361, + "topic": "Anti-mindfulness rage: skeleton of titanium", + "ts": 7816 + }, + { + "episode": 361, + "topic": "Rage mailbag: forgotten deodorant and chili-oil shroom burn", + "ts": 8017 + }, + { + "episode": 361, + "topic": "Snail-gate solidarity, rape-survivor jab and Buster Baxter finale", + "ts": 8133 + }, + { + "episode": 520, + "topic": "Stream startup chaos (Rumble/Vimeo)", + "ts": 1.0 + }, + { + "episode": 520, + "topic": "Egg sketch audition story", + "ts": 61.0 + }, + { + "episode": 520, + "topic": "Effort vs. shipping product", + "ts": 90.0 + }, + { + "episode": 520, + "topic": "Undertaker balls bit", + "ts": 120.0 + } + ], + "dick masterson": [ + { + "episode": 1, + "topic": "Voldemort opener & BPITU eulogy", + "ts": 134 + }, + { + "episode": 1, + "topic": "'Artistic differences' explanation & post-Seinfeld problem", + "ts": 600 + }, + { + "episode": 1, + "topic": "Co-host audition Q1: best dog for picking up women", + "ts": 983 + }, + { + "episode": 1, + "topic": "Audition Q2: what makes you rage - conference calls", + "ts": 1265 + }, + { + "episode": 1, + "topic": "Audition Q3: what do you love most about Donald Trump", + "ts": 1752 + }, + { + "episode": 1, + "topic": "Dick Tip: always bring your own water", + "ts": 2071 + }, + { + "episode": 1, + "topic": "Mexico trip setup: 80s model, short shorts, caravans", + "ts": 2410 + }, + { + "episode": 1, + "topic": "Mexican construction epiphany / wall politics", + "ts": 2716 + }, + { + "episode": 1, + "topic": "Fuck Trump bracelets & forbidden-opinion grievance", + "ts": 2988 + }, + { + "episode": 1, + "topic": "Sexual assault story: the large woman & scotch tumbler", + "ts": 3404 + }, + { + "episode": 1, + "topic": "Patreon thanks & sign-off", + "ts": 3722 + }, + { + "episode": 2, + "topic": "Show open and Larry Blidner audition", + "ts": 1 + }, + { + "episode": 2, + "topic": "Patreon live-feed promo and fan mail", + "ts": 115 + }, + { + "episode": 2, + "topic": "Allegra Ringo voted 'not a rage'", + "ts": 303 + }, + { + "episode": 2, + "topic": "Orlando massacre: tragedy vs. atrocity", + "ts": 419 + }, + { + "episode": 2, + "topic": "Islam as political ideology rant", + "ts": 565 + }, + { + "episode": 2, + "topic": "Gun control and shooter irony", + "ts": 1059 + }, + { + "episode": 2, + "topic": "Fatherhood Q&A: what's in it for dads", + "ts": 1284 + }, + { + "episode": 2, + "topic": "Helicopter parents and Halloween 'red light' dad", + "ts": 1649 + }, + { + "episode": 2, + "topic": "Sons troll fathers; God muscle", + "ts": 1885 + }, + { + "episode": 2, + "topic": "Pickup lines and chick-magnet theory", + "ts": 2182 + }, + { + "episode": 2, + "topic": "'What makes you a rage': bullshit detector", + "ts": 2472 + }, + { + "episode": 2, + "topic": "Dick tips: TNS 'Take No Shit'", + "ts": 2908 + }, + { + "episode": 2, + "topic": "OnTrac delivery fiasco", + "ts": 3045 + }, + { + "episode": 2, + "topic": "Book plug, rage vote, and voicemails", + "ts": 3423 + }, + { + "episode": 3, + "topic": "Cold open and co-host audition setup", + "ts": 2 + }, + { + "episode": 3, + "topic": "'I Will Watch Anything Once' and Necessary Roughness fight", + "ts": 105 + }, + { + "episode": 3, + "topic": "Larry Bildner ruled 'a rage'; voice taxonomy bit", + "ts": 285 + }, + { + "episode": 3, + "topic": "Mocking Larry's 'felt the conception' claim", + "ts": 400 + }, + { + "episode": 3, + "topic": "Emails: criticizing Islam vs. the taboo", + "ts": 480 + }, + { + "episode": 3, + "topic": "Dick's beef: BPITU feed hijack", + "ts": 890 + }, + { + "episode": 3, + "topic": "Anton Yelchin tribute and Ghost Dad gag", + "ts": 1515 + }, + { + "episode": 3, + "topic": "Interview Q1: why he won't watch scary movies", + "ts": 1580 + }, + { + "episode": 3, + "topic": "Worst part of movies: planless villains vs. applause bit", + "ts": 2015 + }, + { + "episode": 3, + "topic": "Best movie to hook up to: Tootsie rule and Shawshank window", + "ts": 2170 + }, + { + "episode": 3, + "topic": "What makes you a rage: big birthday weeks", + "ts": 2485 + }, + { + "episode": 3, + "topic": "Dick tips: have fun; prep harder", + "ts": 2880 + }, + { + "episode": 3, + "topic": "Low-talker decibel dick tip", + "ts": 3064 + }, + { + "episode": 3, + "topic": "Plugs and verdict", + "ts": 3292 + }, + { + "episode": 3, + "topic": "Post-show voicemails", + "ts": 3358 + }, + { + "episode": 4, + "topic": "Cold open, co-host dynasty framing and last week's mail", + "ts": 19 + }, + { + "episode": 4, + "topic": "Neil deGrasse Tyson roast", + "ts": 295 + }, + { + "episode": 4, + "topic": "Maddox split fallout: deleted site, hijacked feed, Twitter block", + "ts": 551 + }, + { + "episode": 4, + "topic": "Implication theory and the reputation contest", + "ts": 1135 + }, + { + "episode": 4, + "topic": "Wrestling as American art form", + "ts": 1259 + }, + { + "episode": 4, + "topic": "Macho Man blacklist rumor", + "ts": 1409 + }, + { + "episode": 4, + "topic": "Life coach bits: Fourth of July blanks and Dr. Phil", + "ts": 1567 + }, + { + "episode": 4, + "topic": "$20 Million Man and the WWE Hall of Fame quiz", + "ts": 1710 + }, + { + "episode": 4, + "topic": "Trump inauguration rapture fantasy and unstumpability army", + "ts": 2138 + }, + { + "episode": 4, + "topic": "Most feared opponent: Joey Ryan", + "ts": 2543 + }, + { + "episode": 4, + "topic": "Rage #1: shellfish and manly crab-tearing", + "ts": 2643 + }, + { + "episode": 4, + "topic": "Rage #2: Chachi and Elmo ruined children's TV", + "ts": 2788 + }, + { + "episode": 4, + "topic": "Rage #3: straight-edge life and drinking culture", + "ts": 2980 + }, + { + "episode": 4, + "topic": "Dick tips: incremental dreaming and yoga", + "ts": 3414 + }, + { + "episode": 4, + "topic": "Jihad Jeremy call-in: spoilers, Brexit, terror gags", + "ts": 3844 + }, + { + "episode": 5, + "topic": "Punnable baby names and the dickshow.com domain", + "ts": 20 + }, + { + "episode": 5, + "topic": "'I could do better' / Hangover sequels challenge", + "ts": 173 + }, + { + "episode": 5, + "topic": "Viewer mail: Revenant joke and Trump inauguration fan art", + "ts": 302 + }, + { + "episode": 5, + "topic": "Neil deGrasse Tyson 'Rationalia' rant", + "ts": 541 + }, + { + "episode": 5, + "topic": "Wrestling voicemail and Lesnar debate", + "ts": 963 + }, + { + "episode": 5, + "topic": "Lagunitas pronunciation and accents", + "ts": 1119 + }, + { + "episode": 5, + "topic": "Lieutenant Longshank voicemail", + "ts": 1242 + }, + { + "episode": 5, + "topic": "Co-host interview Q1: worst cultural appropriation", + "ts": 1344 + }, + { + "episode": 5, + "topic": "Co-host interview Q2: will there ever be sex robots?", + "ts": 2454 + }, + { + "episode": 5, + "topic": "Denzel's rage: IT work and users who don't try", + "ts": 2600 + }, + { + "episode": 5, + "topic": "Delivery drivers and competence as genius", + "ts": 2995 + }, + { + "episode": 5, + "topic": "Dick tips: never leave the house vs expect fuck-ups", + "ts": 3189 + }, + { + "episode": 5, + "topic": "You Don't Know Dick debut (Facebook segment)", + "ts": 3365 + }, + { + "episode": 6, + "topic": "Intro & Tournament of Nerds credits", + "ts": 29 + }, + { + "episode": 6, + "topic": "Rally-racing segue into trans talk", + "ts": 324 + }, + { + "episode": 6, + "topic": "Name choice & broken-hand banter", + "ts": 544 + }, + { + "episode": 6, + "topic": "Rundown & mailbag", + "ts": 840 + }, + { + "episode": 6, + "topic": "'Summer of Inclusion' press release", + "ts": 1048 + }, + { + "episode": 6, + "topic": "Hillary tweets & Trump Twitter", + "ts": 1513 + }, + { + "episode": 6, + "topic": "Rage: summer vacations", + "ts": 1597 + }, + { + "episode": 6, + "topic": "Trump & the middle class", + "ts": 1979 + }, + { + "episode": 6, + "topic": "Tourist season & Disneyland slur", + "ts": 2160 + }, + { + "episode": 6, + "topic": "Dating while trans & drag pickup theory", + "ts": 2320 + }, + { + "episode": 6, + "topic": "Bathroom bills, labels & alt-right", + "ts": 2620 + }, + { + "episode": 6, + "topic": "Persecution olympics & trans realities", + "ts": 2940 + }, + { + "episode": 6, + "topic": "Lyft tip & Facebook dispatch", + "ts": 3374 + }, + { + "episode": 6, + "topic": "Bondage tip, incest dilemma & daughter tip", + "ts": 4018 + }, + { + "episode": 6, + "topic": "Killing It promo, sign-off & voicemails", + "ts": 4494 + }, + { + "episode": 362, + "topic": "Cold open: insomnia, broken multistream, meth beans", + "ts": 0 + }, + { + "episode": 362, + "topic": "Eric July Isom feud recap", + "ts": 260 + }, + { + "episode": 362, + "topic": "Anti-woke politics and storytelling gospels", + "ts": 515 + }, + { + "episode": 362, + "topic": "Show open: Mickey scores and the mosaic", + "ts": 876 + }, + { + "episode": 362, + "topic": "LA Fair saga pt. 1: results and pedaball", + "ts": 1260 + }, + { + "episode": 362, + "topic": "Fundamentals doctrine", + "ts": 1528 + }, + { + "episode": 362, + "topic": "Fat ladies nachos story", + "ts": 2125 + }, + { + "episode": 362, + "topic": "Isom teardown: plot and continuity", + "ts": 2271 + }, + { + "episode": 362, + "topic": "LA Fair saga pt. 2: confrontation and cover-up", + "ts": 2994 + }, + { + "episode": 362, + "topic": "Tag forensics: 'apparently unfinished'", + "ts": 3572 + }, + { + "episode": 362, + "topic": "Lizzo quits over fat-shaming", + "ts": 3882 + }, + { + "episode": 362, + "topic": "CDC director Mandy Cohen clip", + "ts": 4251 + }, + { + "episode": 362, + "topic": "Comments: Islam dying, Tate, shitiverse, fursuit", + "ts": 4456 + }, + { + "episode": 362, + "topic": "Sweden rant, obesity rankings, pedophile-cure redux", + "ts": 4861 + }, + { + "episode": 362, + "topic": "Voicemails, black elves, sign-off", + "ts": 5321 + }, + { + "episode": 370, + "topic": "Opening: Eric July's DMCA war on Riley", + "ts": 5 + }, + { + "episode": 370, + "topic": "TSA rant: Lizzo clone and cupped-hand bit", + "ts": 162 + }, + { + "episode": 370, + "topic": "Greece recap: hot women, fat America, ugly Greek men", + "ts": 480 + }, + { + "episode": 370, + "topic": "Greek funeral and Vito's standup eulogy", + "ts": 719 + }, + { + "episode": 370, + "topic": "Politics block: Trump, DeSantis, Niger, science chart", + "ts": 1908 + }, + { + "episode": 370, + "topic": "Zherka 'drug habit with momentum' diagnosis", + "ts": 2709 + }, + { + "episode": 370, + "topic": "Ralph sobriety, JLP nihilism theory, Sacred Sons roast", + "ts": 2975 + }, + { + "episode": 370, + "topic": "Mailbag: Tinder trans-match conspiracy and gay cigar", + "ts": 3444 + }, + { + "episode": 370, + "topic": "Clip reactions: Brazil's Rogan, Maddox on AEW, Sharpton gaffe", + "ts": 3686 + }, + { + "episode": 370, + "topic": "Riley call: piracy, Clip-a-verse, comic-industry takes", + "ts": 4213 + }, + { + "episode": 370, + "topic": "Elon's tweet-firing lawsuits and racism-firing bit", + "ts": 4755 + }, + { + "episode": 370, + "topic": "Riley and Mint Salad's Fansly porn empire", + "ts": 5236 + }, + { + "episode": 370, + "topic": "Andrew Tate clips and tarred TV-license man", + "ts": 5619 + }, + { + "episode": 370, + "topic": "Faith mailbag and wedding-advice follow-up", + "ts": 6078 + }, + { + "episode": 370, + "topic": "Fat Watch gauntlet", + "ts": 6765 + }, + { + "episode": 373, + "topic": "Cold open: prison over Isom", + "ts": 0.0 + }, + { + "episode": 373, + "topic": "Identical characters / Chris Chan", + "ts": 385.0 + }, + { + "episode": 373, + "topic": "Oliver Anthony song & M&M rule", + "ts": 566.0 + }, + { + "episode": 373, + "topic": "ISOM v. July evidence", + "ts": 886.0 + }, + { + "episode": 373, + "topic": "'Rock star attorneys' + Wang tease", + "ts": 1440.0 + }, + { + "episode": 373, + "topic": "USC creep & pizza scheme", + "ts": 1770.0 + }, + { + "episode": 373, + "topic": "Homeless fires / Prop 69", + "ts": 2146.0 + }, + { + "episode": 373, + "topic": "DOJ v. SpaceX + context book", + "ts": 2325.0 + }, + { + "episode": 373, + "topic": "Mugshot, GOP, Rekieta loyalty", + "ts": 2872.0 + }, + { + "episode": 373, + "topic": "SpaceX release, Nazi scientists, climate media", + "ts": 3146.0 + }, + { + "episode": 373, + "topic": "Trans stabbing & Perch brawl", + "ts": 4205.0 + }, + { + "episode": 373, + "topic": "Quick hits block", + "ts": 4982.0 + }, + { + "episode": 373, + "topic": "Dying-mom email advice", + "ts": 5657.0 + }, + { + "episode": 373, + "topic": "Revenge doctrine & escalation", + "ts": 6424.0 + }, + { + "episode": 373, + "topic": "Maddox's Wang expose", + "ts": 9459.0 + } + ], + "dustin sinawa": [ + { + "episode": 5, + "topic": "You Don't Know Dick debut (Facebook segment)", + "ts": 3365 + } + ], + "dustin sinowah": [ + { + "episode": 6, + "topic": "Lyft tip & Facebook dispatch", + "ts": 3374 + }, + { + "episode": 6, + "topic": "Bondage tip, incest dilemma & daughter tip", + "ts": 4018 + } + ], + "eric july": [ + { + "episode": 361, + "topic": "Eric July feud opener: 'ho ass nigga' and crack-vs-cocaine", + "ts": 0 + }, + { + "episode": 361, + "topic": "ISOM review and $3M culture-war comics", + "ts": 134 + }, + { + "episode": 361, + "topic": "Eric July calls in: bad faith vs criticism", + "ts": 4464 + }, + { + "episode": 361, + "topic": "Snail-gate solidarity, rape-survivor jab and Buster Baxter finale", + "ts": 8133 + }, + { + "episode": 362, + "topic": "Eric July Isom feud recap", + "ts": 260 + }, + { + "episode": 362, + "topic": "Anti-woke politics and storytelling gospels", + "ts": 515 + }, + { + "episode": 362, + "topic": "Isom teardown: plot and continuity", + "ts": 2271 + }, + { + "episode": 362, + "topic": "Comments: Islam dying, Tate, shitiverse, fursuit", + "ts": 4456 + }, + { + "episode": 362, + "topic": "Voicemails, black elves, sign-off", + "ts": 5321 + }, + { + "episode": 370, + "topic": "Opening: Eric July's DMCA war on Riley", + "ts": 5 + }, + { + "episode": 370, + "topic": "Riley call: piracy, Clip-a-verse, comic-industry takes", + "ts": 4213 + }, + { + "episode": 370, + "topic": "Elon's tweet-firing lawsuits and racism-firing bit", + "ts": 4755 + }, + { + "episode": 373, + "topic": "Identical characters / Chris Chan", + "ts": 385.0 + }, + { + "episode": 373, + "topic": "ISOM v. July evidence", + "ts": 886.0 + }, + { + "episode": 373, + "topic": "'Rock star attorneys' + Wang tease", + "ts": 1440.0 + }, + { + "episode": 373, + "topic": "Revenge doctrine & escalation", + "ts": 6424.0 + } + ], + "jihad jeremy": [ + { + "episode": 4, + "topic": "Jihad Jeremy call-in: spoilers, Brexit, terror gags", + "ts": 3844 + } + ], + "joan ford": [ + { + "episode": 6, + "topic": "Intro & Tournament of Nerds credits", + "ts": 29 + }, + { + "episode": 6, + "topic": "Rally-racing segue into trans talk", + "ts": 324 + }, + { + "episode": 6, + "topic": "Name choice & broken-hand banter", + "ts": 544 + }, + { + "episode": 6, + "topic": "Rundown & mailbag", + "ts": 840 + }, + { + "episode": 6, + "topic": "'Summer of Inclusion' press release", + "ts": 1048 + }, + { + "episode": 6, + "topic": "Hillary tweets & Trump Twitter", + "ts": 1513 + }, + { + "episode": 6, + "topic": "Rage: summer vacations", + "ts": 1597 + }, + { + "episode": 6, + "topic": "Trump & the middle class", + "ts": 1979 + }, + { + "episode": 6, + "topic": "Tourist season & Disneyland slur", + "ts": 2160 + }, + { + "episode": 6, + "topic": "Dating while trans & drag pickup theory", + "ts": 2320 + }, + { + "episode": 6, + "topic": "Bathroom bills, labels & alt-right", + "ts": 2620 + }, + { + "episode": 6, + "topic": "Persecution olympics & trans realities", + "ts": 2940 + }, + { + "episode": 6, + "topic": "Lyft tip & Facebook dispatch", + "ts": 3374 + }, + { + "episode": 6, + "topic": "Bondage tip, incest dilemma & daughter tip", + "ts": 4018 + }, + { + "episode": 6, + "topic": "Killing It promo, sign-off & voicemails", + "ts": 4494 + } + ], + "joey clift": [ + { + "episode": 4, + "topic": "Cold open, co-host dynasty framing and last week's mail", + "ts": 19 + }, + { + "episode": 4, + "topic": "Neil deGrasse Tyson roast", + "ts": 295 + }, + { + "episode": 4, + "topic": "Wrestling as American art form", + "ts": 1259 + }, + { + "episode": 4, + "topic": "Macho Man blacklist rumor", + "ts": 1409 + }, + { + "episode": 4, + "topic": "Life coach bits: Fourth of July blanks and Dr. Phil", + "ts": 1567 + }, + { + "episode": 4, + "topic": "$20 Million Man and the WWE Hall of Fame quiz", + "ts": 1710 + }, + { + "episode": 4, + "topic": "Trump inauguration rapture fantasy and unstumpability army", + "ts": 2138 + }, + { + "episode": 4, + "topic": "Most feared opponent: Joey Ryan", + "ts": 2543 + }, + { + "episode": 4, + "topic": "Rage #1: shellfish and manly crab-tearing", + "ts": 2643 + }, + { + "episode": 4, + "topic": "Rage #2: Chachi and Elmo ruined children's TV", + "ts": 2788 + }, + { + "episode": 4, + "topic": "Rage #3: straight-edge life and drinking culture", + "ts": 2980 + }, + { + "episode": 4, + "topic": "Dick tips: incremental dreaming and yoga", + "ts": 3414 + }, + { + "episode": 4, + "topic": "Jihad Jeremy call-in: spoilers, Brexit, terror gags", + "ts": 3844 + } + ], + "justin wang": [ + { + "episode": 373, + "topic": "'Rock star attorneys' + Wang tease", + "ts": 1440.0 + }, + { + "episode": 373, + "topic": "Maddox's Wang expose", + "ts": 9459.0 + } + ], + "larry bildner": [ + { + "episode": 3, + "topic": "Larry Bildner ruled 'a rage'; voice taxonomy bit", + "ts": 285 + }, + { + "episode": 3, + "topic": "Mocking Larry's 'felt the conception' claim", + "ts": 400 + } + ], + "larry blidner": [ + { + "episode": 2, + "topic": "Show open and Larry Blidner audition", + "ts": 1 + }, + { + "episode": 2, + "topic": "Orlando massacre: tragedy vs. atrocity", + "ts": 419 + }, + { + "episode": 2, + "topic": "Islam as political ideology rant", + "ts": 565 + }, + { + "episode": 2, + "topic": "Gun control and shooter irony", + "ts": 1059 + }, + { + "episode": 2, + "topic": "Fatherhood Q&A: what's in it for dads", + "ts": 1284 + }, + { + "episode": 2, + "topic": "Helicopter parents and Halloween 'red light' dad", + "ts": 1649 + }, + { + "episode": 2, + "topic": "Sons troll fathers; God muscle", + "ts": 1885 + }, + { + "episode": 2, + "topic": "Pickup lines and chick-magnet theory", + "ts": 2182 + }, + { + "episode": 2, + "topic": "'What makes you a rage': bullshit detector", + "ts": 2472 + }, + { + "episode": 2, + "topic": "Dick tips: TNS 'Take No Shit'", + "ts": 2908 + }, + { + "episode": 2, + "topic": "OnTrac delivery fiasco", + "ts": 3045 + }, + { + "episode": 2, + "topic": "Book plug, rage vote, and voicemails", + "ts": 3423 + } + ], + "lizzo": [ + { + "episode": 362, + "topic": "Lizzo quits over fat-shaming", + "ts": 3882 + } + ], + "maddox": [ + { + "episode": 3, + "topic": "Dick's beef: BPITU feed hijack", + "ts": 890 + }, + { + "episode": 4, + "topic": "Maddox split fallout: deleted site, hijacked feed, Twitter block", + "ts": 551 + }, + { + "episode": 4, + "topic": "Implication theory and the reputation contest", + "ts": 1135 + }, + { + "episode": 370, + "topic": "Clip reactions: Brazil's Rogan, Maddox on AEW, Sharpton gaffe", + "ts": 3686 + }, + { + "episode": 373, + "topic": "Identical characters / Chris Chan", + "ts": 385.0 + }, + { + "episode": 373, + "topic": "'Rock star attorneys' + Wang tease", + "ts": 1440.0 + }, + { + "episode": 373, + "topic": "Maddox's Wang expose", + "ts": 9459.0 + } + ], + "mandy cohen": [ + { + "episode": 362, + "topic": "CDC director Mandy Cohen clip", + "ts": 4251 + } + ], + "mark david christensen": [ + { + "episode": 3, + "topic": "Cold open and co-host audition setup", + "ts": 2 + }, + { + "episode": 3, + "topic": "'I Will Watch Anything Once' and Necessary Roughness fight", + "ts": 105 + }, + { + "episode": 3, + "topic": "Interview Q1: why he won't watch scary movies", + "ts": 1580 + }, + { + "episode": 3, + "topic": "Worst part of movies: planless villains vs. applause bit", + "ts": 2015 + }, + { + "episode": 3, + "topic": "Best movie to hook up to: Tootsie rule and Shawshank window", + "ts": 2170 + }, + { + "episode": 3, + "topic": "What makes you a rage: big birthday weeks", + "ts": 2485 + }, + { + "episode": 3, + "topic": "Dick tips: have fun; prep harder", + "ts": 2880 + }, + { + "episode": 3, + "topic": "Plugs and verdict", + "ts": 3292 + } + ], + "neil degrasse tyson": [ + { + "episode": 4, + "topic": "Neil deGrasse Tyson roast", + "ts": 295 + } + ], + "nick rekieta": [ + { + "episode": 373, + "topic": "'Rock star attorneys' + Wang tease", + "ts": 1440.0 + }, + { + "episode": 373, + "topic": "Mugshot, GOP, Rekieta loyalty", + "ts": 2872.0 + } + ], + "null": [ + { + "episode": 373, + "topic": "DOJ v. SpaceX + context book", + "ts": 2325.0 + } + ], + "riley": [ + { + "episode": 370, + "topic": "Opening: Eric July's DMCA war on Riley", + "ts": 5 + }, + { + "episode": 370, + "topic": "Riley call: piracy, Clip-a-verse, comic-industry takes", + "ts": 4213 + }, + { + "episode": 370, + "topic": "Elon's tweet-firing lawsuits and racism-firing bit", + "ts": 4755 + }, + { + "episode": 370, + "topic": "Riley and Mint Salad's Fansly porn empire", + "ts": 5236 + }, + { + "episode": 370, + "topic": "Andrew Tate clips and tarred TV-license man", + "ts": 5619 + } + ], + "roxanne": [ + { + "episode": 361, + "topic": "Roxanne the lizard furry interrogation", + "ts": 4902 + }, + { + "episode": 361, + "topic": "Fur Affinity's cub-art ban and payment processors", + "ts": 5268 + } + ], + "sam": [ + { + "episode": 361, + "topic": "Snail-gate solidarity, rape-survivor jab and Buster Baxter finale", + "ts": 8133 + } + ], + "sean": [ + { + "episode": 1, + "topic": "Voldemort opener & BPITU eulogy", + "ts": 134 + }, + { + "episode": 1, + "topic": "Audition Q2: what makes you rage - conference calls", + "ts": 1265 + }, + { + "episode": 1, + "topic": "Audition Q3: what do you love most about Donald Trump", + "ts": 1752 + }, + { + "episode": 1, + "topic": "Mexico trip setup: 80s model, short shorts, caravans", + "ts": 2410 + }, + { + "episode": 1, + "topic": "Mexican construction epiphany / wall politics", + "ts": 2716 + }, + { + "episode": 1, + "topic": "Fuck Trump bracelets & forbidden-opinion grievance", + "ts": 2988 + }, + { + "episode": 1, + "topic": "Sexual assault story: the large woman & scotch tumbler", + "ts": 3404 + }, + { + "episode": 1, + "topic": "Patreon thanks & sign-off", + "ts": 3722 + }, + { + "episode": 2, + "topic": "Show open and Larry Blidner audition", + "ts": 1 + }, + { + "episode": 2, + "topic": "Patreon live-feed promo and fan mail", + "ts": 115 + }, + { + "episode": 2, + "topic": "Fatherhood Q&A: what's in it for dads", + "ts": 1284 + }, + { + "episode": 2, + "topic": "Sons troll fathers; God muscle", + "ts": 1885 + }, + { + "episode": 2, + "topic": "Dick tips: TNS 'Take No Shit'", + "ts": 2908 + }, + { + "episode": 2, + "topic": "Book plug, rage vote, and voicemails", + "ts": 3423 + }, + { + "episode": 3, + "topic": "Cold open and co-host audition setup", + "ts": 2 + }, + { + "episode": 3, + "topic": "Larry Bildner ruled 'a rage'; voice taxonomy bit", + "ts": 285 + }, + { + "episode": 3, + "topic": "Mocking Larry's 'felt the conception' claim", + "ts": 400 + }, + { + "episode": 3, + "topic": "Emails: criticizing Islam vs. the taboo", + "ts": 480 + }, + { + "episode": 3, + "topic": "Dick's beef: BPITU feed hijack", + "ts": 890 + }, + { + "episode": 3, + "topic": "Anton Yelchin tribute and Ghost Dad gag", + "ts": 1515 + }, + { + "episode": 3, + "topic": "Interview Q1: why he won't watch scary movies", + "ts": 1580 + }, + { + "episode": 3, + "topic": "Best movie to hook up to: Tootsie rule and Shawshank window", + "ts": 2170 + }, + { + "episode": 3, + "topic": "Low-talker decibel dick tip", + "ts": 3064 + }, + { + "episode": 3, + "topic": "Post-show voicemails", + "ts": 3358 + }, + { + "episode": 4, + "topic": "Cold open, co-host dynasty framing and last week's mail", + "ts": 19 + }, + { + "episode": 4, + "topic": "Neil deGrasse Tyson roast", + "ts": 295 + }, + { + "episode": 4, + "topic": "Maddox split fallout: deleted site, hijacked feed, Twitter block", + "ts": 551 + }, + { + "episode": 4, + "topic": "$20 Million Man and the WWE Hall of Fame quiz", + "ts": 1710 + }, + { + "episode": 4, + "topic": "Trump inauguration rapture fantasy and unstumpability army", + "ts": 2138 + }, + { + "episode": 4, + "topic": "Jihad Jeremy call-in: spoilers, Brexit, terror gags", + "ts": 3844 + }, + { + "episode": 5, + "topic": "Punnable baby names and the dickshow.com domain", + "ts": 20 + }, + { + "episode": 5, + "topic": "'I could do better' / Hangover sequels challenge", + "ts": 173 + }, + { + "episode": 5, + "topic": "Viewer mail: Revenant joke and Trump inauguration fan art", + "ts": 302 + }, + { + "episode": 5, + "topic": "Neil deGrasse Tyson 'Rationalia' rant", + "ts": 541 + }, + { + "episode": 5, + "topic": "Lieutenant Longshank voicemail", + "ts": 1242 + }, + { + "episode": 5, + "topic": "Co-host interview Q1: worst cultural appropriation", + "ts": 1344 + }, + { + "episode": 5, + "topic": "Co-host interview Q2: will there ever be sex robots?", + "ts": 2454 + }, + { + "episode": 5, + "topic": "Delivery drivers and competence as genius", + "ts": 2995 + }, + { + "episode": 5, + "topic": "You Don't Know Dick debut (Facebook segment)", + "ts": 3365 + }, + { + "episode": 6, + "topic": "Rundown & mailbag", + "ts": 840 + }, + { + "episode": 6, + "topic": "Bondage tip, incest dilemma & daughter tip", + "ts": 4018 + }, + { + "episode": 361, + "topic": "Eric July feud opener: 'ho ass nigga' and crack-vs-cocaine", + "ts": 0 + }, + { + "episode": 361, + "topic": "ISOM review and $3M culture-war comics", + "ts": 134 + }, + { + "episode": 361, + "topic": "Storytelling craft: favorite-part test and editors", + "ts": 420 + }, + { + "episode": 361, + "topic": "'The Thinly Skinned Middle-Aged Man' comic pitch", + "ts": 763 + }, + { + "episode": 361, + "topic": "Target Satanic pride confrontation", + "ts": 1013 + }, + { + "episode": 361, + "topic": "LA Fair mosaic robbery", + "ts": 1548 + }, + { + "episode": 361, + "topic": "Lactating trans woman", + "ts": 1847 + }, + { + "episode": 361, + "topic": "LAPD robot dog", + "ts": 2217 + }, + { + "episode": 361, + "topic": "Fish Tank shoutout and 'gender-affirming' steroids", + "ts": 2425 + }, + { + "episode": 361, + "topic": "Biden's antisemitism strategy, swastika buyback, Israel gaslighting", + "ts": 2669 + }, + { + "episode": 361, + "topic": "Mailbag: tips test, AI vs women's jobs, doctor math, proton vapes", + "ts": 3208 + }, + { + "episode": 361, + "topic": "101 new asexual sexualities", + "ts": 3968 + }, + { + "episode": 361, + "topic": "Eric July calls in: bad faith vs criticism", + "ts": 4464 + }, + { + "episode": 361, + "topic": "Roxanne the lizard furry interrogation", + "ts": 4902 + }, + { + "episode": 361, + "topic": "Fur Affinity's cub-art ban and payment processors", + "ts": 5268 + }, + { + "episode": 361, + "topic": "Rain Furrest horror and con hygiene", + "ts": 6691 + }, + { + "episode": 361, + "topic": "Rumble rant and 'Snapback' premiere", + "ts": 7239 + }, + { + "episode": 361, + "topic": "Anti-mindfulness rage: skeleton of titanium", + "ts": 7816 + }, + { + "episode": 361, + "topic": "Rage mailbag: forgotten deodorant and chili-oil shroom burn", + "ts": 8017 + }, + { + "episode": 361, + "topic": "Snail-gate solidarity, rape-survivor jab and Buster Baxter finale", + "ts": 8133 + }, + { + "episode": 362, + "topic": "Cold open: insomnia, broken multistream, meth beans", + "ts": 0 + }, + { + "episode": 362, + "topic": "Eric July Isom feud recap", + "ts": 260 + }, + { + "episode": 362, + "topic": "Anti-woke politics and storytelling gospels", + "ts": 515 + }, + { + "episode": 362, + "topic": "Show open: Mickey scores and the mosaic", + "ts": 876 + }, + { + "episode": 362, + "topic": "LA Fair saga pt. 1: results and pedaball", + "ts": 1260 + }, + { + "episode": 362, + "topic": "Fundamentals doctrine", + "ts": 1528 + }, + { + "episode": 362, + "topic": "Isom teardown: plot and continuity", + "ts": 2271 + }, + { + "episode": 362, + "topic": "LA Fair saga pt. 2: confrontation and cover-up", + "ts": 2994 + }, + { + "episode": 362, + "topic": "Tag forensics: 'apparently unfinished'", + "ts": 3572 + }, + { + "episode": 362, + "topic": "Lizzo quits over fat-shaming", + "ts": 3882 + }, + { + "episode": 362, + "topic": "CDC director Mandy Cohen clip", + "ts": 4251 + }, + { + "episode": 362, + "topic": "Comments: Islam dying, Tate, shitiverse, fursuit", + "ts": 4456 + }, + { + "episode": 362, + "topic": "Sweden rant, obesity rankings, pedophile-cure redux", + "ts": 4861 + }, + { + "episode": 362, + "topic": "Voicemails, black elves, sign-off", + "ts": 5321 + }, + { + "episode": 370, + "topic": "Opening: Eric July's DMCA war on Riley", + "ts": 5 + }, + { + "episode": 370, + "topic": "TSA rant: Lizzo clone and cupped-hand bit", + "ts": 162 + }, + { + "episode": 370, + "topic": "Greece recap: hot women, fat America, ugly Greek men", + "ts": 480 + }, + { + "episode": 370, + "topic": "Greek funeral and Vito's standup eulogy", + "ts": 719 + }, + { + "episode": 370, + "topic": "Politics block: Trump, DeSantis, Niger, science chart", + "ts": 1908 + }, + { + "episode": 370, + "topic": "Zherka 'drug habit with momentum' diagnosis", + "ts": 2709 + }, + { + "episode": 370, + "topic": "Ralph sobriety, JLP nihilism theory, Sacred Sons roast", + "ts": 2975 + }, + { + "episode": 370, + "topic": "Mailbag: Tinder trans-match conspiracy and gay cigar", + "ts": 3444 + }, + { + "episode": 370, + "topic": "Clip reactions: Brazil's Rogan, Maddox on AEW, Sharpton gaffe", + "ts": 3686 + }, + { + "episode": 370, + "topic": "Riley call: piracy, Clip-a-verse, comic-industry takes", + "ts": 4213 + }, + { + "episode": 370, + "topic": "Elon's tweet-firing lawsuits and racism-firing bit", + "ts": 4755 + }, + { + "episode": 370, + "topic": "Riley and Mint Salad's Fansly porn empire", + "ts": 5236 + }, + { + "episode": 370, + "topic": "Andrew Tate clips and tarred TV-license man", + "ts": 5619 + }, + { + "episode": 370, + "topic": "Faith mailbag and wedding-advice follow-up", + "ts": 6078 + }, + { + "episode": 370, + "topic": "Fat Watch gauntlet", + "ts": 6765 + }, + { + "episode": 373, + "topic": "Cold open: prison over Isom", + "ts": 0.0 + }, + { + "episode": 373, + "topic": "Identical characters / Chris Chan", + "ts": 385.0 + }, + { + "episode": 373, + "topic": "Oliver Anthony song & M&M rule", + "ts": 566.0 + }, + { + "episode": 373, + "topic": "ISOM v. July evidence", + "ts": 886.0 + }, + { + "episode": 373, + "topic": "'Rock star attorneys' + Wang tease", + "ts": 1440.0 + }, + { + "episode": 373, + "topic": "USC creep & pizza scheme", + "ts": 1770.0 + }, + { + "episode": 373, + "topic": "Homeless fires / Prop 69", + "ts": 2146.0 + }, + { + "episode": 373, + "topic": "DOJ v. SpaceX + context book", + "ts": 2325.0 + }, + { + "episode": 373, + "topic": "Mugshot, GOP, Rekieta loyalty", + "ts": 2872.0 + }, + { + "episode": 373, + "topic": "SpaceX release, Nazi scientists, climate media", + "ts": 3146.0 + }, + { + "episode": 373, + "topic": "Trans stabbing & Perch brawl", + "ts": 4205.0 + }, + { + "episode": 373, + "topic": "Quick hits block", + "ts": 4982.0 + }, + { + "episode": 373, + "topic": "Dying-mom email advice", + "ts": 5657.0 + }, + { + "episode": 373, + "topic": "Revenge doctrine & escalation", + "ts": 6424.0 + }, + { + "episode": 373, + "topic": "Maddox's Wang expose", + "ts": 9459.0 + } + ], + "vito": [ + { + "episode": 361, + "topic": "ISOM review and $3M culture-war comics", + "ts": 134 + } + ], + "vito gesualdi": [ + { + "episode": 370, + "topic": "Greek funeral and Vito's standup eulogy", + "ts": 719 + }, + { + "episode": 373, + "topic": "USC creep & pizza scheme", + "ts": 1770.0 + }, + { + "episode": 373, + "topic": "Dying-mom email advice", + "ts": 5657.0 + }, + { + "episode": 373, + "topic": "Revenge doctrine & escalation", + "ts": 6424.0 + }, + { + "episode": 373, + "topic": "Maddox's Wang expose", + "ts": 9459.0 + } + ], + "vito_gesualdi": [ + { + "episode": 520, + "topic": "Stream startup chaos (Rumble/Vimeo)", + "ts": 1.0 + }, + { + "episode": 520, + "topic": "Egg sketch audition story", + "ts": 61.0 + }, + { + "episode": 520, + "topic": "Effort vs. shipping product", + "ts": 90.0 + }, + { + "episode": 520, + "topic": "Undertaker balls bit", + "ts": 120.0 + } + ], + "weird matthew mcconaughey": [ + { + "episode": 6, + "topic": "Killing It promo, sign-off & voicemails", + "ts": 4494 + } + ], + "zherka": [ + { + "episode": 370, + "topic": "Zherka 'drug habit with momentum' diagnosis", + "ts": 2709 + } + ] + }, + "topics_by_episode": { + "$20 million man and the wwe hall of fame quiz": [ + 4 + ], + "'artistic differences' explanation & post-seinfeld problem": [ + 1 + ], + "'i could do better' / hangover sequels challenge": [ + 5 + ], + "'i will watch anything once' and necessary roughness fight": [ + 3 + ], + "'rock star attorneys' + wang tease": [ + 373 + ], + "'summer of inclusion' press release": [ + 6 + ], + "'the thinly skinned middle-aged man' comic pitch": [ + 361 + ], + "'what makes you a rage': bullshit detector": [ + 2 + ], + "101 new asexual sexualities": [ + 361 + ], + "allegra ringo voted 'not a rage'": [ + 2 + ], + "andrew tate clips and tarred tv-license man": [ + 370 + ], + "anti-mindfulness rage: skeleton of titanium": [ + 361 + ], + "anti-woke politics and storytelling gospels": [ + 362 + ], + "anton yelchin tribute and ghost dad gag": [ + 3 + ], + "audition q2: what makes you rage - conference calls": [ + 1 + ], + "audition q3: what do you love most about donald trump": [ + 1 + ], + "bathroom bills, labels & alt-right": [ + 6 + ], + "best movie to hook up to: tootsie rule and shawshank window": [ + 3 + ], + "biden's antisemitism strategy, swastika buyback, israel gaslighting": [ + 361 + ], + "bondage tip, incest dilemma & daughter tip": [ + 6 + ], + "book plug, rage vote, and voicemails": [ + 2 + ], + "cdc director mandy cohen clip": [ + 362 + ], + "clip reactions: brazil's rogan, maddox on aew, sharpton gaffe": [ + 370 + ], + "co-host audition q1: best dog for picking up women": [ + 1 + ], + "co-host interview q1: worst cultural appropriation": [ + 5 + ], + "co-host interview q2: will there ever be sex robots?": [ + 5 + ], + "cold open and co-host audition setup": [ + 3 + ], + "cold open, co-host dynasty framing and last week's mail": [ + 4 + ], + "cold open: insomnia, broken multistream, meth beans": [ + 362 + ], + "cold open: prison over isom": [ + 373 + ], + "comments: islam dying, tate, shitiverse, fursuit": [ + 362 + ], + "dating while trans & drag pickup theory": [ + 6 + ], + "delivery drivers and competence as genius": [ + 5 + ], + "denzel's rage: it work and users who don't try": [ + 5 + ], + "dick tip: always bring your own water": [ + 1 + ], + "dick tips: have fun; prep harder": [ + 3 + ], + "dick tips: incremental dreaming and yoga": [ + 4 + ], + "dick tips: never leave the house vs expect fuck-ups": [ + 5 + ], + "dick tips: tns 'take no shit'": [ + 2 + ], + "dick's beef: bpitu feed hijack": [ + 3 + ], + "doj v. spacex + context book": [ + 373 + ], + "dying-mom email advice": [ + 373 + ], + "effort vs. shipping product": [ + 520 + ], + "egg sketch audition story": [ + 520 + ], + "elon's tweet-firing lawsuits and racism-firing bit": [ + 370 + ], + "emails: criticizing islam vs. the taboo": [ + 3 + ], + "eric july calls in: bad faith vs criticism": [ + 361 + ], + "eric july feud opener: 'ho ass nigga' and crack-vs-cocaine": [ + 361 + ], + "eric july isom feud recap": [ + 362 + ], + "faith mailbag and wedding-advice follow-up": [ + 370 + ], + "fat ladies nachos story": [ + 362 + ], + "fat watch gauntlet": [ + 370 + ], + "fatherhood q&a: what's in it for dads": [ + 2 + ], + "fish tank shoutout and 'gender-affirming' steroids": [ + 361 + ], + "fuck trump bracelets & forbidden-opinion grievance": [ + 1 + ], + "fundamentals doctrine": [ + 362 + ], + "fur affinity's cub-art ban and payment processors": [ + 361 + ], + "greece recap: hot women, fat america, ugly greek men": [ + 370 + ], + "greek funeral and vito's standup eulogy": [ + 370 + ], + "gun control and shooter irony": [ + 2 + ], + "helicopter parents and halloween 'red light' dad": [ + 2 + ], + "hillary tweets & trump twitter": [ + 6 + ], + "homeless fires / prop 69": [ + 373 + ], + "identical characters / chris chan": [ + 373 + ], + "implication theory and the reputation contest": [ + 4 + ], + "interview q1: why he won't watch scary movies": [ + 3 + ], + "intro & tournament of nerds credits": [ + 6 + ], + "islam as political ideology rant": [ + 2 + ], + "isom review and $3m culture-war comics": [ + 361 + ], + "isom teardown: plot and continuity": [ + 362 + ], + "isom v. july evidence": [ + 373 + ], + "jihad jeremy call-in: spoilers, brexit, terror gags": [ + 4 + ], + "killing it promo, sign-off & voicemails": [ + 6 + ], + "la fair mosaic robbery": [ + 361 + ], + "la fair saga pt. 1: results and pedaball": [ + 362 + ], + "la fair saga pt. 2: confrontation and cover-up": [ + 362 + ], + "lactating trans woman": [ + 361 + ], + "lagunitas pronunciation and accents": [ + 5 + ], + "lapd robot dog": [ + 361 + ], + "larry bildner ruled 'a rage'; voice taxonomy bit": [ + 3 + ], + "lieutenant longshank voicemail": [ + 5 + ], + "life coach bits: fourth of july blanks and dr. phil": [ + 4 + ], + "lizzo quits over fat-shaming": [ + 362 + ], + "low-talker decibel dick tip": [ + 3 + ], + "lyft tip & facebook dispatch": [ + 6 + ], + "macho man blacklist rumor": [ + 4 + ], + "maddox split fallout: deleted site, hijacked feed, twitter block": [ + 4 + ], + "maddox's wang expose": [ + 373 + ], + "mailbag: tinder trans-match conspiracy and gay cigar": [ + 370 + ], + "mailbag: tips test, ai vs women's jobs, doctor math, proton vapes": [ + 361 + ], + "mexican construction epiphany / wall politics": [ + 1 + ], + "mexico trip setup: 80s model, short shorts, caravans": [ + 1 + ], + "mocking larry's 'felt the conception' claim": [ + 3 + ], + "most feared opponent: joey ryan": [ + 4 + ], + "mugshot, gop, rekieta loyalty": [ + 373 + ], + "name choice & broken-hand banter": [ + 6 + ], + "neil degrasse tyson 'rationalia' rant": [ + 5 + ], + "neil degrasse tyson roast": [ + 4 + ], + "oliver anthony song & m&m rule": [ + 373 + ], + "ontrac delivery fiasco": [ + 2 + ], + "opening: eric july's dmca war on riley": [ + 370 + ], + "orlando massacre: tragedy vs. atrocity": [ + 2 + ], + "patreon live-feed promo and fan mail": [ + 2 + ], + "patreon thanks & sign-off": [ + 1 + ], + "persecution olympics & trans realities": [ + 6 + ], + "pickup lines and chick-magnet theory": [ + 2 + ], + "plugs and verdict": [ + 3 + ], + "politics block: trump, desantis, niger, science chart": [ + 370 + ], + "post-show voicemails": [ + 3 + ], + "punnable baby names and the dickshow.com domain": [ + 5 + ], + "quick hits block": [ + 373 + ], + "rage #1: shellfish and manly crab-tearing": [ + 4 + ], + "rage #2: chachi and elmo ruined children's tv": [ + 4 + ], + "rage #3: straight-edge life and drinking culture": [ + 4 + ], + "rage mailbag: forgotten deodorant and chili-oil shroom burn": [ + 361 + ], + "rage: summer vacations": [ + 6 + ], + "rain furrest horror and con hygiene": [ + 361 + ], + "rally-racing segue into trans talk": [ + 6 + ], + "ralph sobriety, jlp nihilism theory, sacred sons roast": [ + 370 + ], + "revenge doctrine & escalation": [ + 373 + ], + "riley and mint salad's fansly porn empire": [ + 370 + ], + "riley call: piracy, clip-a-verse, comic-industry takes": [ + 370 + ], + "roxanne the lizard furry interrogation": [ + 361 + ], + "rumble rant and 'snapback' premiere": [ + 361 + ], + "rundown & mailbag": [ + 6 + ], + "sexual assault story: the large woman & scotch tumbler": [ + 1 + ], + "show open and larry blidner audition": [ + 2 + ], + "show open: mickey scores and the mosaic": [ + 362 + ], + "snail-gate solidarity, rape-survivor jab and buster baxter finale": [ + 361 + ], + "sons troll fathers; god muscle": [ + 2 + ], + "spacex release, nazi scientists, climate media": [ + 373 + ], + "storytelling craft: favorite-part test and editors": [ + 361 + ], + "stream startup chaos (rumble/vimeo)": [ + 520 + ], + "sweden rant, obesity rankings, pedophile-cure redux": [ + 362 + ], + "tag forensics: 'apparently unfinished'": [ + 362 + ], + "target satanic pride confrontation": [ + 361 + ], + "tourist season & disneyland slur": [ + 6 + ], + "trans stabbing & perch brawl": [ + 373 + ], + "trump & the middle class": [ + 6 + ], + "trump inauguration rapture fantasy and unstumpability army": [ + 4 + ], + "tsa rant: lizzo clone and cupped-hand bit": [ + 370 + ], + "undertaker balls bit": [ + 520 + ], + "usc creep & pizza scheme": [ + 373 + ], + "viewer mail: revenant joke and trump inauguration fan art": [ + 5 + ], + "voicemails, black elves, sign-off": [ + 362 + ], + "voldemort opener & bpitu eulogy": [ + 1 + ], + "what makes you a rage: big birthday weeks": [ + 3 + ], + "worst part of movies: planless villains vs. applause bit": [ + 3 + ], + "wrestling as american art form": [ + 4 + ], + "wrestling voicemail and lesnar debate": [ + 5 + ], + "you don't know dick debut (facebook segment)": [ + 5 + ], + "zherka 'drug habit with momentum' diagnosis": [ + 370 + ] + }, + "edginess_ranking": { + "top_overall_ti": [ + { + "episode": 2, + "overall_ti": 5, + "sincerity": 5, + "targets": [ + "political Islam / Muslims (generalizations)", + "gay victims of the Orlando shooting (as rhetorical props)", + "gun-control advocates", + "helicopter parents", + "women / feminism (gender essentialism)", + "millennials and college safe-space culture", + "academia and government bureaucrats", + "OnTrac courier" + ] + }, + { + "episode": 4, + "overall_ti": 5, + "sincerity": 2, + "targets": [ + "Neil deGrasse Tyson", + "Maddox", + "rehab industry", + "Elmo/Scott Baio/Sesame Street", + "EU and pundit class", + "Muslims (via satirical jihadist caricature)", + "women (Jihad Jeremy asides)", + "drinking culture", + "Hillary Clinton and Donald Trump (absurdist satire)", + "Joey Ryan (affectionate)" + ] + }, + { + "episode": 6, + "overall_ti": 5, + "sincerity": 2, + "targets": [ + "Marvel/DC/Sega diversity initiatives", + "disabled people (satirical punchlines)", + "Muslim people (satire)", + "trans people (tropes mocked, guest defended)", + "alt-right", + "teachers and children", + "LA tourists", + "Uber drivers", + "Hillary Clinton" + ] + }, + { + "episode": 361, + "overall_ti": 5, + "sincerity": 3, + "targets": [ + "Eric July", + "trans people", + "furries", + "women", + "Christian conservatives", + "Biden administration", + "Jews/Israel discourse", + "LAPD", + "payment processors", + "county fair staff" + ] + }, + { + "episode": 362, + "overall_ti": 5, + "sincerity": 3, + "targets": [ + "Eric July / Rippaverse fans", + "Lizzo and fat women", + "Islam / Muslims", + "homeless people", + "women (cleaning-products, 'work talk' bits)", + "pedophiles as a class", + "furries/zoophiles", + "LA Fair judges", + "Brian Singer / Hollywood", + "Andrew Tate", + "DeSantis", + "CDC / Mandy Cohen", + "Sweden", + "Rings of Power anti-woke fandom" + ] + }, + { + "episode": 370, + "overall_ti": 5, + "sincerity": 3, + "targets": [ + "fat people (especially women)", + "Black women", + "trans women", + "Greek men", + "autistic children (jokes)", + "homeless people", + "eric july", + "zherka", + "maddox", + "andrew tate", + "ron desantis", + "al sharpton", + "elon musk", + "jesse lee peterson", + "religious believers" + ] + }, + { + "episode": 373, + "overall_ti": 5, + "sincerity": 3, + "targets": [ + "Eric July and his fanbase", + "Maddox", + "Nick Rekieta (by proxy)", + "homeless people", + "trans people", + "Mexican/Latina women", + "police", + "GOP establishment", + "CNN/mainstream media", + "DOJ/Biden administration", + "disabled people ('retard' usage)" + ] + }, + { + "episode": 1, + "overall_ti": 4, + "sincerity": 4, + "targets": [ + "Mexican nationals (construction/stereotype mockery)", + "unnamed 'large woman' assailant (fat jokes)", + "Trump skeptics and anti-Trump social climate", + "corporate office workers / conference-call attendees", + "his own fanbase (comic abuse)", + "Maddox/BPITU legacy (light roasting)" + ] + }, + { + "episode": 3, + "overall_ti": 4, + "sincerity": 4, + "targets": [ + "Maddox (BPITU feed/archive grievance)", + "Islam and religious-criticism taboos / PC culture", + "women (arousal-manipulation theory)", + "horror movie fans", + "birthday-week celebrants", + "low talkers", + "Larry Bildner and Sean (roast targets)", + "Anton Yelchin's death (gallows humor)", + "voicemail caller using 'autistic' pejoratively at the host" + ] + }, + { + "episode": 5, + "overall_ti": 4, + "sincerity": 3, + "targets": [ + "Neil deGrasse Tyson", + "Jesse Williams", + "social-justice outrage culture", + "lazy customers and service workers", + "women (sweeping generalizations)", + "Islam (bikini wax bit)", + "Apple products" + ] + }, + { + "episode": 520, + "overall_ti": 2, + "sincerity": 1, + "targets": [ + "Vimeo", + "the BPITU cohost (Vito)" + ] + } + ], + "top_quotes": [ + { + "episode": 362, + "ts": 3202, + "ti": 6, + "quote": "Pedophile it up, man. Does it make the movie better? And we turn Godfather three into Godfather one by letting him rape a couple kids.", + "why": "Flippant child-rape satire about Hollywood impunity and Brian Singer allegations" + }, + { + "episode": 370, + "ts": 5068, + "ti": 6, + "quote": "But I mean, I think you should just be able to fire people out of pure racism. I would be fine with that. I think it's evil, but I think it should be protected by the fucking law.", + "why": "Half-sincere endorsement of legalized racial discrimination in employment" + }, + { + "episode": 373, + "ts": 9244.0, + "ti": 6, + "quote": "Hello rapist, 1488. Hi, all my mates, howdy kids. How's the ethno state, my nigs?", + "why": "Quoted song pairing racial slurs with neo-Nazi and mass-violence imagery in fedposter satire." + }, + { + "episode": 2, + "ts": 797, + "ti": 5, + "quote": "And this dog over here that we're dealing with, I'm talking about Islam. This dog thinks it's people.", + "why": "Dehumanizing metaphor about a religion played straight" + }, + { + "episode": 2, + "ts": 2708, + "ti": 5, + "quote": "Chicks like floral arrangements... they're into sort of temporary things. Guys like to achieve something they can stand back and look at.", + "why": "Sincere gender essentialism about what women build, with Marissa Mayer named" + }, + { + "episode": 4, + "ts": 4082, + "ti": 5, + "quote": "Take it from a Jihad Jeremy, a guy who wants to destroy the infidels of the western world... just the UK, that's a nice size, manageable terror target.", + "why": "terrorism reframed as running gag through a satirical character" + }, + { + "episode": 4, + "ts": 4176, + "ti": 5, + "quote": "If you're a lady, oh, you better stay away from the school, because I'll blow it up, I will do that.", + "why": "school-bombing punchline inside the ironic jihadist bit" + }, + { + "episode": 6, + "ts": 1195, + "ti": 5, + "quote": "Superman is retarded now. Krypton goes from super to special in an all-new relaunch.", + "why": "Sustained disability-slur punchlines in the satire bit" + }, + { + "episode": 6, + "ts": 1327, + "ti": 5, + "quote": "In the all-new mobile game... it's finally revealed that Dr. Robotnik is an autism.", + "why": "Deliberately mangled grammar weaponizing autism for laughs" + }, + { + "episode": 6, + "ts": 4390, + "ti": 5, + "quote": "My mom is very beautiful and stays fit, but she's also a very sweet woman so she'd probably be an excellent lover.", + "why": "Incest hypothetical played fully for shock comedy" + }, + { + "episode": 361, + "ts": 571, + "ti": 5, + "quote": "They're to black people what black people are to white people, as far as sacred cows go.", + "why": "group-hierarchy comparison about trans people played for provocation" + }, + { + "episode": 361, + "ts": 5448, + "ti": 5, + "quote": "Trick question. They're all child porn, Dick.", + "why": "caller punchline joking through the cub-art proportion grid" + }, + { + "episode": 362, + "ts": 1397, + "ti": 5, + "quote": "I'd go back in time and rape him as a kid. And then I'd go forward in time and say, I raped you and turned you into a pedophile.", + "why": "Graphic child-rape premise embedded in the pedophile-punishment escalation bit" + }, + { + "episode": 362, + "ts": 4483, + "ti": 5, + "quote": "Just like spirituality is not like a big deal to people. Apparently even in shitholes they experience a similar thing with their version of Christianity for dumb people, aka Islam.", + "why": "Dehumanizing generalization about a religion played for laughs" + }, + { + "episode": 362, + "ts": 6305, + "ti": 5, + "quote": "His beard is probably just compensation for being such a fucking cry baby. Acting like he's fucking Emmett Till because I reviewed his [comic].", + "why": "Invokes a lynching victim's name to belittle a rival's grievance" + }, + { + "episode": 370, + "ts": 245, + "ti": 5, + "quote": "God, you've unshackled the chains and somehow made your way here from the Empire State. Here's our passports. Please don't eat us.", + "why": "Slavery-referencing racist caricature of a Black TSA agent played for laughs" + }, + { + "episode": 370, + "ts": 218, + "ti": 5, + "quote": "Because black women can only speak into a speaker phone. So whenever they're shouting in public, even if they don't have a phone... they still have their hand cupped like this.", + "why": "Sustained dehumanizing racial stereotype as a recurring bit" + }, + { + "episode": 370, + "ts": 5462, + "ti": 5, + "quote": "We've got a Supergirl costume this season and we've got a sex tape of her and I... we're just gonna do that rape scene.", + "why": "Casual plan to recreate a rape scene as commercial parody porn" + }, + { + "episode": 370, + "ts": 5995, + "ti": 5, + "quote": "Grab the guy as he was going door to door and proceeded to tar and feather him. The screams were very audible from three streets down.", + "why": "Relished retelling of vigilante torture of a BBC license agent, endorsed as justified" + }, + { + "episode": 370, + "ts": 7066, + "ti": 5, + "quote": "You could probably stick two dicks in this talking belly button that this one has.", + "why": "Extreme degrading body mockery of a fat woman in the Fat Watch segment" + }, + { + "episode": 370, + "ts": 7362, + "ti": 5, + "quote": "Am I not the only one to tranquilize this hippo? What the fuck? That's a lady?", + "why": "Dehumanizing animal comparison as the Fat Watch centerpiece" + }, + { + "episode": 373, + "ts": 2201.0, + "ti": 5, + "quote": "I'm calling it Proposition 69, blow jobs for the homeless.", + "why": "Dehumanizing homeless-targeted gag masking violent fire-hose fantasy." + }, + { + "episode": 373, + "ts": 3211.0, + "ti": 5, + "quote": "The only good refugees that should be working on our space program are Nazi scientists.", + "why": "Ironically delivered Nazi-praise jab at DOJ refugee policy." + }, + { + "episode": 373, + "ts": 4348.0, + "ti": 5, + "quote": "It's called trans versus homeless. We're letting all the trans people work out their aggression on the homeless, full commuted sentence.", + "why": "Group-vs-group cruelty bit played straight-faced." + }, + { + "episode": 373, + "ts": 6424.0, + "ti": 5, + "quote": "You should take 100% revenge on the people that have wronged you in every possible way that you can.", + "why": "Sincere-sounding retaliation doctrine encouraging escalation." + }, + { + "episode": 373, + "ts": 12443.0, + "ti": 5, + "quote": "And I promise you that I have infinite energy for fighting retards.", + "why": "Slur-laden mission statement summarizing the show's adversarial ethos." + }, + { + "episode": 1, + "ts": 3072, + "ti": 4, + "quote": "It's gonna be exposed rebar, and it's gonna be toilets that you have to launch your piss across like Evil Knieval.", + "why": "Sustained nationality stereotyping fused with wall politics and toilet crudeness." + }, + { + "episode": 1, + "ts": 3404, + "ti": 4, + "quote": "I was sexually assaulted in Mexico as well... By a burro. ...By a large woman. You wouldn't be hearing about it if it was not a large woman.", + "why": "Sexual assault framed as punchline plus a fat joke at the unnamed assailant." + }, + { + "episode": 1, + "ts": 3620, + "ti": 4, + "quote": "You were too drunk to consent. That's what I'm saying.", + "why": "Consent dynamics batted around as comedy between host and guest." + }, + { + "episode": 2, + "ts": 458, + "ti": 4, + "quote": "When some fucktard shoots up a club like that, that's an atrocity.", + "why": "Slur plus flippant framing of a fresh mass shooting" + }, + { + "episode": 2, + "ts": 874, + "ti": 4, + "quote": "In an Islamic caliphate, I win... the only people who benefit are the oppressed, are women, are, in this case, gay men.", + "why": "Provocative identity-politics inversion of the massacre's victims" + }, + { + "episode": 3, + "ts": 507, + "ti": 4, + "quote": "By the way, when I say Islam, how tight does your asshole get?", + "why": "Crude sexual framing of the taboo-topic threshold, opening the sincere religion segment" + }, + { + "episode": 4, + "ts": 1107, + "ti": 4, + "quote": "It is you sexually assaulted someone, which I did not... or that you're stealing money. Those are the two things that someone could not recover from personally or professionally.", + "why": "explicitly enumerates reputational worst cases amid the feud" + }, + { + "episode": 4, + "ts": 2963, + "ti": 4, + "quote": "A Muppet is kind of like a retarded person.", + "why": "casual ableist slur dropped mid-riff about Elmo" + }, + { + "episode": 5, + "ts": 848, + "ti": 4, + "quote": "This idea that evidence makes you infallible is fucking retarded to me.", + "why": "Uses the r-slur in sustained rant" + }, + { + "episode": 6, + "ts": 1113, + "ti": 4, + "quote": "Yes, it's true, Iron Man is now a woman, and she's black.", + "why": "Fake press release mocking Marvel's race-swapped relaunch" + }, + { + "episode": 6, + "ts": 2280, + "ti": 4, + "quote": "A girl said, hey, that's some faggot in a dress. And she was wearing a Frozen t-shirt. And it's like, you missed the whole subtext of Frozen.", + "why": "Quoted homophobic slur recounted from Disneyland harassment" + }, + { + "episode": 6, + "ts": 4197, + "ti": 4, + "quote": "This chick there tied me up and was slapping my tits around.", + "why": "Graphic Burning Man bondage anecdote" + }, + { + "episode": 361, + "ts": 731, + "ti": 4, + "quote": "I've never been called the N word three times.", + "why": "repeated slur referencing as centerpiece of the opening feud bit" + }, + { + "episode": 361, + "ts": 3091, + "ti": 4, + "quote": "Third Reich china wear—you gotta get that stuff off the streets.", + "why": "Nazi-paraphernalia buyback satire" + }, + { + "episode": 361, + "ts": 5938, + "ti": 4, + "quote": "Are you like a professional pedophile or something?", + "why": "deadpan accusation to furry guest during CSAM-policy segment" + }, + { + "episode": 361, + "ts": 8300, + "ti": 4, + "quote": "I thought I was gonna have a nice day celebrating my achievements and myself and I was raped.", + "why": "rape comparison joke about losing a county-fair ribbon" + }, + { + "episode": 362, + "ts": 1200, + "ti": 4, + "quote": "I'd like to hold a mystery woman in a toilet bowl and waterboard her with her face in a latrine and shout this at her.", + "why": "Casual waterboarding-torture fantasy delivered as an art-defense joke" + }, + { + "episode": 362, + "ts": 4002, + "ti": 4, + "quote": "So if we make fun of her music, maybe she'll quit eating.", + "why": "Joke about inducing an eating disorder in a named celebrity amid sustained body-shaming" + }, + { + "episode": 362, + "ts": 4144, + "ti": 4, + "quote": "So we're like a dress and not like an outfit that shoves your fat ass in everyone's face, you dumb bitch.", + "why": "Direct degrading insult at Lizzo's body and clothing choices" + }, + { + "episode": 370, + "ts": 2755, + "ti": 4, + "quote": "There's a few things that I know that I know I know... one of them is what a drug habit with momentum sounds like. You put a gun to my head, you say, what is he? I say a lot of amphetamine.", + "why": "Confident unsolicited addiction diagnosis of a named individual" + }, + { + "episode": 373, + "ts": 2534.0, + "ti": 4, + "quote": "Kill yourself, idiot.", + "why": "Flippant suicide encouragement tossed at an Eric July fan commenter." + }, + { + "episode": 373, + "ts": 3066.0, + "ti": 4, + "quote": "If Dick was raping little girls, you'd feel different about people who remain his friend.", + "why": "Quoted accusation framework around Nick Rekieta's loyalty." + }, + { + "episode": 1, + "ts": 2934, + "ti": 3, + "quote": "Sean, it's the difference between Disneyland and a child's drawing of Disneyland.", + "why": "Episode's defining coinage, mean-spirited national mockery distilled into one line." + }, + { + "episode": 1, + "ts": 3636, + "ti": 3, + "quote": "I reach up in my drunken stupor and grab her face like a bowling ball out of nowhere... I think Sam Beckett quantum leaped into me at this moment.", + "why": "Self-mythologizing pop-culture riff on the assault retelling." + } + ] + } + } +} \ No newline at end of file diff --git a/data/episodes.jsonl b/data/episodes.jsonl new file mode 100644 index 0000000..e34c827 --- /dev/null +++ b/data/episodes.jsonl @@ -0,0 +1,520 @@ +{"ep_num": 1, "title": "Episode 1 – Dick in Mexico", "pub_date": "Tue, 07 Jun 2016 09:50:06 +0000", "guid": "http://test.thedickshow.com/?p=13", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_001.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 93777920, "duration_sec": 3900, "page_link": "http://test.thedickshow.com/?p=13"} +{"ep_num": 2, "title": "Episode 2 – Dick on Fathers Day", "pub_date": "Tue, 14 Jun 2016 18:34:31 +0000", "guid": "http://dickshow.wpengine.com/?p=47", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_002.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 89753600, "duration_sec": 3717, "page_link": "http://dickshow.wpengine.com/?p=47"} +{"ep_num": 3, "title": "Episode 3 – Dick on Movies", "pub_date": "Tue, 21 Jun 2016 08:20:06 +0000", "guid": "http://dickshow.wpengine.com/?p=77", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_003.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 84285440, "duration_sec": 3413, "page_link": "http://dickshow.wpengine.com/?p=77"} +{"ep_num": 4, "title": "Episode 4 – Dick on Wrestling", "pub_date": "Tue, 28 Jun 2016 17:42:38 +0000", "guid": "http://dickshow.wpengine.com/?p=98", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_004.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 106847977, "duration_sec": 4361, "page_link": "http://dickshow.wpengine.com/?p=98"} +{"ep_num": 5, "title": "Episode 5 – Dick on Sex Robots", "pub_date": "Tue, 05 Jul 2016 16:10:25 +0000", "guid": "http://dickshow.wpengine.com/?p=119", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_005.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 69068800, "duration_sec": 4204, "page_link": "http://dickshow.wpengine.com/?p=119"} +{"ep_num": 6, "title": "Episode 6 – Dick on Trans", "pub_date": "Tue, 12 Jul 2016 05:54:07 +0000", "guid": "http://dickshow.wpengine.com/?p=141", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_006.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 79632384, "duration_sec": 4904, "page_link": "http://dickshow.wpengine.com/?p=141"} +{"ep_num": 7, "title": "Episode 7 – Dick on Guns", "pub_date": "Tue, 19 Jul 2016 07:36:45 +0000", "guid": "http://dickshow.wpengine.com/?p=177", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_007.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 126272866, "duration_sec": 6255, "page_link": "http://dickshow.wpengine.com/?p=177"} +{"ep_num": 8, "title": "Episode 8 – Dick on Sean", "pub_date": "Tue, 26 Jul 2016 14:50:14 +0000", "guid": "http://dickshow.wpengine.com/?p=210", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_008.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 97463256, "duration_sec": 6066, "page_link": "http://dickshow.wpengine.com/?p=210"} +{"ep_num": 9, "title": "Episode 9 – Dick on the DNC", "pub_date": "Tue, 02 Aug 2016 16:09:27 +0000", "guid": "http://dickshow.wpengine.com/?p=224", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_009.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 69296128, "duration_sec": 4280, "page_link": "http://dickshow.wpengine.com/?p=224"} +{"ep_num": 10, "title": "Episode 10 – Dick on The Olympics", "pub_date": "Tue, 09 Aug 2016 08:50:13 +0000", "guid": "http://dickshow.wpengine.com/?p=244", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_010.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 94254148, "duration_sec": 5882, "page_link": "http://dickshow.wpengine.com/?p=244"} +{"ep_num": 11, "title": "Episode 11 – Dick on Magic", "pub_date": "Tue, 16 Aug 2016 14:42:47 +0000", "guid": "http://dickshow.wpengine.com/?p=264", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_011.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 89808047, "duration_sec": 5583, "page_link": "http://dickshow.wpengine.com/?p=264"} +{"ep_num": 12, "title": "Episode 12 – Dick on Hunks", "pub_date": "Tue, 23 Aug 2016 16:29:51 +0000", "guid": "http://dickshow.wpengine.com/?p=277", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_012.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 86184836, "duration_sec": 5351, "page_link": "http://dickshow.wpengine.com/?p=277"} +{"ep_num": 13, "title": "Episode 13 – Dick on Fat Rock", "pub_date": "Tue, 30 Aug 2016 16:00:00 +0000", "guid": "http://dickshow.wpengine.com/?p=287", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The20Dick20Show20013.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 91218480, "duration_sec": 5682, "page_link": "http://dickshow.wpengine.com/?p=287"} +{"ep_num": 14, "title": "Episode 14 – Dick on Drugs", "pub_date": "Tue, 06 Sep 2016 21:20:36 +0000", "guid": "http://dickshow.wpengine.com/?p=298", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_014.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 59367545, "duration_sec": 3685, "page_link": "http://dickshow.wpengine.com/?p=298"} +{"ep_num": 15, "title": "Episode 15 – Dick on Bill Burr", "pub_date": "Tue, 13 Sep 2016 09:08:12 +0000", "guid": "http://dickshow.wpengine.com/?p=311", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_015.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 89343834, "duration_sec": 5560, "page_link": "http://dickshow.wpengine.com/?p=311"} +{"ep_num": 16, "title": "Episode 16 – Dick on School", "pub_date": "Tue, 20 Sep 2016 13:27:55 +0000", "guid": "http://thedickshow.com/?p=341", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_016.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 93570818, "duration_sec": 5802, "page_link": "http://thedickshow.com/?p=341"} +{"ep_num": 17, "title": "Episode 17 – Dick on Clegg", "pub_date": "Tue, 27 Sep 2016 15:57:03 +0000", "guid": "http://thedickshow.com/?p=354", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_017.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 106600097, "duration_sec": 6661, "page_link": "http://thedickshow.com/?p=354"} +{"ep_num": 18, "title": "Episode 18 – Dick on Maddox", "pub_date": "Mon, 03 Oct 2016 05:24:20 +0000", "guid": "http://thedickshow.com/?p=363", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The20Dick20Show20018.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 109071269, "duration_sec": 6777, "page_link": "http://thedickshow.com/?p=363"} +{"ep_num": 19, "title": "Episode 19 – Dick on San Francisco", "pub_date": "Tue, 11 Oct 2016 08:45:46 +0000", "guid": "http://thedickshow.com/?p=370", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_019.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 97180926, "duration_sec": 6073, "page_link": "http://thedickshow.com/?p=370"} +{"ep_num": 20, "title": "Episode 20 – Dick on Cernovich", "pub_date": "Tue, 18 Oct 2016 04:33:19 +0000", "guid": "http://thedickshow.com/?p=378", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_020.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 97298781, "duration_sec": 6079, "page_link": "http://thedickshow.com/?p=378"} +{"ep_num": 21, "title": "Episode 21 – Dick on Asterios", "pub_date": "Tue, 25 Oct 2016 15:37:02 +0000", "guid": "http://thedickshow.com/?p=387", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_021.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 119493670, "duration_sec": 7422, "page_link": "http://thedickshow.com/?p=387"} +{"ep_num": 22, "title": "Episode 22 – Dick on Voting", "pub_date": "Tue, 01 Nov 2016 14:55:38 +0000", "guid": "http://thedickshow.com/?p=421", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_022.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 156238851, "duration_sec": 9763, "page_link": "http://thedickshow.com/?p=421"} +{"ep_num": 23, "title": "Episode 23 – Dick on Results", "pub_date": "Tue, 08 Nov 2016 14:38:57 +0000", "guid": "http://thedickshow.com/?p=435", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_023.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 111783318, "duration_sec": 6983, "page_link": "http://thedickshow.com/?p=435"} +{"ep_num": 24, "title": "Episode 24 – Dick on Gloating", "pub_date": "Tue, 15 Nov 2016 06:21:29 +0000", "guid": "http://thedickshow.com/?p=447", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_024.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 106036843, "duration_sec": 4417, "page_link": "http://thedickshow.com/?p=447"} +{"ep_num": 25, "title": "Episode 25 – Dick on One Million Downloads", "pub_date": "Tue, 22 Nov 2016 06:52:43 +0000", "guid": "http://thedickshow.com/?p=464", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_025.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 78000125, "duration_sec": 4873, "page_link": "http://thedickshow.com/?p=464"} +{"ep_num": 26, "title": "Episode 26 – Dick on Santa", "pub_date": "Tue, 29 Nov 2016 06:58:16 +0000", "guid": "http://thedickshow.com/?p=493", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_026.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 99120314, "duration_sec": 6194, "page_link": "http://thedickshow.com/?p=493"} +{"ep_num": 27, "title": "Episode 27 – Dick on Moving", "pub_date": "Tue, 06 Dec 2016 05:54:10 +0000", "guid": "http://thedickshow.com/?p=499", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_027.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 87602204, "duration_sec": 5473, "page_link": "http://thedickshow.com/?p=499"} +{"ep_num": 28, "title": "Episode 28 – Dick on The Toilet", "pub_date": "Tue, 13 Dec 2016 08:36:10 +0000", "guid": "http://thedickshow.com/?p=519", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_028.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 97183902, "duration_sec": 6073, "page_link": "http://thedickshow.com/?p=519"} +{"ep_num": 29, "title": "Episode 29 – Dick on World Peace", "pub_date": "Tue, 20 Dec 2016 09:10:25 +0000", "guid": "http://thedickshow.com/?p=528", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_029.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 117664423, "duration_sec": 7352, "page_link": "http://thedickshow.com/?p=528"} +{"ep_num": 30, "title": "Episode 30 – Dick on Ruining Christmas", "pub_date": "Tue, 27 Dec 2016 15:08:49 +0000", "guid": "http://thedickshow.com/?p=541", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_030.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 62301958, "duration_sec": 3893, "page_link": "http://thedickshow.com/?p=541"} +{"ep_num": 31, "title": "Episode 31 – Dick on Dreams", "pub_date": "Tue, 03 Jan 2017 07:20:28 +0000", "guid": "http://thedickshow.com/?p=555", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_031.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 103184036, "duration_sec": 6448, "page_link": "http://thedickshow.com/?p=555"} +{"ep_num": 32, "title": "Episode 32 – Dick on Accidental Pornography", "pub_date": "Tue, 10 Jan 2017 08:12:11 +0000", "guid": "http://thedickshow.com/?p=587", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_032.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 105480031, "duration_sec": 6591, "page_link": "http://thedickshow.com/?p=587"} +{"ep_num": 33, "title": "Episode 33 – Dick on Shaved Ice", "pub_date": "Tue, 17 Jan 2017 08:19:46 +0000", "guid": "http://thedickshow.com/?p=598", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_033.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 134924010, "duration_sec": 8431, "page_link": "http://thedickshow.com/?p=598"} +{"ep_num": 34, "title": "Episode 34 – Dick on Credit Card Chips", "pub_date": "Tue, 24 Jan 2017 06:44:26 +0000", "guid": "http://thedickshow.com/?p=610", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_034.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 126619535, "duration_sec": 7913, "page_link": "http://thedickshow.com/?p=610"} +{"ep_num": 35, "title": "Episode 35 – Dick on Peach", "pub_date": "Tue, 31 Jan 2017 14:49:51 +0000", "guid": "http://thedickshow.com/?p=625", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_035.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 120289869, "duration_sec": 7517, "page_link": "http://thedickshow.com/?p=625"} +{"ep_num": 36, "title": "Episode 36 – Dick on Cables", "pub_date": "Tue, 07 Feb 2017 07:11:54 +0000", "guid": "http://thedickshow.com/?p=639", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_036.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 140576572, "duration_sec": 8703, "page_link": "http://thedickshow.com/?p=639"} +{"ep_num": 37, "title": "Episode 37 – Dick on Skating", "pub_date": "Mon, 13 Feb 2017 19:23:14 +0000", "guid": "http://thedickshow.com/?p=649", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_037.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 91413460, "duration_sec": 5712, "page_link": "http://thedickshow.com/?p=649"} +{"ep_num": 38, "title": "Episode 38 – Dick on Harmful Opinions", "pub_date": "Tue, 21 Feb 2017 06:50:10 +0000", "guid": "http://thedickshow.com/?p=666", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_038.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 131661172, "duration_sec": 8169, "page_link": "http://thedickshow.com/?p=666"} +{"ep_num": 39, "title": "Episode 39 – Dick on Santa Cuck", "pub_date": "Tue, 28 Feb 2017 07:47:09 +0000", "guid": "http://thedickshow.com/?p=677", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_039.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 114120833, "duration_sec": 7131, "page_link": "http://thedickshow.com/?p=677"} +{"ep_num": 40, "title": "Episode 40 – Dick on Women on Strike", "pub_date": "Tue, 07 Mar 2017 07:41:04 +0000", "guid": "http://thedickshow.com/?p=694", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_040.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 122597422, "duration_sec": 7543, "page_link": "http://thedickshow.com/?p=694"} +{"ep_num": 41, "title": "Episode 41 – Dick on Madcucks", "pub_date": "Tue, 14 Mar 2017 06:54:40 +0000", "guid": "http://thedickshow.com/?p=706", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_041.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 112770026, "duration_sec": 7047, "page_link": "http://thedickshow.com/?p=706"} +{"ep_num": 42, "title": "Episode 42 – Dick on Timeout", "pub_date": "Tue, 21 Mar 2017 09:17:35 +0000", "guid": "http://thedickshow.com/?p=718", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_042.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 108498491, "duration_sec": 6743, "page_link": "http://thedickshow.com/?p=718"} +{"ep_num": 43, "title": "Episode 43 – Dick on Pranks", "pub_date": "Tue, 28 Mar 2017 06:29:28 +0000", "guid": "http://thedickshow.com/?p=730", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_043.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 125332927, "duration_sec": 7832, "page_link": "http://thedickshow.com/?p=730"} +{"ep_num": 44, "title": "Episode 44 – Dick on Talent Shows", "pub_date": "Tue, 04 Apr 2017 15:35:54 +0000", "guid": "http://thedickshow.com/?p=741", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_044.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 106167964, "duration_sec": 6635, "page_link": "http://thedickshow.com/?p=741"} +{"ep_num": 45, "title": "Episode 45 - Dick on Opening Day", "pub_date": "Tue, 11 Apr 2017 02:54:12 +0000", "guid": "5b52d132e687add03c1e78fb35ef0af7", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_045.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 105923298, "duration_sec": 6591, "page_link": "http://dick.show/episode-45/"} +{"ep_num": 46, "title": "Episode 46 - Dick on Camping", "pub_date": "Tue, 18 Apr 2017 05:00:00 +0000", "guid": "110c9411700bfdd3875d7886610a4e3c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_046.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 92469066, "duration_sec": 5710, "page_link": "http://dick.show/episode-46"} +{"ep_num": 47, "title": "Episode 47 - Dick on Road Rage: Philly", "pub_date": "Tue, 25 Apr 2017 04:50:20 +0000", "guid": "17abd344c6fd1422c4c9f67d70fd90b3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_047.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 116891363, "duration_sec": 7303, "page_link": "http://dick.show/episode-47/"} +{"ep_num": 48, "title": "Episode 48 - Dick on Saving the World", "pub_date": "Tue, 02 May 2017 04:25:47 +0000", "guid": "b174c4f95123d1ddcb4f600b62236d45", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_048.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 109246283, "duration_sec": 6784, "page_link": "http://dick.show/episode-48/"} +{"ep_num": 49, "title": "Episode 49 - Dick on Interrupting", "pub_date": "Tue, 09 May 2017 03:53:18 +0000", "guid": "73db7351609354a5c9d64ebe940f934e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_049.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 129510261, "duration_sec": 8092, "page_link": "http://dick.show/episode-49/"} +{"ep_num": 50, "title": "Episode 50 - Dick on Fighting", "pub_date": "Tue, 16 May 2017 06:40:21 +0000", "guid": "255bd2969dfa7308202a3e666ec806a0", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_050.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 111449304, "duration_sec": 6964, "page_link": "http://dick.show/episode-50/"} +{"ep_num": 51, "title": "Episode 51 - Dick on Bear Spray", "pub_date": "Tue, 23 May 2017 04:22:31 +0000", "guid": "b50680f52c88fe040ba75f93e0fa7f18", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_051.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 108506370, "duration_sec": 6679, "page_link": "http://dick.show/episode-51/"} +{"ep_num": 52, "title": "Episode 52 - Dick on Waut3rgate", "pub_date": "Tue, 30 May 2017 02:53:38 +0000", "guid": "bfd3647e18d32a677c3c0574563d266c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_052.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 115834448, "duration_sec": 7210, "page_link": "http://dick.show/episode-52/"} +{"ep_num": 53, "title": "Episode 53 - Dick on Pulling Teeth", "pub_date": "Tue, 06 Jun 2017 06:09:25 +0000", "guid": "1ba1e0d4752722d6a5c1ae1afa8e2b31", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_053.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 117585091, "duration_sec": 7322, "page_link": "http://dick.show/episode-53/"} +{"ep_num": 54, "title": "Episode 54 - Dick on Graduating", "pub_date": "Tue, 13 Jun 2017 06:26:47 +0000", "guid": "c0e7c6e55f8c33462500ad4bb252ae98", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_054.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 133468335, "duration_sec": 8321, "page_link": "http://dick.show/episode-54/"} +{"ep_num": 55, "title": "Episode 55 - Dick on Court", "pub_date": "Tue, 20 Jun 2017 05:01:39 +0000", "guid": "da93d53532c9104dcfec79ce97da0837", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_055.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 124922344, "duration_sec": 7786, "page_link": "http://dick.show/episode-55/"} +{"ep_num": 56, "title": "Episode 56 - Dick on Crosswords", "pub_date": "Tue, 27 Jun 2017 09:22:55 +0000", "guid": "0676af2323734bd3b95ca0ca453b89db", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_056.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 121808151, "duration_sec": 7600, "page_link": "http://dick.show/episode-56/"} +{"ep_num": 57, "title": "Episode 57 - Dick on Ghost Guns", "pub_date": "Tue, 04 Jul 2017 02:38:47 +0000", "guid": "7fcae516a3f04d52b216bae48b380fd5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_057.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 121616705, "duration_sec": 7600, "page_link": "http://dick.show/episode-57"} +{"ep_num": 58, "title": "Episode 58 - Dick on Pumping Gas", "pub_date": "Tue, 11 Jul 2017 06:46:49 +0000", "guid": "b57f72703992cb22c6c6d16854ec7d9e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_058.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 103440871, "duration_sec": 6461, "page_link": "http://dick.show/episode-58/"} +{"ep_num": 59, "title": "Episode 59 - Dick on Souvenir Cups", "pub_date": "Tue, 18 Jul 2017 09:00:42 +0000", "guid": "af535b1f5d69ec798091d329cb91cd5e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_059.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 110244390, "duration_sec": 6767, "page_link": "http://dick.show/episode-59/"} +{"ep_num": 60, "title": "Episode 60 - Dick on Nazi Pugs", "pub_date": "Tue, 25 Jul 2017 06:11:26 +0000", "guid": "a98996ca1e3a2c1aee3de2307327c8d3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_060.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 167827193, "duration_sec": 10331, "page_link": "http://dick.show/episode-60/"} +{"ep_num": 61, "title": "Episode 61 - Dick on Mister Metokur", "pub_date": "Tue, 01 Aug 2017 11:54:34 +0000", "guid": "cc9b9e4ebf3ed13442da4f00fa9cd9a0", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_061.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 106916118, "duration_sec": 6677, "page_link": "http://dick.show/episode-61"} +{"ep_num": 62, "title": "Episode 62 - Dick on Fractions", "pub_date": "Tue, 08 Aug 2017 06:11:44 +0000", "guid": "1d0f08eced7f90e0398b0fb6b6315039", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_062.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 79945922, "duration_sec": 4995, "page_link": "http://dick.show/episode-62"} +{"ep_num": 63, "title": "Episode 63 - Dick on Fake Police", "pub_date": "Tue, 15 Aug 2017 04:10:03 +0000", "guid": "c8b0bb09ea35a01b78dcc50616178fbf", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_063.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 147974656, "duration_sec": 9171, "page_link": "http://dick.show/episode-63"} +{"ep_num": 64, "title": "Episode 64 - Dick on Platitudes", "pub_date": "Tue, 22 Aug 2017 06:25:58 +0000", "guid": "48e80d17457aeaea641954651951671c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_064.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 108386478, "duration_sec": 6742, "page_link": "http://dick.show/episode-64/"} +{"ep_num": 65, "title": "Episode 65 - Dick on Back to School", "pub_date": "Tue, 29 Aug 2017 05:23:45 +0000", "guid": "f55f1b5ba305d1cccd3ca55a00ba31b2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_065.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 139143552, "duration_sec": 8688, "page_link": "http://dick.show/episode-65"} +{"ep_num": 66, "title": "Episode 66 - Dick on False Alarms", "pub_date": "Tue, 05 Sep 2017 03:57:23 +0000", "guid": "fd2f72481365532a8eca01099d7f604f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_066.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 138891272, "duration_sec": 8430, "page_link": "http://dick.show/episode-66/"} +{"ep_num": 67, "title": "Episode 67 - Dick on The Devil", "pub_date": "Tue, 12 Sep 2017 06:30:06 +0000", "guid": "9f3194892f74e96fe2caa32fa626fe80", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_067.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 133461504, "duration_sec": 8120, "page_link": "http://dick.show/episode-67/"} +{"ep_num": 68, "title": "Episode 68 - Dick on Phony Lollers", "pub_date": "Tue, 19 Sep 2017 05:31:34 +0000", "guid": "61de054a6da4c75236b6ee86924807b1", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_068.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 154977664, "duration_sec": 9672, "page_link": "http://dick.show/episode-68"} +{"ep_num": 69, "title": "Episode 69 - Dick on Dick", "pub_date": "Tue, 26 Sep 2017 06:13:59 +0000", "guid": "37996ee3878207137ab8f46f7c4db64c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_069.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 124052736, "duration_sec": 7743, "page_link": "http://dick.show/episode-69"} +{"ep_num": 70, "title": "Episode 70 - Dick on Turning Japanese", "pub_date": "Tue, 03 Oct 2017 06:09:24 +0000", "guid": "d82a921ee2e2f355755ddf06e3fb42c1", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_070.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 150210688, "duration_sec": 9386, "page_link": "http://dick.show/episode-70/"} +{"ep_num": 71, "title": "Episode 71 - Dick on Being Toxic", "pub_date": "Tue, 10 Oct 2017 06:33:15 +0000", "guid": "ad19bafe262c488624da4d5c1c440609", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_071.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 98348800, "duration_sec": 6024, "page_link": "http://dick.show/episode-71/"} +{"ep_num": 72, "title": "Episode 72 - Dick on Road Rage: Los Angeles", "pub_date": "Tue, 17 Oct 2017 14:16:44 +0000", "guid": "c8ddf31062582a6f6d1054f3710abd2a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_072.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 131505024, "duration_sec": 8195, "page_link": "http://dick.show/episode-72"} +{"ep_num": 73, "title": "Episode 73 - Dick on F*ck Whales", "pub_date": "Tue, 24 Oct 2017 07:12:12 +0000", "guid": "2b8802a842e9587b2ff3bba67cbf1aa4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_073.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 95990912, "duration_sec": 5971, "page_link": "http://dick.show/episode-73"} +{"ep_num": 74, "title": "Episode 74 - Dick on Exile", "pub_date": "Tue, 31 Oct 2017 07:34:17 +0000", "guid": "1ae12d901bd67a789fe54beaaf069603", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_074.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 103828480, "duration_sec": 6282, "page_link": "http://dick.show/episode-74/"} +{"ep_num": 75, "title": "Episode 75 - Dick on LA Phil", "pub_date": "Tue, 07 Nov 2017 07:01:47 +0000", "guid": "0fabd87988922e77167b23a257807808", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_075.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 138980608, "duration_sec": 8685, "page_link": "http://dick.show/episode-75"} +{"ep_num": 76, "title": "Episode 76 - Dick on Bashing Women", "pub_date": "Tue, 14 Nov 2017 05:58:04 +0000", "guid": "46f6745c9ef580ab347cd4afd27d8f7c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_076.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 136331334, "duration_sec": 8484, "page_link": "http://dick.show/episode-76/"} +{"ep_num": 77, "title": "Episode 77 - Dick on Unimaginable Stress", "pub_date": "Mon, 20 Nov 2017 10:42:58 +0000", "guid": "f649488b5ebc38da060a619d32f3dcb6", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_077.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 100998784, "duration_sec": 6167, "page_link": "http://dick.show/episode-77"} +{"ep_num": 78, "title": "Episode 78 - Dick on Stealing Shows", "pub_date": "Tue, 28 Nov 2017 07:28:08 +0000", "guid": "29df556a87f0046c37e2b3f72580bf54", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_078.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 103835776, "duration_sec": 6474, "page_link": "http://dick.show/episode-78/"} +{"ep_num": 79, "title": "Episode 79 - Dick on Road Rage: Chicago", "pub_date": "Tue, 05 Dec 2017 11:12:42 +0000", "guid": "828b51e756b5580cd79358f6b4dcaa1e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_079.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 118565376, "duration_sec": 7366, "page_link": "http://dick.show/episode-79"} +{"ep_num": 80, "title": "Episode 80 - Dick on The Sounds of Spite", "pub_date": "Tue, 12 Dec 2017 05:36:55 +0000", "guid": "f91438da9c666fdaaa59892a04a5eb20", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_080.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 125223808, "duration_sec": 7800, "page_link": "http://dick.show/episode-80"} +{"ep_num": 81, "title": "Episode 81 - Dick on Eating Expenses", "pub_date": "Tue, 19 Dec 2017 07:46:04 +0000", "guid": "ca6a9ab3da8e6a2a0283a616ff79b8ad", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_081.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 142194816, "duration_sec": 8733, "page_link": "http://dick.show/episode-81"} +{"ep_num": 82, "title": "Episode 82 - Dick on Number Three in Space", "pub_date": "Sat, 23 Dec 2017 21:00:36 +0000", "guid": "c4a4af63a3204911199aeca7148b9fec", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_082.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 127717376, "duration_sec": 7909, "page_link": "http://dick.show/episode-82/"} +{"ep_num": 83, "title": "Episode 83 - Dick on Policing Language", "pub_date": "Tue, 02 Jan 2018 16:22:06 +0000", "guid": "78fa5d9798d48ed6714411ed3c24afee", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_083.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 115519488, "duration_sec": 7099, "page_link": "http://dick.show/episode-83/"} +{"ep_num": 84, "title": "Episode 84 - Dick on Nuttin", "pub_date": "Tue, 09 Jan 2018 02:11:25 +0000", "guid": "2997bccc30512ff93b478a599fc48803", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_084.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 139842304, "duration_sec": 8429, "page_link": "https://thedickshow.libsyn.com/episode-84-dick-on-nuttin"} +{"ep_num": 85, "title": "Episode 85 - Dick on Do-Overs", "pub_date": "Tue, 16 Jan 2018 08:34:43 +0000", "guid": "067c0f495dff995f77dc93b6ca8cac65", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_085.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 123757696, "duration_sec": 7573, "page_link": "http://dick.show/episode-85"} +{"ep_num": 86, "title": "Episode 86 - Dick on Dickels", "pub_date": "Tue, 23 Jan 2018 14:57:19 +0000", "guid": "e2b2a74dacc518288499b247485c1f0c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_086.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 124596224, "duration_sec": 7714, "page_link": "http://dick.show/episode-86/"} +{"ep_num": 87, "title": "Episode 87 - Dick on The Ultimate Douchebag Machine", "pub_date": "Tue, 30 Jan 2018 04:53:52 +0000", "guid": "997e5daef31ba278f11ba282fb9d9387", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_087.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 138473088, "duration_sec": 8615, "page_link": "http://dick.show/episode-87/"} +{"ep_num": 88, "title": "Episode 88 - Dick on Blue Balls", "pub_date": "Tue, 06 Feb 2018 02:00:00 +0000", "guid": "120e3bb9947d705b95053e50d515b472", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_088.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 105516032, "duration_sec": 6444, "page_link": "http://dick.show/episode-88/"} +{"ep_num": 89, "title": "Episode 89 - Dick on Getting Caught", "pub_date": "Tue, 13 Feb 2018 05:09:12 +0000", "guid": "04b1b04874583ba659541cc90290fae1", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_089.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 133572480, "duration_sec": 8283, "page_link": "http://dick.show/episode-89/"} +{"ep_num": 90, "title": "Episode 90 - Dick on The Dick Show Album", "pub_date": "Tue, 20 Feb 2018 14:45:45 +0000", "guid": "499aa390eb5d60dca366b9b5fdd4c9ca", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_090.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 144270464, "duration_sec": 8984, "page_link": "http://dick.show/episode-90"} +{"ep_num": 91, "title": "Episode 91 - Dick on Road Rage: Portland", "pub_date": "Tue, 27 Feb 2018 14:26:13 +0000", "guid": "c02af9d9563a8a2e09ddc3963e759340", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_091.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 129249280, "duration_sec": 7979, "page_link": "http://dick.show/episode-91/"} +{"ep_num": 92, "title": "Episode 92 - Dick on Suppositories", "pub_date": "Tue, 06 Mar 2018 04:54:52 +0000", "guid": "313d175afb862edc1efc4e47c03be74f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_092.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 138822528, "duration_sec": 8651, "page_link": "http://dick.show/episode-92"} +{"ep_num": 93, "title": "Episode 93 - Dick on Heather S", "pub_date": "Mon, 12 Mar 2018 19:23:02 +0000", "guid": "e59832b7761c12980cb28e4d12c20e17", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_093.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 132684544, "duration_sec": 7981, "page_link": "http://dick.show/episode-93/"} +{"ep_num": 94, "title": "Episode 94 - Dick on Doubling Down", "pub_date": "Tue, 20 Mar 2018 04:06:19 +0000", "guid": "9c42c0ab06eace63f7d325c282349063", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_094.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 132601728, "duration_sec": 8167, "page_link": "http://dick.show/episode-94/"} +{"ep_num": 95, "title": "Episode 95 - Dick on Chutzpah", "pub_date": "Tue, 27 Mar 2018 03:52:39 +0000", "guid": "f7554a25f60471ccfc0a15753bd86f09", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_095.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 126852864, "duration_sec": 7667, "page_link": "http://dick.show/episode-95/"} +{"ep_num": 96, "title": "Episode 96 - Dick on The Status Quo", "pub_date": "Tue, 03 Apr 2018 14:30:02 +0000", "guid": "e4ef013a63de0230d7a927be0270f3c5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_096.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 164860800, "duration_sec": 10279, "page_link": "http://dick.show/episode-96/"} +{"ep_num": 97, "title": "Episode 97 - Dick on Big Red", "pub_date": "Tue, 10 Apr 2018 04:10:46 +0000", "guid": "78b46353952027dab3ba781bb44caa40", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_097.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 165828096, "duration_sec": 10177, "page_link": "http://dick.show/episode-97/"} +{"ep_num": 98, "title": "Episode 98 - Dick on The Trademark", "pub_date": "Tue, 17 Apr 2018 03:18:10 +0000", "guid": "adece504c6387d1ca90ee3d1d69b8ca5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_098.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 149839744, "duration_sec": 9262, "page_link": "http://dick.show/episode-98/"} +{"ep_num": 99, "title": "Episode 99 - Dick on Happy Accidents", "pub_date": "Tue, 24 Apr 2018 05:38:34 +0000", "guid": "d9c6f623962a6b4597d4a7a2010fc1f7", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_099.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 160874112, "duration_sec": 9994, "page_link": "http://dick.show/episode-99/"} +{"ep_num": 100, "title": "Episode 100 - Dick on Keeping it 100", "pub_date": "Tue, 01 May 2018 08:03:04 +0000", "guid": "e71ab3c8c295b8fb38b23d2b56999049", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_100.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 165810432, "duration_sec": 10273, "page_link": "http://dick.show/episode-100"} +{"ep_num": 101, "title": "Episode 101 - Dick on Supreme Gentlemen", "pub_date": "Tue, 08 May 2018 04:58:24 +0000", "guid": "1313051e746b6b495aab755e3429df5d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_101.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 131037568, "duration_sec": 8119, "page_link": "http://dick.show/episode-101"} +{"ep_num": 102, "title": "Episode 102 - Dick on Birthday Overhead", "pub_date": "Sun, 13 May 2018 15:14:08 +0000", "guid": "921afec70a2c970e6f2599ec3244a820", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_102.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 149077120, "duration_sec": 9302, "page_link": "https://thedickshow.libsyn.com/episode-102-dick-on-birthday-overhead"} +{"ep_num": 103, "title": "Episode 103 - Dick on Maddox Lost", "pub_date": "Tue, 22 May 2018 15:15:20 +0000", "guid": "91d6beee2d304547a4e525c151414ac3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_103.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 130898048, "duration_sec": 7881, "page_link": "http://dick.show/episode-103/"} +{"ep_num": 104, "title": "Episode 104 - Dick on Damages", "pub_date": "Tue, 29 May 2018 02:06:19 +0000", "guid": "687e951e49d449128de6cbaced5b7f92", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_104.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 139906688, "duration_sec": 8730, "page_link": "https://thedickshow.libsyn.com/episode-104-dick-on-damages"} +{"ep_num": 105, "title": "Episode 105 - Dick on Caught Cheating", "pub_date": "Tue, 05 Jun 2018 02:28:04 +0000", "guid": "fa837e4dc406480883fae9fe4cf8d6fb", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_105.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 117306368, "duration_sec": 7234, "page_link": "http://dick.show/episode-105/"} +{"ep_num": 106, "title": "Episode 106 - Dick on Going to Greenland", "pub_date": "Tue, 12 Jun 2018 06:31:56 +0000", "guid": "7f4dd2f85a2a408998b464b6e39945d4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_106.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 175019008, "duration_sec": 10776, "page_link": "http://dick.show/episode-106/"} +{"ep_num": 107, "title": "Episode 107 - Dick on Milking Dad", "pub_date": "Tue, 19 Jun 2018 06:04:38 +0000", "guid": "d9d1a9a687b940778f2de462b659d0ec", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_107.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 135781376, "duration_sec": 8462, "page_link": "http://dick.show/episode-107/"} +{"ep_num": 108, "title": "Episode 108 - Dick on The Sean Show", "pub_date": "Wed, 27 Jun 2018 03:59:00 +0000", "guid": "124b64ef21d14e6885019ee19a867fff", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_108.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 154837602, "duration_sec": 9626, "page_link": "http://dick.show/episode-108"} +{"ep_num": 109, "title": "Episode 109 - Dick on Road Rage: Dallas", "pub_date": "Tue, 03 Jul 2018 06:55:03 +0000", "guid": "a92aa087dd024332b196bdf19c193f94", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_109.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 120548352, "duration_sec": 7513, "page_link": "https://thedickshow.libsyn.com/episode-109-dick-on-road-rage-dallas"} +{"ep_num": 110, "title": "Episode 110 - Dick on Avoiding Holes", "pub_date": "Tue, 10 Jul 2018 03:41:48 +0000", "guid": "1f2518d085134b68a9c7c9c9200b3f69", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_110.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 128205952, "duration_sec": 7969, "page_link": "https://thedickshow.libsyn.com/episode-110-dick-on-avoiding-holes"} +{"ep_num": 111, "title": "Episode 111 - Dick on Moon Lasers", "pub_date": "Tue, 17 Jul 2018 08:02:47 +0000", "guid": "e9ebe73c6da348f9bd0e4225b9592360", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_111.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 130805248, "duration_sec": 8143, "page_link": "http://dick.show/episode-111/"} +{"ep_num": 112, "title": "Episode 112 - Dick on The Bride Catcher", "pub_date": "Tue, 24 Jul 2018 06:43:11 +0000", "guid": "0c25afe01b5a474da78da5541440d672", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_112.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 131859200, "duration_sec": 7934, "page_link": "http://dick.show/episode-112/"} +{"ep_num": 113, "title": "Episode 113 - Dick on Green Eggs and Body Dysmorphia", "pub_date": "Tue, 31 Jul 2018 05:16:42 +0000", "guid": "f2852deb5afa4cf5aeb18ddc3da907e7", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_113.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 119328384, "duration_sec": 7379, "page_link": "http://dick.show/episode-113/"} +{"ep_num": 114, "title": "Episode 114 - Dick on Road Rage: Atlanta", "pub_date": "Tue, 07 Aug 2018 13:09:49 +0000", "guid": "5eee9aabe218487abd9958529028ffa9", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_114.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 103117824, "duration_sec": 6395, "page_link": "http://dick.show/episode-114"} +{"ep_num": 115, "title": "Episode 115 - Dick on The Bro Economy", "pub_date": "Tue, 14 Aug 2018 14:21:04 +0000", "guid": "8241c9e9ac9d4dfda6f814eaf7e7a99c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_115.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 143764480, "duration_sec": 8968, "page_link": "http://dick.show/episode-115"} +{"ep_num": 116, "title": "Episode 116 - Dick on The Stolen RSS Feed", "pub_date": "Tue, 21 Aug 2018 06:41:57 +0000", "guid": "9a56b483e82846eda276305a1398d7ea", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_116.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 139451520, "duration_sec": 8679, "page_link": "http://dick.show/episode-116"} +{"ep_num": 117, "title": "Episode 117 - Dick on Memory Rot", "pub_date": "Tue, 28 Aug 2018 06:44:14 +0000", "guid": "c7631234b0ac4d0792ddba7df60608c3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_117.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 138111360, "duration_sec": 8545, "page_link": "http://dick.show/episode-117/"} +{"ep_num": 118, "title": "Episode 118 - Dick on Paying Maddox's Rent", "pub_date": "Tue, 04 Sep 2018 13:36:40 +0000", "guid": "6ab69f2a484d4cbfb2dcd08c38560580", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_118.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 156133376, "duration_sec": 9710, "page_link": "http://dick.show/episode-118/"} +{"ep_num": 119, "title": "Episode 119 - Dick on Nachos on Dick", "pub_date": "Tue, 11 Sep 2018 05:25:37 +0000", "guid": "652fbf2f40674013bb17144738ed49f6", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_119.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 152287360, "duration_sec": 9442, "page_link": "http://dick.show/episode-119/"} +{"ep_num": 120, "title": "Episode 120 - Dick on Earthworm Jim", "pub_date": "Tue, 18 Sep 2018 06:37:55 +0000", "guid": "4c986cc175e7466283157cac608e47e9", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_120.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 144657408, "duration_sec": 9018, "page_link": "http://dick.show/episode-120/"} +{"ep_num": 121, "title": "Episode 121 - Dick on Unintended Consequences", "pub_date": "Tue, 25 Sep 2018 14:45:26 +0000", "guid": "5aa9fd21225e4a4d9e6e1b9a9c3829b7", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_121.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 137366784, "duration_sec": 8450, "page_link": "http://dick.show/episode-121/"} +{"ep_num": 122, "title": "Episode 122 - Dick on The Mustard Song", "pub_date": "Tue, 02 Oct 2018 06:05:46 +0000", "guid": "11d89930dcb44554bd29203d7382c0df", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_122.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 165910784, "duration_sec": 10228, "page_link": "http://dick.show/episode-122"} +{"ep_num": 123, "title": "Episode 123 - Dick on Getting the Band Back Together", "pub_date": "Tue, 09 Oct 2018 06:30:46 +0000", "guid": "38bfd63b25134f0682a368e6eb327138", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_123.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 161344000, "duration_sec": 10038, "page_link": "http://dick.show/episode-123/"} +{"ep_num": 124, "title": "Episode 124 - Dick on Proper Grooming", "pub_date": "Tue, 16 Oct 2018 06:29:45 +0000", "guid": "19fc885f60a44a55b572d91f23f839c2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_124.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 160750208, "duration_sec": 9908, "page_link": "http://dick.show/episode-124/"} +{"ep_num": 125, "title": "Episode 125 - Dick on Lengthening", "pub_date": "Tue, 23 Oct 2018 06:57:39 +0000", "guid": "2a098d6bd305494fb629164422ca2de1", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_125.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 156199552, "duration_sec": 9630, "page_link": "http://dick.show/episode-125"} +{"ep_num": 126, "title": "Episode 126 - Dick on Staying off the Internet", "pub_date": "Tue, 30 Oct 2018 08:23:33 +0000", "guid": "354616e4a29448a195d4a40be675e70a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_126.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 173432576, "duration_sec": 10756, "page_link": "http://dick.show/episode-126/"} +{"ep_num": 127, "title": "Episode 127 - Dick on Killing Kids", "pub_date": "Tue, 06 Nov 2018 14:15:31 +0000", "guid": "91799a8a370044b4a0543f20351767be", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_127.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 133277568, "duration_sec": 8289, "page_link": "http://dick.show/episode-127"} +{"ep_num": 128, "title": "Episode 128 - Dick on Bigger Balls", "pub_date": "Tue, 13 Nov 2018 06:40:16 +0000", "guid": "af743ca59df84e578adaf24703c10d0b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_128.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 149351808, "duration_sec": 9306, "page_link": "http://dick.show/episode-128/"} +{"ep_num": 129, "title": "Episode 129 - Dick on The Crying Game", "pub_date": "Tue, 20 Nov 2018 07:56:16 +0000", "guid": "4c2a26bbc5ba4d84977edfc1fc78ff2e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_129.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 271246998, "duration_sec": 11248, "page_link": "http://dick.show/episode-129"} +{"ep_num": 130, "title": "Episode 130 - Dick on Taxing Women", "pub_date": "Tue, 27 Nov 2018 07:29:19 +0000", "guid": "80327b2ca1d14bf7ac550eb01d634892", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_130.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 131370112, "duration_sec": 8103, "page_link": "http://dick.show/episode-130"} +{"ep_num": 131, "title": "Episode 131 - Dick on The Last Minute Rush", "pub_date": "Tue, 04 Dec 2018 05:39:51 +0000", "guid": "60efc7b320f44a49b53a50fda576ccd7", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_131.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 162200960, "duration_sec": 9994, "page_link": "http://dick.show/episode-131"} +{"ep_num": 132, "title": "Episode 132 - Dick on Deplatforming Jesus", "pub_date": "Tue, 11 Dec 2018 08:31:11 +0000", "guid": "e0d7e2e03c974b7e993b18fc8a08dc8c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_132.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 168248064, "duration_sec": 10467, "page_link": "http://dick.show/episode-132"} +{"ep_num": 133, "title": "Episode 133 - Dick on Underwater Hamsters", "pub_date": "Tue, 18 Dec 2018 09:24:20 +0000", "guid": "bf89a244b6604b189282526b271c0daa", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_133.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 137062400, "duration_sec": 8555, "page_link": "http://dick.show/episode-133"} +{"ep_num": 134, "title": "Episode 134 - Dick on Revenge of the Apostrophe", "pub_date": "Tue, 25 Dec 2018 05:50:40 +0000", "guid": "22d7eaede36e4af3a0075520fa682087", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_134.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 130932352, "duration_sec": 7924, "page_link": "http://dick.show/episode-134/"} +{"ep_num": 135, "title": "Episode 135 - Dick on The Asterios Muppet", "pub_date": "Tue, 01 Jan 2019 08:53:57 +0000", "guid": "b7413cae8648477cb9c50a4f2075594e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_135.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 136211072, "duration_sec": 8485, "page_link": "http://dick.show/episode-135/"} +{"ep_num": 136, "title": "Episode 136 - Dick on Chokepoints", "pub_date": "Mon, 07 Jan 2019 17:05:48 +0000", "guid": "d9c15b80544b4a6682518f1a1005d26d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_136.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 144392704, "duration_sec": 8980, "page_link": "http://dick.show/episode-135/"} +{"ep_num": 137, "title": "Episode 137 - Dick on Thinkery", "pub_date": "Tue, 15 Jan 2019 08:51:17 +0000", "guid": "566483afbbe7473e8aeeda54bee92e3b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_137.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 198899200, "duration_sec": 12399, "page_link": "http://dick.show/episode-137"} +{"ep_num": 138, "title": "Episode 138 - Dick on Hat Crimes", "pub_date": "Tue, 22 Jan 2019 08:30:55 +0000", "guid": "d5da9f87f5334d719da12ed4aa733707", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_138.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 203704960, "duration_sec": 12695, "page_link": "http://dick.show/episode-138/"} +{"ep_num": 139, "title": "Episode 139 - Dick on Cheating Yourself", "pub_date": "Tue, 29 Jan 2019 14:04:06 +0000", "guid": "1d057574df264a2bb227924921ac636b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_139.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 143997312, "duration_sec": 8981, "page_link": "http://dick.show/episode-139"} +{"ep_num": 140, "title": "Episode 140 - Dick on The Devil's Rectangle", "pub_date": "Tue, 05 Feb 2019 08:31:52 +0000", "guid": "4fcbff377c02447a9458c909e1431163", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_140.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 149094784, "duration_sec": 9242, "page_link": "http://dick.show/episode-140/"} +{"ep_num": 141, "title": "Episode 141 - Dick on Learning to Code", "pub_date": "Tue, 12 Feb 2019 07:47:54 +0000", "guid": "5219a65512a841ecac45b0caf00ad6c3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_141.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 161149184, "duration_sec": 10050, "page_link": "https://dick.show/episode-141/"} +{"ep_num": 142, "title": "Episode 142 - Dick on The Butt Conspiracy", "pub_date": "Tue, 19 Feb 2019 06:39:23 +0000", "guid": "aabbf740894f437cb9543921c5db5c6d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_142.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 166392576, "duration_sec": 10350, "page_link": "https://dick.show/episode-142"} +{"ep_num": 143, "title": "Episode 143 - Dick on Wet Jeans", "pub_date": "Tue, 26 Feb 2019 06:44:52 +0000", "guid": "1d0788904a8040419b50112cc8d28fa4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_143.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 141341056, "duration_sec": 8793, "page_link": "http://dick.show/episode-143"} +{"ep_num": 144, "title": "Episode 144 - Dick on War Porn", "pub_date": "Tue, 05 Mar 2019 07:41:13 +0000", "guid": "6cc98934cc6643a4890c74249d17bc07", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_144.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 152339968, "duration_sec": 9482, "page_link": "http://dick.show/episode-144/"} +{"ep_num": 145, "title": "Episode 145 - Dick on Kicking Up a Stink", "pub_date": "Tue, 12 Mar 2019 07:50:16 +0000", "guid": "5f89412f31174ae9be93246cbb8935be", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_145.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 155780992, "duration_sec": 9653, "page_link": "http://dick.show/episode-145/"} +{"ep_num": 146, "title": "Episode 146 - Dick on Tickle Day", "pub_date": "Tue, 19 Mar 2019 05:59:14 +0000", "guid": "7845757bb87d42c9bbf55c5077f2b43d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_146.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 137892096, "duration_sec": 8597, "page_link": "http://dick.show/episode-146/"} +{"ep_num": 147, "title": "Episode 147 - Dick on The ISS", "pub_date": "Tue, 26 Mar 2019 06:03:52 +0000", "guid": "07dc17ccc602490e9009d77c6480dde3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_147.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 180572672, "duration_sec": 11266, "page_link": "http://dick.show/episode-147"} +{"ep_num": 148, "title": "Episode 148 - Dick on Short Straws", "pub_date": "Tue, 02 Apr 2019 07:13:58 +0000", "guid": "696bc8aff2e348499a78b3ec28eacc1c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_148.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 122378240, "duration_sec": 7475, "page_link": "http://dick.show/episode-148"} +{"ep_num": 149, "title": "Episode 149 - Dick on Meat Dreams", "pub_date": "Tue, 09 Apr 2019 06:57:35 +0000", "guid": "af2ad524e3a244bdaeaac8b3ae9d3f52", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_149.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 126855040, "duration_sec": 7881, "page_link": "Http://dick.show/episode-149/"} +{"ep_num": 150, "title": "Episode 150 - Dick on Bad Assumptions", "pub_date": "Tue, 16 Apr 2019 14:24:41 +0000", "guid": "7f770148f0cb4d179c639fa961f8303c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_150.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 298744987, "duration_sec": 9261, "page_link": "http://dick.show/episode-150"} +{"ep_num": 151, "title": "Episode 151 - Dick on Life Subscriptions", "pub_date": "Wed, 24 Apr 2019 03:59:00 +0000", "guid": "650fe2dcd4424931b02e2bc5624065c9", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_151.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 111238144, "duration_sec": 6942, "page_link": "http://dick.show/episode-151/"} +{"ep_num": 152, "title": "Episode 152 - Dick on a Mission from God", "pub_date": "Tue, 30 Apr 2019 05:50:10 +0000", "guid": "593aa7b414d64c3380354b97ba973506", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_152.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 154020096, "duration_sec": 9588, "page_link": "http://dick.show/episode-152/"} +{"ep_num": 153, "title": "Episode 153 - Dick on Bad Reviews", "pub_date": "Tue, 07 May 2019 07:32:21 +0000", "guid": "28f71a197ad74baaa92b36a04ee6d7df", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_153.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 167959296, "duration_sec": 10480, "page_link": "http://dick.show/episode-153"} +{"ep_num": 154, "title": "Episode 154 - Dick on a Fat Load of Good", "pub_date": "Tue, 14 May 2019 07:49:32 +0000", "guid": "fdf0f95554ed443995eb1b1572d29178", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_154.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 142693376, "duration_sec": 8732, "page_link": "https://dick.show/episode-154"} +{"ep_num": 155, "title": "Episode 155 - Dick on Five Years in Podcasting", "pub_date": "Mon, 20 May 2019 14:57:38 +0000", "guid": "04ca188cd79f45ec9bdd189cd542649a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_155.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 214763426, "duration_sec": 13330, "page_link": "http://dick.show/episode-155"} +{"ep_num": 156, "title": "Episode 156 - Dick on Being Fair", "pub_date": "Tue, 28 May 2019 06:14:38 +0000", "guid": "0118cc898b354dc68b68b759fda11e88", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_156.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 144014592, "duration_sec": 8980, "page_link": "http://dick.show/episode-156/"} +{"ep_num": 157, "title": "Episode 157 - Dick on Maddox's Debt", "pub_date": "Tue, 04 Jun 2019 14:37:56 +0000", "guid": "854225c44549455db2b2bdf56e9bd4f8", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_157.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 162474240, "duration_sec": 10044, "page_link": "https://dick.show/episode-157"} +{"ep_num": 158, "title": "Episode 158 - Dick on Derailment", "pub_date": "Tue, 11 Jun 2019 07:01:43 +0000", "guid": "56246071c05748ad8c96e849e8933e6f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_158.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 219019234, "duration_sec": 9070, "page_link": "https://dick.show/episode-158/"} +{"ep_num": 159, "title": "Episode 159 - Dick on Gunplay", "pub_date": "Tue, 18 Jun 2019 01:59:11 +0000", "guid": "52bdb2f2c23740eaad5eec8e68cd2e79", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_159.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 148046208, "duration_sec": 9111, "page_link": "https://dick.show/episode-159"} +{"ep_num": 160, "title": "Episode 160 - Dick on Road Rage: Las Vegas", "pub_date": "Tue, 25 Jun 2019 07:01:06 +0000", "guid": "476626ae85954eb599acd9ef35c79f47", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_160.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 141109504, "duration_sec": 8582, "page_link": "https://dick.show/episode-160"} +{"ep_num": 161, "title": "Episode 161 - Dick on The End of Shows", "pub_date": "Tue, 02 Jul 2019 05:20:07 +0000", "guid": "2e1c0bd2605d47cd9ccf25c24cd30a98", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_161.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 165422464, "duration_sec": 10226, "page_link": "https://thedickshow.libsyn.com/episode-161-dick-on-the-end-of-shows"} +{"ep_num": 162, "title": "Episode 162 - Dick on Parasites", "pub_date": "Tue, 09 Jul 2019 07:10:11 +0000", "guid": "2849b142712449c98dbe4634820a5854", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_162.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 161119232, "duration_sec": 10014, "page_link": "https://dick.show/episode-162"} +{"ep_num": 163, "title": "Episode 163 - Dick on Party Crashing", "pub_date": "Tue, 16 Jul 2019 07:15:42 +0000", "guid": "ed2b0183eb8a4ce8b6bee6187d164d2c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_163.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 191395968, "duration_sec": 11906, "page_link": "https://dick.show/episode-163"} +{"ep_num": 164, "title": "Episode 164 - Dick on Full Moons", "pub_date": "Tue, 23 Jul 2019 06:52:06 +0000", "guid": "c3b39de2faeb424f84df641dd30cb484", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_164.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 163784960, "duration_sec": 9950, "page_link": "https://dick.show/episode-164"} +{"ep_num": 165, "title": "Episode 165 - Dick on Hugging the Cactus", "pub_date": "Tue, 30 Jul 2019 07:04:54 +0000", "guid": "ff98ea2838a44708818f1f304e2e76d9", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_165.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 146181888, "duration_sec": 9065, "page_link": "https://dick.show/episode-165"} +{"ep_num": 166, "title": "Episode 166 - Dick on How to Start a Cult", "pub_date": "Tue, 06 Aug 2019 07:58:14 +0000", "guid": "ae8ca476e73e4e9688db45dbb9962afd", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_166.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 159466496, "duration_sec": 9937, "page_link": "https://dick.show/episode-166/"} +{"ep_num": 167, "title": "Episode 167 - Dick on Plot Holes", "pub_date": "Tue, 13 Aug 2019 14:44:41 +0000", "guid": "1183fd7682d94960bab82b46e65a24ec", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_167.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 158658048, "duration_sec": 9860, "page_link": "https://dick.show/episode-167"} +{"ep_num": 168, "title": "Episode 168 - Dick on Road Rage: Minneapolis", "pub_date": "Tue, 20 Aug 2019 07:06:52 +0000", "guid": "c017102dc289412eb4b235122223ebc5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_168.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 123543552, "duration_sec": 7708, "page_link": "https://dick.show/episode-168/"} +{"ep_num": 169, "title": "Episode 169 - Dick on Lost Dogs", "pub_date": "Mon, 26 Aug 2019 22:59:58 +0000", "guid": "cb5e62f8aa3c4da1918224bf2f72767e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_169.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 113084544, "duration_sec": 6840, "page_link": "https://dick.show/episode-169"} +{"ep_num": 170, "title": "Episode 170 - Dick on Losing Drugs", "pub_date": "Tue, 03 Sep 2019 15:12:53 +0000", "guid": "e3fee023fdcc4442a18766fe3b8c067e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_170.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 118378274, "duration_sec": 4827, "page_link": "https://dick.show/episode-170/"} +{"ep_num": 171, "title": "Episode 171 - Dick on The Autoblow", "pub_date": "Tue, 10 Sep 2019 00:49:53 +0000", "guid": "370680d514cb4014a6b967ce8f87df71", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_171.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 186449440, "duration_sec": 9236, "page_link": "https://dick.show/episode-171/"} +{"ep_num": 172, "title": "Episode 172 - Dick on Nude Figure Drawing", "pub_date": "Tue, 17 Sep 2019 13:27:17 +0000", "guid": "8720696fc56b4489ad6fc0f6841b45e4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_172.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 199677056, "duration_sec": 9904, "page_link": "https://dick.show/episode-172/"} +{"ep_num": 173, "title": "Episode 173 - Dick on Lost Balls", "pub_date": "Tue, 24 Sep 2019 06:49:59 +0000", "guid": "0497d6fe618e49049e7e14ad691d5876", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_173.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 183030688, "duration_sec": 9093, "page_link": "https://thedickshow.libsyn.com/episode-173-dick-on-lost-balls"} +{"ep_num": 174, "title": "Episode 174 - Dick on Credible Threats", "pub_date": "Tue, 01 Oct 2019 03:07:34 +0000", "guid": "fd717548b50344f28392985811941fef", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_174.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 207265024, "duration_sec": 10069, "page_link": "https://dick.show/episode-174/"} +{"ep_num": 175, "title": "Episode 175 - Dick on Inappropriate Laughter", "pub_date": "Tue, 08 Oct 2019 07:08:04 +0000", "guid": "ee49c5b90be54a2499fe1aa9ba2eaf04", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_175.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 161743520, "duration_sec": 8010, "page_link": "https://dick.show/episode-175"} +{"ep_num": 176, "title": "Episode 176 - Dick on Sh*t Eating Grins", "pub_date": "Tue, 15 Oct 2019 06:28:31 +0000", "guid": "4b4f1e4d905f4edea504565424543258", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_176.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 197242912, "duration_sec": 9825, "page_link": "https://dick.show/episode-176/"} +{"ep_num": 177, "title": "Episode 177 - Dick on Men Being Emotional", "pub_date": "Tue, 22 Oct 2019 07:09:03 +0000", "guid": "030247e6ec444cd785042831fd691dd2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_177.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 169693632, "duration_sec": 8447, "page_link": "https://dick.show/episode-177/"} +{"ep_num": 178, "title": "Episode 178 - Dick on The Dr. Phil Tapes", "pub_date": "Tue, 29 Oct 2019 13:19:43 +0000", "guid": "6164d8aa5de04701b7287912bf8ebd10", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_178.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 169288704, "duration_sec": 8419, "page_link": "https://dick.show/episode-178/"} +{"ep_num": 179, "title": "Episode 179 - Dick on Breaking the Bank", "pub_date": "Tue, 05 Nov 2019 15:03:43 +0000", "guid": "f4b301198ae24edd81d94dc2699b4401", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_179.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 170323936, "duration_sec": 8477, "page_link": "https://dick.show/episode-179"} +{"ep_num": 180, "title": "Episode 180 - Dick on The Price of Speech", "pub_date": "Tue, 12 Nov 2019 07:14:33 +0000", "guid": "9473c282b03148738d53890b5dc33d79", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_180.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 180176842, "duration_sec": 8955, "page_link": "https://dick.show/episode-180/"} +{"ep_num": 181, "title": "Episode 181 - Dick on Autistic Screenings", "pub_date": "Tue, 19 Nov 2019 01:45:44 +0000", "guid": "00b51e46-9198-493c-a095-654ea78576f6", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_181.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 177251616, "duration_sec": 8811, "page_link": "https://dick.show/episode-181/"} +{"ep_num": 182, "title": "Episode 182 - Dick on The Flat Holocaust", "pub_date": "Tue, 26 Nov 2019 05:29:53 +0000", "guid": "f2b75bc1-8761-4adc-9d23-263587983279", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_182.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 162289152, "duration_sec": 8040, "page_link": "https://dick.show/episode-182/"} +{"ep_num": 183, "title": "Episode 183 - Dick on Viral Loads", "pub_date": "Tue, 03 Dec 2019 15:22:14 +0000", "guid": "4624fb56-0ac2-4d46-839f-03ddce96c0ba", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_183.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 180444352, "duration_sec": 8973, "page_link": "https://dick.show/episode-183/"} +{"ep_num": 184, "title": "Episode 184 - Dick on Fatsmas Carols", "pub_date": "Tue, 10 Dec 2019 01:14:59 +0000", "guid": "e11691dd-0d5e-4305-812e-7582fc72b1f0", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_184.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 175759904, "duration_sec": 8773, "page_link": "https://dick.show/episode-184/"} +{"ep_num": 185, "title": "Episode 185 - Dick on the Broken Pint Glass Fallacy", "pub_date": "Tue, 17 Dec 2019 05:04:01 +0000", "guid": "0d8c0621-f8ad-491f-bd37-e68eda4d960f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_185.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 176493248, "duration_sec": 8763, "page_link": "https://dick.show/episode-185/"} +{"ep_num": 186, "title": "Episode 186 - Dick on Hunting Hitomi", "pub_date": "Tue, 24 Dec 2019 07:37:41 +0000", "guid": "1c4de4dc-4416-4616-8fa5-72638880e63a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_186.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 173746582, "duration_sec": 8675, "page_link": "https://dick.show/episode-186"} +{"ep_num": 187, "title": "Episode 187 - Dick on Turned Japanese", "pub_date": "Wed, 01 Jan 2020 02:04:57 +0000", "guid": "da393d84-3fb2-45a9-a6db-9b51f43721a2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_187.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 120490368, "duration_sec": 5769, "page_link": "https://thedickshow.libsyn.com/episode-187-dick-on-turning-japanese"} +{"ep_num": 188, "title": "Episode 188 - Dick on Wh*re Island", "pub_date": "Tue, 07 Jan 2020 08:03:25 +0000", "guid": "5d0a8c9c-4590-45f0-88fc-16134a1b565a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_188.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 136025248, "duration_sec": 6714, "page_link": "https://dick.show/episode-188/"} +{"ep_num": 189, "title": "Episode 189 - Dick on Whang!", "pub_date": "Tue, 14 Jan 2020 04:34:35 +0000", "guid": "6847441a-4b83-4bc5-92da-ae54bd9a8945", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_189.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 199270304, "duration_sec": 9917, "page_link": "https://dick.show/episode-189"} +{"ep_num": 190, "title": "Episode 190 - Dick on Getting Robbed", "pub_date": "Tue, 21 Jan 2020 07:32:04 +0000", "guid": "be06fd83-9700-4f12-9cd4-133108a19fa3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_190.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 184368544, "duration_sec": 8956, "page_link": "https://dick.show/episode-190/"} +{"ep_num": 191, "title": "Episode 191 - Dick on Exposure", "pub_date": "Tue, 28 Jan 2020 04:45:16 +0000", "guid": "d36b53d9-53b0-4787-b9d5-ea7d69352b75", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_191.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 171206432, "duration_sec": 8541, "page_link": "https://dick.show/episode-191/"} +{"ep_num": 192, "title": "Episode 192 - Dick on Pirate Radio", "pub_date": "Tue, 04 Feb 2020 08:01:48 +0000", "guid": "b4d63b0e-ee90-4c99-b457-0a225c6a6044", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_192.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 180976544, "duration_sec": 9008, "page_link": "https://dick.show/episode-192/"} +{"ep_num": 193, "title": "Episode 193 - Dick on Somewhat Activewear", "pub_date": "Tue, 11 Feb 2020 05:32:49 +0000", "guid": "276d2654-1a5a-4ccd-b4e7-e5bc37edbf37", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_193.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 142835584, "duration_sec": 7074, "page_link": "https://thedickshow.libsyn.com/episode-193-dick-on-somewhat-activewear"} +{"ep_num": 194, "title": "Episode 194 - Dick on Mad Hoes", "pub_date": "Tue, 18 Feb 2020 05:13:47 +0000", "guid": "2f57f39f-4280-4b78-bcdd-f1d2d03b1093", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_194.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 209305840, "duration_sec": 10269, "page_link": "https://dick.show/episode-194"} +{"ep_num": 195, "title": "Episode 195 - Dick on Blowing Up", "pub_date": "Tue, 25 Feb 2020 10:24:34 +0000", "guid": "68745c36-fcf3-4aa3-b94c-cf2fe609905a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_195.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 191954858, "duration_sec": 9497, "page_link": "https://thedickshow.libsyn.com/episode-195-dick-on-blowing-up"} +{"ep_num": 196, "title": "Episode 196 - Dick on Cam Wars", "pub_date": "Tue, 03 Mar 2020 05:41:38 +0000", "guid": "9af9352d-7a60-4c51-b350-2757044af4ea", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_196.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 200191084, "duration_sec": 9983, "page_link": "https://dick.show/episode-196/"} +{"ep_num": 197, "title": "Episode 197 - Dick on Molyneux", "pub_date": "Tue, 10 Mar 2020 06:47:56 +0000", "guid": "d21c36f1-b7c2-458c-a156-732760de0b21", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_197.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 187927278, "duration_sec": 9382, "page_link": "https://dick.show/episode-197/"} +{"ep_num": 198, "title": "Episode 198 - Dick on The Broken Meth Pipe Fallacy", "pub_date": "Tue, 17 Mar 2020 05:05:13 +0000", "guid": "bc80dfb6-8bf4-47b6-b275-db4ea1cc4e89", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_198.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 232473444, "duration_sec": 11254, "page_link": "https://dick.show/episode-198/"} +{"ep_num": 199, "title": "Episode 199 - Dick on Troll Hair", "pub_date": "Tue, 24 Mar 2020 07:21:29 +0000", "guid": "0b3ac263-8862-4b51-90e1-f6ebf875ffa8", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_199.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 183157440, "duration_sec": 9118, "page_link": "https://dick.show/episode-199/"} +{"ep_num": 200, "title": "Episode 200 - Dick on The Wh*re Economy", "pub_date": "Tue, 31 Mar 2020 07:26:02 +0000", "guid": "4be85be6-9a52-404c-90e3-2b2924c858ba", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_200.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 277814774, "duration_sec": 13369, "page_link": "https://dick.show/episode-200/"} +{"ep_num": 201, "title": "Episode 201 - Dick on Chris Hansen's Emmy", "pub_date": "Tue, 07 Apr 2020 06:49:11 +0000", "guid": "d2f977ec-5aea-4271-8291-52a0dbce016f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_201.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 212600782, "duration_sec": 10582, "page_link": "https://dick.show/episode-201"} +{"ep_num": 202, "title": "Episode 202 - Dick on Martial LOL", "pub_date": "Tue, 14 Apr 2020 05:58:35 +0000", "guid": "0df806c3-a8c3-43f5-9c81-846e492d78f5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_202.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 180265774, "duration_sec": 8698, "page_link": "https://dick.show/episode-202/"} +{"ep_num": 203, "title": "Episode 203 - Dick on Mad Libs", "pub_date": "Tue, 21 Apr 2020 04:28:55 +0000", "guid": "060dd53f-9749-472a-ab05-a5db98dc14eb", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_203.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 186472260, "duration_sec": 9284, "page_link": "https://dick.show/episode-203/"} +{"ep_num": 204, "title": "Episode 204 - Dick on Wiener Crossing", "pub_date": "Tue, 28 Apr 2020 05:19:35 +0000", "guid": "a52cc942-7336-4a71-baf1-3685f3d6a1e2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_204.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 222410614, "duration_sec": 11082, "page_link": "https://dick.show/episode-204/"} +{"ep_num": 205, "title": "Episode 205 - Dick on Multiple Women", "pub_date": "Tue, 05 May 2020 06:28:38 +0000", "guid": "9f9aa77e-d03a-4a6b-bed1-ab8060122daa", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_205.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 221590978, "duration_sec": 11038, "page_link": "https://dick.show/episode-205"} +{"ep_num": 206, "title": "Episode 206 - Dick on Legacy Issues", "pub_date": "Tue, 12 May 2020 07:38:37 +0000", "guid": "b3578d45-2c0e-4bc1-8212-f37169539d06", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_206.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 256118392, "duration_sec": 12614, "page_link": "https://dick.show/episode-206"} +{"ep_num": 207, "title": "Episode 207 - Dick on Premature Celebrations", "pub_date": "Tue, 19 May 2020 06:40:52 +0000", "guid": "065ad517-1a6e-4470-adfa-2f77da36c64d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_207.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 171220276, "duration_sec": 8487, "page_link": "https://dick.show/episode-207/"} +{"ep_num": 208, "title": "Episode 208 - Dick on Cuck Throat", "pub_date": "Tue, 26 May 2020 05:28:11 +0000", "guid": "c23e3704-ae34-476b-8af4-ba87fcba1061", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_208.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 181668722, "duration_sec": 9053, "page_link": "https://dick.show/episode-208/"} +{"ep_num": 209, "title": "Episode 209 - Dick on the LA Riots", "pub_date": "Tue, 02 Jun 2020 07:30:35 +0000", "guid": "b9ec4a9f-e37e-41cb-8c77-cfb691eebcc4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_209.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 198842860, "duration_sec": 9928, "page_link": "https://dick.show/episode-209/"} +{"ep_num": 210, "title": "Episode 210 - Dick on Calling the Police", "pub_date": "Tue, 09 Jun 2020 06:07:25 +0000", "guid": "62a072c0-bdf1-45a9-ba37-530825500d53", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_210.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 136813774, "duration_sec": 6750, "page_link": "https://thedickshow.libsyn.com/episode-210-dick-on-appropriating-victim-culture"} +{"ep_num": 211, "title": "Episode 211 - Dick on Criminalizing Sobriety", "pub_date": "Tue, 16 Jun 2020 05:25:50 +0000", "guid": "cf79c19b-a218-4482-ada5-be943eab3dbb", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_211.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 208414342, "duration_sec": 10293, "page_link": "https://thedickshow.libsyn.com/episode-211-dick-on-criminalizing-sobriety"} +{"ep_num": 212, "title": "Episode 212 - Dick on Plantation Simulator", "pub_date": "Tue, 23 Jun 2020 07:47:41 +0000", "guid": "7311ef24-cb6b-4f38-8544-3c2842f1a6b4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_212.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 204898556, "duration_sec": 10234, "page_link": "https://dick.show/episode-212/"} +{"ep_num": 213, "title": "Episode 213 - Dick on Something Awful", "pub_date": "Tue, 30 Jun 2020 05:35:22 +0000", "guid": "5efd869a-9f4a-493d-bfc1-517d97fa292e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_213.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 226986262, "duration_sec": 11259, "page_link": "https://dick.show/episode-213/"} +{"ep_num": 214, "title": "Episode 214 - Dick on Stupid Games", "pub_date": "Tue, 07 Jul 2020 14:47:07 +0000", "guid": "a459886f-110c-40e1-a7b6-f8e3cb6bcd02", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_214.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 205608156, "duration_sec": 10189, "page_link": "https://thedickshow.libsyn.com/episode-214-dick-on-stupid-games"} +{"ep_num": 215, "title": "Episode 215 - Dick on Generation NARC", "pub_date": "Tue, 14 Jul 2020 05:40:46 +0000", "guid": "2b58b85a-2d83-4516-9cc0-8b152f066baa", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_215.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 186294100, "duration_sec": 9247, "page_link": "https://dick.show/episode-215/"} +{"ep_num": 216, "title": "Episode 216 - Dick on Victim Envy", "pub_date": "Tue, 21 Jul 2020 05:17:07 +0000", "guid": "c819c2a0-fb48-4463-a98a-56cae45f07ad", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_216.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 219093188, "duration_sec": 10953, "page_link": "https://dick.show/episode-216/"} +{"ep_num": 217, "title": "Episode 217 - Dick on Wonder Bread", "pub_date": "Tue, 28 Jul 2020 14:28:20 +0000", "guid": "b317b908-b47a-4029-9b5c-f0f9a97bdf05", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_217.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 224897678, "duration_sec": 11210, "page_link": "https://dick.show/episode-217/"} +{"ep_num": 218, "title": "Episode 218 - Dick on Trickle Down Communism", "pub_date": "Tue, 04 Aug 2020 08:26:04 +0000", "guid": "9e8adedf-8227-47b5-bc05-106c401e288b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_218.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 159860402, "duration_sec": 7898, "page_link": "https://dick.show/episode-218/"} +{"ep_num": 219, "title": "Episode 219 - Dick on the Big Countdown to Nothing", "pub_date": "Tue, 11 Aug 2020 05:47:23 +0000", "guid": "d655d6d0-f404-43d4-b00b-960cf31929ae", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_219.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 182414086, "duration_sec": 9018, "page_link": "https://dick.show/episode-219/"} +{"ep_num": 220, "title": "Episode 220 - Dick on Sex Tapes", "pub_date": "Tue, 18 Aug 2020 05:29:33 +0000", "guid": "5a5e29b8-f2a7-466b-a3c6-c6d069518172", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_220.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 182260534, "duration_sec": 9053, "page_link": "https://dick.show/episode-220/"} +{"ep_num": 221, "title": "Episode 221 - Dick on the Hunt for Waluigi", "pub_date": "Tue, 25 Aug 2020 05:27:35 +0000", "guid": "b9bf772d-b0f5-40a8-8cf1-7c34dd1b6357", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_221.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 163311262, "duration_sec": 8099, "page_link": "https://dick.show/episode-221/"} +{"ep_num": 222, "title": "Episode 222 - Dick on The Malarkey-archy", "pub_date": "Tue, 01 Sep 2020 05:40:08 +0000", "guid": "a0901d8f-4e41-45b4-88df-88f23ad34209", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_222.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 163993072, "duration_sec": 8108, "page_link": "https://dick.show/episode-222/"} +{"ep_num": 223, "title": "Episode 223 - Dick on the Testicle Hernia", "pub_date": "Mon, 07 Sep 2020 23:11:08 +0000", "guid": "49251405-b26a-4166-8985-c62f67d8c8cb", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_223.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 180397890, "duration_sec": 8952, "page_link": "https://dick.show/episode-223/"} +{"ep_num": 224, "title": "Episode 224 - Dick on the Preacher Man", "pub_date": "Tue, 15 Sep 2020 05:30:05 +0000", "guid": "01d8f3d8-7c4b-453c-89be-cae11f9ecfa0", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_224.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 204530434, "duration_sec": 10184, "page_link": "https://dick.show/episode-224/"} +{"ep_num": 225, "title": "Episode 225 - Dick on Ruth Bader GONESBURG", "pub_date": "Tue, 22 Sep 2020 07:17:05 +0000", "guid": "57df1093-b7c4-4068-b164-9a0bdc13365c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_225.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 201119804, "duration_sec": 10041, "page_link": "https://dick.show/episode-225/"} +{"ep_num": 226, "title": "Episode 226 - Dick on No-Knock Knock Jokes", "pub_date": "Tue, 29 Sep 2020 07:04:19 +0000", "guid": "ab001974-8d23-49aa-a9c8-b822d42e3aef", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_226.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 170019582, "duration_sec": 8436, "page_link": "https://dick.show/episode-226"} +{"ep_num": 227, "title": "Episode 227 - Dick on Hassle Doctrine", "pub_date": "Tue, 06 Oct 2020 07:01:06 +0000", "guid": "bff8b91e-3948-4d88-9f0b-a142ca9a6c74", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_227.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 155552202, "duration_sec": 7692, "page_link": "https://dick.show/episode-227/"} +{"ep_num": 228, "title": "Episode 228 - Dick on Gender Neutral Jesus", "pub_date": "Tue, 13 Oct 2020 07:51:01 +0000", "guid": "8ad0ec06-12a3-4315-b8cf-0a8431e87a2e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_228.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 175472690, "duration_sec": 8685, "page_link": "https://dick.show/episode-228/"} +{"ep_num": 229, "title": "Episode 229 - Dick on the Antifa Horror Movie", "pub_date": "Tue, 20 Oct 2020 06:19:54 +0000", "guid": "ed2d63b1-0ab8-4b47-b370-029a202ba40e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_229.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 158437700, "duration_sec": 7835, "page_link": "https://dick.show/episode-229/"} +{"ep_num": 230, "title": "Episode 230 - Dick on New Diet Coke", "pub_date": "Tue, 27 Oct 2020 06:24:51 +0000", "guid": "d2986977-ecd4-420b-afe4-06ff10f54d2e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_230.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 146416180, "duration_sec": 7234, "page_link": "https://dick.show/episode-230/"} +{"ep_num": 231, "title": "Episode 231 - Dick on Turning FFFFFFFF", "pub_date": "Tue, 03 Nov 2020 09:32:06 +0000", "guid": "6e42f4e9-558e-4064-a88c-d5188e0c68ca", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_231.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 201316414, "duration_sec": 9973, "page_link": "https://dick.show/episode-231/"} +{"ep_num": 232, "title": "Episode 232 - Dick on Copium", "pub_date": "Tue, 10 Nov 2020 06:56:03 +0000", "guid": "a23f51b6-6484-476e-9b74-0c0dff02ba6a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_232.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 154179496, "duration_sec": 7694, "page_link": "https://dick.show/episode-232"} +{"ep_num": 233, "title": "Episode 233 - Dick on Venture Communism", "pub_date": "Tue, 17 Nov 2020 07:02:21 +0000", "guid": "ed13ef68-cd54-49dc-9dd2-e63d62ae1dde", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_233.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 159421956, "duration_sec": 7894, "page_link": "https://dick.show/episode-233"} +{"ep_num": 234, "title": "Episode 234 - Dick on Black Santa", "pub_date": "Tue, 24 Nov 2020 08:03:10 +0000", "guid": "d5b7f9df-af4f-46ae-b2ac-6ed8ef24f059", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_234.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 177190888, "duration_sec": 8814, "page_link": "https://dick.show/episode-234/"} +{"ep_num": 235, "title": "Episode 235 - Dick on Big Simpin'", "pub_date": "Tue, 01 Dec 2020 07:28:23 +0000", "guid": "8313a9e7-eb89-4831-98e6-185f0b8ba9e3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_235.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 206567602, "duration_sec": 10217, "page_link": "https://dick.show/episode-235"} +{"ep_num": 236, "title": "Episode 236 - Dick on Black Hitler", "pub_date": "Tue, 08 Dec 2020 06:35:15 +0000", "guid": "1c62714a-a568-48fa-a32f-d82207d16495", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_236.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 165594956, "duration_sec": 8210, "page_link": "https://dick.show/episode-236"} +{"ep_num": 237, "title": "Episode 237 - Dick on Road Rage: Tampa", "pub_date": "Tue, 15 Dec 2020 09:21:23 +0000", "guid": "9a112e54-8aff-45d4-a504-d9032ef50516", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_237.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 172284092, "duration_sec": 8526, "page_link": "https://dick.show/episode-237/"} +{"ep_num": 238, "title": "Episode 238 - Dick on Slow Meat", "pub_date": "Tue, 22 Dec 2020 00:55:46 +0000", "guid": "9ae0a55b-2304-4f49-9d10-914f6e302e53", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_238.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 207543446, "duration_sec": 10289, "page_link": "https://dick.show/episode-238/"} +{"ep_num": 239, "title": "Episode 239 - Dick on Lonely Mouths", "pub_date": "Tue, 29 Dec 2020 07:31:22 +0000", "guid": "c5b5805d-d5de-4500-85bc-c6b69b3ab2d8", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_239.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 164403122, "duration_sec": 8156, "page_link": "https://dick.show/episode-239/"} +{"ep_num": 240, "title": "Episode 240 - Dick on The Big One", "pub_date": "Tue, 05 Jan 2021 04:25:51 +0000", "guid": "c01cf750-fe60-499a-8b7e-8bcf5e4698c2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_240.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 141071376, "duration_sec": 6944, "page_link": "https://dick.show/episode-240/"} +{"ep_num": 241, "title": "Episode 241 - Dick on Insurrection", "pub_date": "Tue, 12 Jan 2021 06:42:58 +0000", "guid": "905fca18-1176-41dc-beb3-e4e01e9080da", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_241.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 187835570, "duration_sec": 9054, "page_link": "https://dick.show/episode-241"} +{"ep_num": 242, "title": "Episode 242 - Dick on the Fediverse", "pub_date": "Tue, 19 Jan 2021 07:10:34 +0000", "guid": "bb998e27-a0e1-4328-8a49-f71c08e87923", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_242.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 183858776, "duration_sec": 8867, "page_link": "https://dick.show/episode-242/"} +{"ep_num": 243, "title": "Episode 243 - Dick on Space Boobs", "pub_date": "Tue, 26 Jan 2021 06:56:23 +0000", "guid": "714b87ec-0d6d-4106-90fd-ee247585b5f5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_243.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 180310828, "duration_sec": 8819, "page_link": "https://dick.show/episode-243"} +{"ep_num": 244, "title": "Episode 244 - Dick on How to Live Forever", "pub_date": "Tue, 02 Feb 2021 06:14:25 +0000", "guid": "9c7ba55f-040b-47ac-aa32-da5097513ee2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_244.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 145680706, "duration_sec": 7154, "page_link": "https://dick.show/episode-244"} +{"ep_num": 245, "title": "Episode 245 - Dick on Big Beans", "pub_date": "Tue, 09 Feb 2021 05:07:36 +0000", "guid": "41a44721-271a-4fa5-b41e-0ee58e600baf", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_245.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 141630356, "duration_sec": 7080, "page_link": "https://dick.show/episode-245"} +{"ep_num": 246, "title": "Episode 246 - Dick on Human Milk", "pub_date": "Tue, 16 Feb 2021 08:16:51 +0000", "guid": "f4580ffa-e662-4c7b-acff-f52819a4493e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_246.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 193406260, "duration_sec": 9582, "page_link": "https://dick.show/episode-246"} +{"ep_num": 247, "title": "Episode 247 - Dick on The Dog Show", "pub_date": "Tue, 23 Feb 2021 06:52:47 +0000", "guid": "ef983fa7-d889-4d85-b9f1-666d4b16ed69", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_247.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 172258672, "duration_sec": 8567, "page_link": "https://dick.show/episode-247/"} +{"ep_num": 248, "title": "Episode 248 - Dick on The Uniparty", "pub_date": "Mon, 01 Mar 2021 22:47:17 +0000", "guid": "3afb3c6e-165d-496d-8b5a-8d146e16d18c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_248.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 144733646, "duration_sec": 7181, "page_link": "https://dick.show/episode-248/"} +{"ep_num": 249, "title": "Episode 249 - Dick on Womxn", "pub_date": "Tue, 09 Mar 2021 01:29:15 +0000", "guid": "07793284-8f5c-4c20-a7dd-2a5cc3b1b9bc", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_249.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 181424344, "duration_sec": 9002, "page_link": "https://dick.show/episode-249"} +{"ep_num": 250, "title": "Episode 250 - Dick on Being Super Straight", "pub_date": "Tue, 16 Mar 2021 03:05:13 +0000", "guid": "69efd129-abb0-4357-82ef-c7ff914b80ff", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_250.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 166312062, "duration_sec": 8220, "page_link": "https://dick.show/episode-250/"} +{"ep_num": 251, "title": "Episode 251 - Dick on the $4,000 Crossover", "pub_date": "Mon, 22 Mar 2021 18:06:46 +0000", "guid": "a318d06f-48d4-42f4-8563-0187631b3b47", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_251.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 175109728, "duration_sec": 8647, "page_link": "https://dick.show/episode-251"} +{"ep_num": 252, "title": "Episode 252 - Dick on Unexpected Guests", "pub_date": "Tue, 30 Mar 2021 05:13:37 +0000", "guid": "f0a44614-0784-4441-b629-743626083f0e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_252.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 168033658, "duration_sec": 8360, "page_link": "https://dick.show/episode-252/"} +{"ep_num": 253, "title": "Episode 253 - Dick on the Penis Extension Machine", "pub_date": "Mon, 05 Apr 2021 21:00:56 +0000", "guid": "b39c31af-e844-46ba-9bf3-ac8a265d302f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_253.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 133640182, "duration_sec": 6680, "page_link": "https://dick.show/episode-253/"} +{"ep_num": 254, "title": "Episode 254 - Dick on L's", "pub_date": "Tue, 13 Apr 2021 02:50:47 +0000", "guid": "a6e11349-fd23-4a9e-873d-0ae1d1bca8cd", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_254.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 133713074, "duration_sec": 6649, "page_link": "https://dick.show/episode-254/"} +{"ep_num": 255, "title": "Episode 255 - Dick on $DOGE", "pub_date": "Tue, 20 Apr 2021 05:13:15 +0000", "guid": "b6422b5c-4bd7-4967-9dc7-ff29ed9c8a8c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_255.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 155216280, "duration_sec": 7712, "page_link": "https://dick.show/episode-255/"} +{"ep_num": 256, "title": "Episode 256 - Dick on Money Shots", "pub_date": "Mon, 26 Apr 2021 21:38:29 +0000", "guid": "79c69455-4bc4-4f53-8842-00f90d29e448", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_256.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 186954046, "duration_sec": 9295, "page_link": "https://dick.show/episode-256/"} +{"ep_num": 257, "title": "Episode 257 - Dick on Wood Inflation", "pub_date": "Mon, 03 May 2021 21:28:18 +0000", "guid": "db1012e7-a848-4aed-a5a1-96272253f26e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_257.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 141164840, "duration_sec": 7011, "page_link": "https://dick.show/episode-257"} +{"ep_num": 258, "title": "Episode 258 - Dick on the Jerk Off Ninja", "pub_date": "Tue, 11 May 2021 04:36:49 +0000", "guid": "c9b5cfdc-e186-4a27-84d6-8f1ab8a53cd7", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_258.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 153549166, "duration_sec": 7660, "page_link": "https://dick.show/episode-258"} +{"ep_num": 259, "title": "Episode 259 - Dick on Israel", "pub_date": "Tue, 18 May 2021 03:33:02 +0000", "guid": "cf517d8f-45f8-4b28-86b4-4dd73ab91f1c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_259.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 139714468, "duration_sec": 6949, "page_link": "https://dick.show/episode-259/"} +{"ep_num": 260, "title": "Episode 260 - Dick on The Biggest Problem Reboot", "pub_date": "Mon, 24 May 2021 23:32:39 +0000", "guid": "9063e042-bed0-4db0-a6c5-a8bc60a3f7a7", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_260.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 119148102, "duration_sec": 5899, "page_link": "https://dick.show/episode-260/"} +{"ep_num": 261, "title": "Episode 261 - Dick on Fat Brain", "pub_date": "Tue, 01 Jun 2021 04:13:20 +0000", "guid": "b75c1dd0-2cd3-431c-a1c1-a351d815c4ee", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_261.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 138316782, "duration_sec": 6712, "page_link": "https://dick.show/episode-261/"} +{"ep_num": 262, "title": "Episode 262 - Dick on Sex Doll Fingers", "pub_date": "Tue, 08 Jun 2021 05:24:13 +0000", "guid": "9e41f854-cf7e-44c8-af3d-fdf12174421b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_262.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 141058112, "duration_sec": 6965, "page_link": "https://dick.show/episode-262/"} +{"ep_num": 263, "title": "Episode 263 - Dick on the Return of Sean", "pub_date": "Mon, 14 Jun 2021 23:27:15 +0000", "guid": "0239d22d-0633-4442-9aea-0501d7185a4e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_263.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 184155450, "duration_sec": 9151, "page_link": "https://dick.show/episode-263"} +{"ep_num": 264, "title": "Episode 264 - Dick on Lifting Cars", "pub_date": "Tue, 22 Jun 2021 05:18:20 +0000", "guid": "8a4e9fff-e21c-41ea-9814-a07e1e7d3890", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_264.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 145323666, "duration_sec": 7211, "page_link": "https://dick.show/episode-264"} +{"ep_num": 265, "title": "Episode 265 - Dick on Private Hookers", "pub_date": "Tue, 29 Jun 2021 03:40:05 +0000", "guid": "77602501-9ff3-4568-aa35-2408c93337d0", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_265.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 179667894, "duration_sec": 8928, "page_link": "https://dick.show/episode-265/"} +{"ep_num": 266, "title": "Episode 266 - Dick on the Forever Coof", "pub_date": "Tue, 13 Jul 2021 07:26:01 +0000", "guid": "14a57769-b242-41c5-a863-e1c003a9e6d0", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_266.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 127759376, "duration_sec": 6302, "page_link": "https://dick.show/episode-266/"} +{"ep_num": 267, "title": "Episode 267 - Dick on Too Big of Tubes", "pub_date": "Mon, 19 Jul 2021 21:23:31 +0000", "guid": "9dbfd642-dd37-4c45-9645-d0ece4f5522f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_267.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 161602600, "duration_sec": 8037, "page_link": "https://dick.show/episode-267/"} +{"ep_num": 268, "title": "Episode 268 - Dick on He-Manbabies", "pub_date": "Mon, 26 Jul 2021 20:31:01 +0000", "guid": "3cdfa57a-c422-4013-9811-600b248d326c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_268.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 156121622, "duration_sec": 7748, "page_link": "https://dick.show/episode-268"} +{"ep_num": 269, "title": "Episode 269 - Dick on Motherf*ckers", "pub_date": "Tue, 03 Aug 2021 05:48:41 +0000", "guid": "e39ec66a-ec27-4f4c-a745-673b118a05da", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_269.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 138443624, "duration_sec": 6882, "page_link": "https://dick.show/episode-269/"} +{"ep_num": 270, "title": "Episode 270 - Dick on the Weiner Man", "pub_date": "Tue, 10 Aug 2021 03:10:14 +0000", "guid": "2a548906-1278-4a94-ad10-1db5470a948f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_270.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 140150594, "duration_sec": 6987, "page_link": "https://dick.show/episode-270/"} +{"ep_num": 271, "title": "Episode 271 - Dick on Talibants", "pub_date": "Mon, 16 Aug 2021 16:51:08 +0000", "guid": "2e36b7b7-820b-45d3-8ab7-bf37071accc9", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_271.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 145069054, "duration_sec": 7210, "page_link": "https://dick.show/episode-271/"} +{"ep_num": 272, "title": "Episode 272 - Dick on Running Out of Beer", "pub_date": "Tue, 24 Aug 2021 04:05:25 +0000", "guid": "5e7d2fa2-d890-40b3-8db9-e4e45e461cf2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_272.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 128793134, "duration_sec": 6342, "page_link": "https://dick.show/episode-272/"} +{"ep_num": 273, "title": "Episode 273 - Dick on WATP Live", "pub_date": "Tue, 31 Aug 2021 05:09:53 +0000", "guid": "91725704-7ade-4e79-b0ed-1eda6569485e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_273.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 118549574, "duration_sec": 5785, "page_link": "https://dick.show/episode-273/"} +{"ep_num": 274, "title": "Episode 274 - Dick on a $6,000 Vet Bill", "pub_date": "Tue, 07 Sep 2021 04:54:48 +0000", "guid": "23e61462-ce1e-440a-bf63-25371db7b725", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_274.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 116648154, "duration_sec": 5820, "page_link": "https://dick.show/episode-274/"} +{"ep_num": 275, "title": "Episode 275 - Dick on the Nick Show", "pub_date": "Tue, 14 Sep 2021 03:40:06 +0000", "guid": "091d6a57-c148-4967-b6a4-9adf32934945", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_275.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 155365102, "duration_sec": 7631, "page_link": "https://dick.show/episode-275/"} +{"ep_num": 276, "title": "Episode 276 - Dick on Virginfest", "pub_date": "Tue, 21 Sep 2021 02:29:32 +0000", "guid": "c8f5c73e-c8f3-488e-a854-24338a4272b5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_276.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 154704050, "duration_sec": 7664, "page_link": "https://dick.show/episode-276/"} +{"ep_num": 277, "title": "Episode 277 - Dick on Raz0rfist", "pub_date": "Mon, 27 Sep 2021 22:41:37 +0000", "guid": "aadf708a-f764-4ee8-b839-fffafe309f61", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_277.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 185573404, "duration_sec": 9207, "page_link": "https://dick.show/episode-277/"} +{"ep_num": 278, "title": "Episode 278 - Dick on Taxation is Prison", "pub_date": "Tue, 05 Oct 2021 00:16:07 +0000", "guid": "479fe920-10e9-49e3-886a-aa3a0c2795ba", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_278.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 138103202, "duration_sec": 6877, "page_link": "https://dick.show/episode-278/"} +{"ep_num": 279, "title": "Episode 279 - Dick on Swallowing Hair", "pub_date": "Tue, 12 Oct 2021 01:01:27 +0000", "guid": "564fa197-ca7a-4adc-8c7d-6d79aa7a8704", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_279.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 197380238, "duration_sec": 9827, "page_link": "https://dick.show/episode-279/"} +{"ep_num": 280, "title": "Episode 280 - Dick on The Designated Virgin", "pub_date": "Tue, 19 Oct 2021 06:54:50 +0000", "guid": "a8236ab7-1928-49f3-a4eb-e64c3afdea0b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_280.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 137089660, "duration_sec": 6812, "page_link": "https://dick.show/episode-280/"} +{"ep_num": 281, "title": "Episode 281 - Dick on Jokes Are Funny", "pub_date": "Tue, 26 Oct 2021 06:17:52 +0000", "guid": "e6c42b4e-0bb1-4bdb-ba91-0715eafb84e0", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_281.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 147826251, "duration_sec": 7353, "page_link": "https://dick.show/episode-281"} +{"ep_num": 282, "title": "Episode 282 - Dick on the Rooftop Koreans", "pub_date": "Tue, 02 Nov 2021 00:26:05 +0000", "guid": "17daa0d4-8352-40ff-ac45-6ff569b2f893", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_282.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 165725360, "duration_sec": 8254, "page_link": "https://dick.show/episode-282/"} +{"ep_num": 283, "title": "Episode 283 - Dick on Fat Body Erasure", "pub_date": "Tue, 09 Nov 2021 00:57:06 +0000", "guid": "3b11f1fd-24d6-4404-b763-6d74b73eef30", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_283.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 149170922, "duration_sec": 7393, "page_link": "https://dick.show/episode-283/"} +{"ep_num": 284, "title": "Episode 284 - Dick on Sean's Ding", "pub_date": "Tue, 16 Nov 2021 05:21:14 +0000", "guid": "ed7d3f95-3ba6-4c48-8256-57ddd4126bcf", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_284.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 136368506, "duration_sec": 6770, "page_link": "https://dick.show/episode-284/"} +{"ep_num": 285, "title": "Episode 285 - Dick on Due to Inflation", "pub_date": "Tue, 23 Nov 2021 02:07:40 +0000", "guid": "0941dcfa-2762-44d7-932c-fc7dc240c10b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_285.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 190333512, "duration_sec": 9492, "page_link": "https://dick.show/episode-285/"} +{"ep_num": 286, "title": "Episode 286 - Dick on Strong Times", "pub_date": "Tue, 30 Nov 2021 07:37:20 +0000", "guid": "83932d0f-1745-4559-a698-e1e4e3952581", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_286.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 126629320, "duration_sec": 6116, "page_link": "https://dick.show/episode-286/"} +{"ep_num": 287, "title": "Episode 287 - Dick on Human Stop Signs", "pub_date": "Mon, 06 Dec 2021 21:53:26 +0000", "guid": "912c82b1-33fd-44ed-88ca-d003ad9acd04", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_287.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 189784580, "duration_sec": 9391, "page_link": "https://dick.show/episode-287/"} +{"ep_num": 288, "title": "Episode 288 - Dick on the Diarrhea Cake", "pub_date": "Tue, 14 Dec 2021 00:44:26 +0000", "guid": "bdff0c1b-5d9e-4b11-8242-868b42c2be58", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_288.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 167820706, "duration_sec": 8373, "page_link": "https://dick.show/episode-288/"} +{"ep_num": 289, "title": "Episode 289 - Dick on Floydies", "pub_date": "Tue, 21 Dec 2021 06:53:26 +0000", "guid": "97882a5e-1608-43ca-a242-e764ac390d2c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_289.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 152918652, "duration_sec": 7627, "page_link": "https://dick.show/episode-289/"} +{"ep_num": 290, "title": "Episode 290 - Dick on Shooting Your Eye Out", "pub_date": "Tue, 28 Dec 2021 06:24:38 +0000", "guid": "3835b0bc-5dbf-4546-b50f-c211ce60094f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_290.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 189757848, "duration_sec": 7873, "page_link": "https://dick.show/episode-290/"} +{"ep_num": 291, "title": "Episode 291 - Dick on The Dry T-Shirt Contest", "pub_date": "Tue, 11 Jan 2022 00:38:11 +0000", "guid": "641ddbd3-8a8b-4710-913d-26cec04aff23", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_291.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 192503328, "duration_sec": 7969, "page_link": "https://dick.show/episode-291"} +{"ep_num": 292, "title": "Episode 292 - Dick on Psychic Fat Bodies", "pub_date": "Tue, 18 Jan 2022 05:46:21 +0000", "guid": "414fc21d-04ed-47ee-b88e-71f1d0df3ccc", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_292.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 160091978, "duration_sec": 6595, "page_link": "https://dick.show/episode-292/"} +{"ep_num": 293, "title": "Episode 293 - Dick on Missing Portugal", "pub_date": "Tue, 25 Jan 2022 05:17:44 +0000", "guid": "528110e8-d9c5-45f3-a8ea-4f5d9123bcbf", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_293.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 147060355, "duration_sec": 6128, "page_link": "https://dick.show/episode-293/"} +{"ep_num": 294, "title": "Episode 294 - Dick on The Honkening", "pub_date": "Mon, 31 Jan 2022 21:08:16 +0000", "guid": "d098d52b-e581-4b9d-9838-3d11b18dd21e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_294.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 202522703, "duration_sec": 8439, "page_link": "https://dick.show/episode-294/"} +{"ep_num": 295, "title": "Episode 295 - Dick on Eating Bugs", "pub_date": "Tue, 08 Feb 2022 02:28:48 +0000", "guid": "36d52b44-5e08-4a47-99b1-741c96f39546", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_295.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 158071069, "duration_sec": 6587, "page_link": "https://dick.show/episode-295/"} +{"ep_num": 296, "title": "Episode 296 - Dick on Sean's Very Own Album", "pub_date": "Tue, 15 Feb 2022 04:02:15 +0000", "guid": "71c90922-aa2f-4777-b8aa-209f9de90095", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_296.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 148931386, "duration_sec": 6179, "page_link": "https://dick.show/episode-296/"} +{"ep_num": 297, "title": "Episode 297 - Dick on the Healthy Gamer Suicide", "pub_date": "Tue, 22 Feb 2022 06:35:08 +0000", "guid": "fac1a83a-77df-42a0-8f91-d142030d67ab", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_297.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 175244127, "duration_sec": 7302, "page_link": "https://dick.show/episode-297/"} +{"ep_num": 298, "title": "Episode 298 - Dick on Three Nukes", "pub_date": "Mon, 28 Feb 2022 17:36:03 +0000", "guid": "92cc0f2d-6d6e-47ff-a92d-239bee9a1d3c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_298.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 143684963, "duration_sec": 5987, "page_link": "https://dick.show/episode-298/"} +{"ep_num": 299, "title": "Episode 299 - Dick on Road Rage: Los Angeles 2", "pub_date": "Tue, 08 Mar 2022 05:16:03 +0000", "guid": "0aa80f85-1940-4f8f-bbb8-84f890929e17", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_299.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 203433561, "duration_sec": 8477, "page_link": "https://dick.show/episode-299/"} +{"ep_num": 300, "title": "Episode 300 - Dick on The Underdog", "pub_date": "Tue, 15 Mar 2022 05:10:48 +0000", "guid": "b501a5a6-37b7-4a6d-8de9-2959324754e3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_300.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 172111025, "duration_sec": 7172, "page_link": "https://dick.show/episode-300/"} +{"ep_num": 301, "title": "Episode 301 - Dick on Disordered Eating", "pub_date": "Tue, 22 Mar 2022 00:16:24 +0000", "guid": "624e37c3-2cef-403d-b2e4-091d0c775064", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_301.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 168960339, "duration_sec": 7040, "page_link": "https://dick.show/episode-301/"} +{"ep_num": 302, "title": "Episode 302 - Dick on Defining Women", "pub_date": "Tue, 29 Mar 2022 04:11:53 +0000", "guid": "9afebc0b-7671-4b88-8f85-65d154fe8f4c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_302.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 185066721, "duration_sec": 7712, "page_link": "https://dick.show/episode-302/"} +{"ep_num": 303, "title": "Episode 303 - Dick on Bowling Injuries", "pub_date": "Mon, 11 Apr 2022 20:00:48 +0000", "guid": "276be6f1-1f62-4be8-a1c0-71c102879cd5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_303.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 219931763, "duration_sec": 9164, "page_link": "https://dick.show/episode-303/"} +{"ep_num": 304, "title": "Episode 304 - Dick on Vicodin Miracles", "pub_date": "Mon, 18 Apr 2022 20:28:03 +0000", "guid": "231dd3f8-f4f3-4ef0-8fa6-40769913aaee", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_304.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 156792777, "duration_sec": 6533, "page_link": "https://dick.show/episode-304/"} +{"ep_num": 305, "title": "Episode 305 - Dick on What Money Can't Buy", "pub_date": "Tue, 26 Apr 2022 05:08:37 +0000", "guid": "f0c02834-fad5-43f0-8684-3389f03bc2be", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_305.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 172684284, "duration_sec": 7183, "page_link": "https://dick.show/episode-305/"} +{"ep_num": 306, "title": "Episode 306 - Dick on the Fat Lady Sings", "pub_date": "Mon, 02 May 2022 23:02:10 +0000", "guid": "81f16291-6dc8-4380-b3f2-df9c44ebcac4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_306.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 217672529, "duration_sec": 9070, "page_link": "https://dick.show/episode-306/"} +{"ep_num": 307, "title": "Episode 307 - Super Fit Models", "pub_date": "Tue, 10 May 2022 02:20:34 +0000", "guid": "d3d90f49-f6df-422e-b41a-fc2c3166dbac", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_307.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 201083529, "duration_sec": 8379, "page_link": "https://dick.show/episode-307/"} +{"ep_num": 308, "title": "Episode 308 - Dick on the Horse Sex Doll", "pub_date": "Mon, 16 May 2022 21:09:59 +0000", "guid": "fdbcb288-9f1b-4824-bf15-53d4aff52be4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_308.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 144175747, "duration_sec": 6008, "page_link": "https://dick.show/episode-308/"} +{"ep_num": 309, "title": "Episode 309 - Dick on Waifu Watchers", "pub_date": "Mon, 23 May 2022 21:49:57 +0000", "guid": "325a6fb3-85df-4e8a-9d74-da56d3e9ff6a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_309.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 186308677, "duration_sec": 7763, "page_link": "http://dick.show/episode-309/"} +{"ep_num": 310, "title": "Episode 310 - Dick on Bad Guys", "pub_date": "Mon, 30 May 2022 17:51:52 +0000", "guid": "7184ca68-da7b-42ba-9487-6e68e3a625a3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_310.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 179249275, "duration_sec": 7469, "page_link": "http://dick.show/episode-310/"} +{"ep_num": 311, "title": "Episode 311 - Dick on Dragging Kids", "pub_date": "Tue, 07 Jun 2022 04:41:52 +0000", "guid": "981d82ca-f5ff-403c-9ec6-4ff8554aba07", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_311.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 158989411, "duration_sec": 6625, "page_link": "https://dick.show/episode-311/"} +{"ep_num": 312, "title": "Episode 312 - Dick on Sudden Adult Death Syndrome", "pub_date": "Tue, 14 Jun 2022 02:30:34 +0000", "guid": "e436e3ac-bed7-4285-adad-6d4740dc9afd", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_312.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 143671817, "duration_sec": 5987, "page_link": "https://dick.show/episode-312/"} +{"ep_num": 313, "title": "Episode 313 - Dick on Internet Father's Day", "pub_date": "Tue, 21 Jun 2022 05:56:57 +0000", "guid": "f69af3bb-cf6b-4475-a792-ad018a2f3352", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_313.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 194777205, "duration_sec": 8116, "page_link": "https://dick.show/episode-313/"} +{"ep_num": 314, "title": "Episode 314 - Dick on Madder Hoes", "pub_date": "Mon, 27 Jun 2022 22:36:57 +0000", "guid": "61708e4d-31c7-48b0-8fa9-9e846ca0e674", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_314.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 192369609, "duration_sec": 8016, "page_link": "http://dick.show/episode-314/"} +{"ep_num": 315, "title": "Episode 315 - Dick on New Racism", "pub_date": "Tue, 05 Jul 2022 04:59:09 +0000", "guid": "93994bc7-65dc-475b-9f19-041a22e847a9", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_315.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 163164831, "duration_sec": 6799, "page_link": "https://dick.show/episode-315/"} +{"ep_num": 316, "title": "Episode 316 - Dick on Getting Swatted", "pub_date": "Mon, 11 Jul 2022 23:32:23 +0000", "guid": "4d5ae30d-9767-4b13-9afe-58e74033f595", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_316.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 252651531, "duration_sec": 10528, "page_link": "https://dick.show/episode-316/"} +{"ep_num": 317, "title": "Episode 317 - Dick on the Homophobic Telescope", "pub_date": "Mon, 18 Jul 2022 19:49:34 +0000", "guid": "6da1fe95-ac3e-4bb9-ac04-fa21579e83d5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_317.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 178518107, "duration_sec": 7439, "page_link": "https://dick.show/episode-317/"} +{"ep_num": 318, "title": "Episode 318 - Dick on Chub Rub", "pub_date": "Tue, 26 Jul 2022 15:24:07 +0000", "guid": "e7527f43-d6fc-46da-a483-3fb890de99a7", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_318.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 174576811, "duration_sec": 7274, "page_link": "https://dick.show/episode-318/"} +{"ep_num": 319, "title": "Episode 319 - Dick on Swim Thicc", "pub_date": "Tue, 02 Aug 2022 02:34:45 +0000", "guid": "0b030aaf-511f-4e1b-a7a8-c9e85ea04325", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_319.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 173793304, "duration_sec": 7188, "page_link": "https://dick.show/episode-319/"} +{"ep_num": 320, "title": "Episode 320 - Dick on Satirical Guns", "pub_date": "Tue, 09 Aug 2022 06:08:15 +0000", "guid": "7109303f-fb8d-42f6-adc6-f759ac4a1ed4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_320.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 182511361, "duration_sec": 7605, "page_link": "https://dick.show/episode-320/"} +{"ep_num": 321, "title": "Episode 321 - Dick on Pegging", "pub_date": "Tue, 16 Aug 2022 15:16:27 +0000", "guid": "cee97246-5c91-4c03-bad1-ce9c848aa19f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_321.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 165514018, "duration_sec": 8276, "page_link": "https://dick.show/episode-321/"} +{"ep_num": 322, "title": "Episode 322 - Dick on The Fat C-Section Story", "pub_date": "Mon, 22 Aug 2022 15:59:52 +0000", "guid": "fffc3394-cc46-42cd-bbb8-435ae8904e74", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_322.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 144506416, "duration_sec": 6009, "page_link": "https://dick.show/episode-322/"} +{"ep_num": 323, "title": "Episode 323 - Dick on the New Old Truck", "pub_date": "Tue, 06 Sep 2022 14:06:17 +0000", "guid": "ca66ed55-a488-4d04-9d85-08971fbd005d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_323.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 170331008, "duration_sec": 4259, "page_link": "https://dick.show/episode-323/"} +{"ep_num": 324, "title": "Episode 324 - Dick on Bang, Zoom, Straight to the Moon", "pub_date": "Tue, 13 Sep 2022 14:27:38 +0000", "guid": "4ee511cc-612f-4385-bc58-befda279f7af", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_324.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 367806848, "duration_sec": 9196, "page_link": "https://dick.show/episode-324/"} +{"ep_num": 325, "title": "Episode 325 - Dick on Shop Class", "pub_date": "Tue, 20 Sep 2022 05:20:27 +0000", "guid": "cb930f19-ee1b-4e1d-bbc2-2f40811f1932", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_325.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 194306772, "duration_sec": 8097, "page_link": "https://dick.show/episode-325/"} +{"ep_num": 326, "title": "Episode 326 - Dick on Near Death Experiences", "pub_date": "Tue, 27 Sep 2022 14:39:38 +0000", "guid": "709cf774-0367-44ac-8918-02df8558f19f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_326.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 187632956, "duration_sec": 7768, "page_link": "https://dick.show/episode-326/"} +{"ep_num": 327, "title": "Episode 327 - Dick on Lactating Individuals", "pub_date": "Tue, 04 Oct 2022 14:40:00 +0000", "guid": "f4ac77e1-fb4f-4c97-9b15-fd0b2aa23c91", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_327.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 209842424, "duration_sec": 8708, "page_link": "https://dick.show/episode-327/"} +{"ep_num": 328, "title": "Episode 328 - Dick on Death Con 3", "pub_date": "Tue, 11 Oct 2022 14:39:00 +0000", "guid": "91c4cb44-bc37-4904-a7e3-b2bbc7e5a78c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_328.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 179542252, "duration_sec": 7412, "page_link": "https://dick.show/episode-328/"} +{"ep_num": 329, "title": "Episode 329 - Dick on Hate Speech Time-Outs", "pub_date": "Tue, 18 Oct 2022 14:49:00 +0000", "guid": "be5d53c1-c2e7-4467-933f-aa304a2dd2a1", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_329.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 190999666, "duration_sec": 7952, "page_link": "https://dick.show/episode-329/"} +{"ep_num": 330, "title": "Episode 330 - Dick on The Delorean", "pub_date": "Tue, 25 Oct 2022 05:39:00 +0000", "guid": "8331ee25-5de5-4c60-b253-c5c8648b4eb1", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_330.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 195712930, "duration_sec": 8141, "page_link": "http://dick.show/episode-330/"} +{"ep_num": 331, "title": "Episode 331 - Dick on Not Body Dysmorphia", "pub_date": "Tue, 01 Nov 2022 18:48:00 +0000", "guid": "f18cde61-0bb0-4eeb-b65c-139c13c50745", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_331.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 157316124, "duration_sec": 7831, "page_link": "https://dick.show/episode-331/"} +{"ep_num": 332, "title": "Episode 332 - Dick on Scammed Again", "pub_date": "Tue, 08 Nov 2022 15:50:00 +0000", "guid": "796ff7cc-c9e2-4488-916a-e06e3baeeac1", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_332.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 137193504, "duration_sec": 6773, "page_link": "https://dick.show/episode-332/"} +{"ep_num": 333, "title": "Episode 333 - Dick on Puzzling Injuries", "pub_date": "Tue, 15 Nov 2022 16:28:00 +0000", "guid": "a73e2d6f-542b-4f93-bb26-258c609582d5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_333.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 150523656, "duration_sec": 7440, "page_link": "https://dick.show/episode-333/"} +{"ep_num": 334, "title": "Episode 334 - Death to DEI", "pub_date": "Tue, 22 Nov 2022 18:08:00 +0000", "guid": "bae8a9fb-92dc-4ca8-8aa7-3a72066fb3a9", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_334.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 153624122, "duration_sec": 7631, "page_link": "https://dick.show/episode-334/"} +{"ep_num": 335, "title": "Episode 335 - Dick on Butt Deodorant", "pub_date": "Tue, 29 Nov 2022 07:21:00 +0000", "guid": "cf39e86e-9888-4ba7-8f8c-01227a5c2a5b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_335.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 172234348, "duration_sec": 8586, "page_link": "https://dick.show/episode-335/"} +{"ep_num": 336, "title": "Episode 336 - Dick on Suicide Marketing", "pub_date": "Tue, 06 Dec 2022 07:04:00 +0000", "guid": "1c9f30e1-11b4-4330-b25b-4496ba5eb0e0", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_336.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 127683610, "duration_sec": 6336, "page_link": "https://dick.show/episode-336/"} +{"ep_num": 337, "title": "Episode 337 - Dick on Twitter", "pub_date": "Tue, 13 Dec 2022 09:17:00 +0000", "guid": "9645a0da-6770-4b7c-9654-0c9594bddea9", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_337.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 146442364, "duration_sec": 7286, "page_link": "https://dick.show/episode-337/"} +{"ep_num": 338, "title": "Episode 338 - Dick on Fireside Chats", "pub_date": "Tue, 20 Dec 2022 04:12:00 +0000", "guid": "316206e3-85bd-4e48-80d6-787fbbe1cd1f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_338.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 182636544, "duration_sec": 9052, "page_link": "https://dick.show/episode-338/"} +{"ep_num": 339, "title": "Episode 339 - Dick on Resolutions", "pub_date": "Tue, 27 Dec 2022 23:58:00 +0000", "guid": "6c1aa9db-8ede-43c6-8704-018c0dabc025", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_339.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 139459598, "duration_sec": 6958, "page_link": "https://dick.show/episode-339/"} +{"ep_num": 340, "title": "Episode 340 - Dick on Required Reading", "pub_date": "Tue, 03 Jan 2023 16:16:00 +0000", "guid": "4f7420bc-1493-4ab2-a86e-41cc445f17b5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_340.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 152147134, "duration_sec": 7536, "page_link": "https://dick.show/episode-340/"} +{"ep_num": 341, "title": "Episode 341 - Dick on backed.by", "pub_date": "Mon, 09 Jan 2023 23:49:00 +0000", "guid": "7407ec7a-5562-4dfa-95bf-ae7125f41b69", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_341.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 193241720, "duration_sec": 9554, "page_link": "https://dick.show/episode-341/"} +{"ep_num": 342, "title": "Episode 342 - Dick on Ralphamania", "pub_date": "Tue, 17 Jan 2023 06:57:00 +0000", "guid": "1b62a6c1-23de-458d-a63e-d278b1cd0604", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_342.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 132654826, "duration_sec": 6618, "page_link": "https://dick.show/episode-342/"} +{"ep_num": 343, "title": "Episode 343 - Dick on Eliza Blue", "pub_date": "Mon, 23 Jan 2023 07:39:00 +0000", "guid": "c8d65ea3-01d7-44ac-9e5d-2eddca0b5186", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_343.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 164303686, "duration_sec": 8201, "page_link": "https://dick.show/episode-343/"} +{"ep_num": 344, "title": "Episode 344 - Dick on Mr. Ice Princess", "pub_date": "Tue, 31 Jan 2023 05:15:00 +0000", "guid": "4ef98877-f7a1-4dae-9d93-c57049a1824c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_344.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 160307796, "duration_sec": 7974, "page_link": "https://dick.show/episode-344/"} +{"ep_num": 345, "title": "Episode 345 - Dick on Gay Zombies", "pub_date": "Tue, 07 Feb 2023 02:40:00 +0000", "guid": "a7b6dd2c-23ad-48b0-a154-e786e50223cd", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_345.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 152161946, "duration_sec": 7594, "page_link": "https://dick.show/episode-345/"} +{"ep_num": 346, "title": "Episode 346 - Dick on DAN", "pub_date": "Tue, 14 Feb 2023 05:35:00 +0000", "guid": "9a99efce-6b20-43c8-b4c5-8ec36ef21df2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_346.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 141402540, "duration_sec": 7030, "page_link": "https://dick.show/episode-346/"} +{"ep_num": 347, "title": "Episode 347 - Dick on Fat Censors", "pub_date": "Mon, 20 Feb 2023 18:48:00 +0000", "guid": "f846872c-5227-4816-8fcd-2262da0e7213", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_347.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 170406250, "duration_sec": 8491, "page_link": "https://dick.show/episode-347/"} +{"ep_num": 348, "title": "Episode 348 - Dick on Cringe", "pub_date": "Tue, 28 Feb 2023 08:31:00 +0000", "guid": "4eb34efd-73d3-4003-abec-3a840ae761e3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_348.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 125557192, "duration_sec": 6263, "page_link": "https://dick.show/episode-348/"} +{"ep_num": 349, "title": "Episode 349 - Dick on Arts and Crafts", "pub_date": "Tue, 07 Mar 2023 00:53:00 +0000", "guid": "1a1dece4-c819-4d37-bb37-e4b2f2f4d79f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_349.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 138096374, "duration_sec": 6878, "page_link": "https://dick.show/episode-349/"} +{"ep_num": 350, "title": "Episode 350 - Dick on the Manosphere", "pub_date": "Tue, 14 Mar 2023 01:53:00 +0000", "guid": "c1f78647-ba12-4d2f-9cb6-ed85c9ed50e2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_350.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 209632520, "duration_sec": 10360, "page_link": "https://dick.show/episode-350/"} +{"ep_num": 351, "title": "Episode 351 - Dick on Gravy Seals", "pub_date": "Tue, 21 Mar 2023 05:07:00 +0000", "guid": "626858be-0e01-4b28-82c2-6973ddeb5c66", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_351.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 157580776, "duration_sec": 7846, "page_link": "https://dick.show/episode-351/"} +{"ep_num": 352, "title": "Episode 352 - Dick on the Contrarian", "pub_date": "Tue, 28 Mar 2023 07:29:00 +0000", "guid": "26dfa51b-2dd0-48eb-9cd6-51a78d073f7b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_352.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 159545680, "duration_sec": 7947, "page_link": "https://dick.show/episode-352/"} +{"ep_num": 353, "title": "Episode 353 - Dick on Mexican Inflation", "pub_date": "Mon, 03 Apr 2023 18:12:00 +0000", "guid": "1aea9578-7857-4767-a6b7-2dbda3069518", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_353.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 146276836, "duration_sec": 7247, "page_link": "https://dick.show/episode-353/"} +{"ep_num": 354, "title": "Episode 354 - Dick on The Killing Joke", "pub_date": "Tue, 11 Apr 2023 04:50:00 +0000", "guid": "5d3e868d-1b73-46ae-9d98-8993b4cd5325", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_354.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 160908440, "duration_sec": 8002, "page_link": "https://dick.show/episode-354/"} +{"ep_num": 355, "title": "Episode 355 - Dick on Optional Poop", "pub_date": "Tue, 18 Apr 2023 01:05:00 +0000", "guid": "5d698f21-5140-41ee-8b94-792e4c8f233e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_355.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 163532814, "duration_sec": 8148, "page_link": "https://dick.show/episode-355/"} +{"ep_num": 356, "title": "Episode 356 - Dick on Vito's Merch", "pub_date": "Mon, 24 Apr 2023 23:14:00 +0000", "guid": "58980612-e794-4ef4-960d-a6a006548271", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_356.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 141858902, "duration_sec": 7058, "page_link": "https://dick.show/episode-356/"} +{"ep_num": 357, "title": "Episode 357 - Dick on Slippin' Mickeys", "pub_date": "Tue, 02 May 2023 00:11:00 +0000", "guid": "604c7ecc-69d3-43df-a131-675f88481ed7", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_357.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 142263114, "duration_sec": 7076, "page_link": "https://dick.show/episode-357/"} +{"ep_num": 358, "title": "Episode 358 - Dick on Poop River", "pub_date": "Mon, 08 May 2023 22:54:00 +0000", "guid": "7e08bf4e-95d6-49c5-995d-8acf58bab734", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_358.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 154573058, "duration_sec": 7718, "page_link": "https://dick.show/episode-358/"} +{"ep_num": 359, "title": "Episode 359 - Dick on Jon from Fishtank", "pub_date": "Tue, 16 May 2023 02:48:00 +0000", "guid": "50d77b18-2c84-4d88-a524-61f4dc5b698d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_359.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 163413162, "duration_sec": 8057, "page_link": "https://dick.show/episode-359/"} +{"ep_num": 360, "title": "Episode 360 - Dick on Zeroth Place", "pub_date": "Mon, 22 May 2023 03:58:00 +0000", "guid": "9ac6e696-fc63-4a1f-b34f-01fddc38fb39", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_360.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 165060272, "duration_sec": 8047, "page_link": "https://dick.show/episode-360/"} +{"ep_num": 361, "title": "Episode 361 - Dick on Lizard Feet", "pub_date": "Tue, 30 May 2023 06:46:00 +0000", "guid": "c8c48ad1-fcf6-4afc-bb82-0b306d3e543b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_361.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 177399980, "duration_sec": 8804, "page_link": "https://dick.show/episode-361/"} +{"ep_num": 362, "title": "Episode 362 - Dick on Apparently Unfinished", "pub_date": "Mon, 05 Jun 2023 06:17:00 +0000", "guid": "e50474e5-fde5-4290-b9b1-9b65b8d9c78b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_362.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 129629160, "duration_sec": 6436, "page_link": "https://dick.show/episode-362/"} +{"ep_num": 363, "title": "Episode 363 - Dick on the Hater's Book Club", "pub_date": "Tue, 13 Jun 2023 06:13:00 +0000", "guid": "d91a94e7-043e-4d5e-be59-2c796ff1a425", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_363.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 154768350, "duration_sec": 7712, "page_link": "https://dick.show/episode-363/"} +{"ep_num": 364, "title": "Episode 364 - Dick on Face Lasers", "pub_date": "Mon, 19 Jun 2023 21:53:00 +0000", "guid": "9e0ecf67-8fe7-4e80-9a4d-f5d9a3c7ec70", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_364.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 144285268, "duration_sec": 7159, "page_link": "https://dick.show/episode-364/"} +{"ep_num": 365, "title": "Episode 365 - Dick on Charity Scams", "pub_date": "Tue, 27 Jun 2023 05:39:00 +0000", "guid": "fa0b00da-22f8-4d6c-9553-ec4685d66ccf", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_365.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 195641660, "duration_sec": 9550, "page_link": "https://dick.show/episode-365/"} +{"ep_num": 366, "title": "Episode 366 - Dick on The Domain Disaster", "pub_date": "Tue, 04 Jul 2023 06:15:00 +0000", "guid": "3971d678-1dfc-4d46-aef3-c5a378e12001", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_366.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 143292522, "duration_sec": 7071, "page_link": "https://dick.show/episode-366/"} +{"ep_num": 367, "title": "Episode 367 - Dick on Expert Gaslighting", "pub_date": "Tue, 11 Jul 2023 07:19:00 +0000", "guid": "9cf7b84b-97bf-4ea1-baa8-9acb7da7c75e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_367.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 146683336, "duration_sec": 7332, "page_link": "https://dick.show/episode-367/"} +{"ep_num": 368, "title": "Episode 368 - Dick on The Umbrella Man", "pub_date": "Mon, 17 Jul 2023 20:02:00 +0000", "guid": "8145005d-98b2-4027-a5a9-3028f25c087e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_368.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 195599452, "duration_sec": 9699, "page_link": "https://dick.show/episode-368/"} +{"ep_num": 369, "title": "Episode 369 - Dick on the Return of the King", "pub_date": "Mon, 24 Jul 2023 16:38:00 +0000", "guid": "3750fa6d-2780-458e-8a7c-506f69687b66", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_369.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 234216910, "duration_sec": 11645, "page_link": "http://dick.show/episode-369/"} +{"ep_num": 370, "title": "Episode 370 - Dick on Greece", "pub_date": "Mon, 07 Aug 2023 17:27:00 +0000", "guid": "8b7b87e1-3404-45c4-bfab-5324440c1c7a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_370.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 167519776, "duration_sec": 8330, "page_link": "https://dick.show/episode-370/"} +{"ep_num": 371, "title": "Episode 371 - Dick on Brostronomy", "pub_date": "Tue, 15 Aug 2023 07:12:00 +0000", "guid": "7f91cb52-438d-4c36-b1f6-983bfcb69898", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_371.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 143743958, "duration_sec": 7116, "page_link": "https://dick.show/episode-371/"} +{"ep_num": 372, "title": "Episode 372 - Dick on Fake Hurricanes", "pub_date": "Tue, 22 Aug 2023 07:43:00 +0000", "guid": "1776675a-bf49-4b8c-a5c0-3844f5998abe", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_372.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 176096168, "duration_sec": 8790, "page_link": "https://dick.show/episode-372/"} +{"ep_num": 373, "title": "Episode 373 - Dick on Maddox Lives!", "pub_date": "Mon, 28 Aug 2023 04:47:00 +0000", "guid": "bb6944ce-6b33-406c-b87b-585ab0b732ee", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_373.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 249808310, "duration_sec": 12476, "page_link": "https://dick.show/episode-373/"} +{"ep_num": 374, "title": "Episode 374 - Dick on Fake Feds", "pub_date": "Mon, 04 Sep 2023 21:26:00 +0000", "guid": "fff547fc-0fa7-4701-939a-3732b45afaa6", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_374.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 156574436, "duration_sec": 7798, "page_link": "https://dick.show/episode-374/"} +{"ep_num": 375, "title": "Episode 375 - Dick on Waves of Masculinity", "pub_date": "Mon, 11 Sep 2023 17:34:00 +0000", "guid": "f40672e4-dca1-41b6-a9f3-bf07248aee7b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_375.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 181012378, "duration_sec": 9027, "page_link": "http://dick.show/episode-375/"} +{"ep_num": 376, "title": "Episode 376 - Dick on Bachelorette Party City", "pub_date": "Tue, 19 Sep 2023 06:56:00 +0000", "guid": "d4b29cb7-606d-4909-a02a-a21f928e6971", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_376.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 164663634, "duration_sec": 8092, "page_link": "https://dick.show/episode-376/"} +{"ep_num": 377, "title": "Episode 377 - Dick on Gentrification", "pub_date": "Tue, 26 Sep 2023 04:37:00 +0000", "guid": "3c95fa68-42ea-4850-b711-3bd6715ee2e6", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_377.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 133521588, "duration_sec": 6661, "page_link": "https://dick.show/episode-377/"} +{"ep_num": 378, "title": "Episode 378 - Dick on Big Magnets", "pub_date": "Mon, 02 Oct 2023 06:31:00 +0000", "guid": "0a417489-1b14-45db-b4f3-297cae19d485", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_378c.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 175109378, "duration_sec": 8560, "page_link": "https://dick.show/episode-378/"} +{"ep_num": 379, "title": "Episode 379 - Dick on World War Wheee!", "pub_date": "Mon, 09 Oct 2023 02:56:00 +0000", "guid": "08bf96a7-7ec4-479d-8729-81201935e112", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_379.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 187986016, "duration_sec": 9323, "page_link": "https://dick.show/episode-379/"} +{"ep_num": 380, "title": "Episode 380 - Dick on Grave Desecration", "pub_date": "Mon, 16 Oct 2023 04:33:00 +0000", "guid": "de1c5ecf-9c32-4a18-aa02-ad0c161ac8b3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_380.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 200714584, "duration_sec": 9986, "page_link": "https://dick.show/episode-380/"} +{"ep_num": 381, "title": "Episode 381 - Dick on Your Favorite Part", "pub_date": "Mon, 23 Oct 2023 05:06:00 +0000", "guid": "49fd2c33-7f01-4fdb-8b5a-addb6734455c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_381.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 186655794, "duration_sec": 9300, "page_link": "https://dick.show/episode-381/"} +{"ep_num": 382, "title": "Episode 382 - Dick on The Poop Gun", "pub_date": "Mon, 30 Oct 2023 17:16:00 +0000", "guid": "214e58b2-3fd5-4693-b031-fd5815f1fef2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_382.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 182376400, "duration_sec": 9018, "page_link": "https://dick.show/episode-382/"} +{"ep_num": 383, "title": "Episode 383 - Dick on Lord Miles", "pub_date": "Mon, 06 Nov 2023 04:51:00 +0000", "guid": "d6f3b170-c903-46a4-8857-5f85b3913e66", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_383.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 180935778, "duration_sec": 8920, "page_link": "https://dick.show/episode-383/"} +{"ep_num": 384, "title": "Episode 384 - Dick on Butch Killigan", "pub_date": "Mon, 13 Nov 2023 07:00:00 +0000", "guid": "e2ef874a-4c44-4254-8e0b-79e797d60c2d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_384.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 196515764, "duration_sec": 9811, "page_link": "https://dick.show/episode-384/"} +{"ep_num": 385, "title": "Episode 385 - Dick on Adam22's Birthday Party", "pub_date": "Mon, 20 Nov 2023 06:08:00 +0000", "guid": "4cd30450-cf40-4b60-8ffc-0e3c85d16d17", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_385.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 187141678, "duration_sec": 9216, "page_link": "https://dick.show/episode-385/"} +{"ep_num": 386, "title": "Episode 386 - Dick on Afuera!", "pub_date": "Mon, 27 Nov 2023 05:43:00 +0000", "guid": "760cbb2f-38c1-459f-9d40-9fcbfc16aa8c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_386.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 163630132, "duration_sec": 8069, "page_link": "https://dick.show/episode-386/"} +{"ep_num": 387, "title": "Episode 387 - Dick on The Line in the Sand", "pub_date": "Mon, 04 Dec 2023 05:59:00 +0000", "guid": "5707c050-0045-49ae-862e-489584ae9bcc", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_387.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 170691848, "duration_sec": 8489, "page_link": "https://dick.show/episode-387/"} +{"ep_num": 388, "title": "Episode 388 - Dick on Obsession", "pub_date": "Mon, 11 Dec 2023 05:53:00 +0000", "guid": "a68d4d1a-519a-4dee-962c-869e9d1beada", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_388.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 206379094, "duration_sec": 10278, "page_link": "https://dick.show/episode-388/"} +{"ep_num": 389, "title": "Episode 389 - Dick on Somewhat Salad", "pub_date": "Mon, 18 Dec 2023 06:08:00 +0000", "guid": "fa3526b8-41af-4bcf-8102-8a0074c981cd", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_389.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 179254906, "duration_sec": 8871, "page_link": "https://dick.show/episode-389/"} +{"ep_num": 390, "title": "Episode 390 - Dick on America's Next Top Pedophile", "pub_date": "Mon, 25 Dec 2023 05:49:00 +0000", "guid": "0aedfcdd-ca4b-4956-a172-1c80e84fc294", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_390.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 126792746, "duration_sec": 6325, "page_link": "https://dick.show/episode-390/"} +{"ep_num": 391, "title": "Episode 391 - Dick on Vinegar Workout Supplements", "pub_date": "Mon, 01 Jan 2024 06:58:00 +0000", "guid": "9511428d-c64e-472c-b712-03555214d99e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_391.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 149653788, "duration_sec": 7353, "page_link": "https://dick.show/episode-391/"} +{"ep_num": 392, "title": "Episode 392 - Dick on Fudgers", "pub_date": "Mon, 08 Jan 2024 06:09:00 +0000", "guid": "eba563f5-22cf-474e-ae6e-94eee61152c9", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_392.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 197556168, "duration_sec": 9878, "page_link": "https://dick.show/episode-392/"} +{"ep_num": 393, "title": "Episode 393 - Dick on What Makes Your", "pub_date": "Mon, 15 Jan 2024 05:51:00 +0000", "guid": "562936f8-d98e-4978-8785-84cbd1dd5f2f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_393.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 182914330, "duration_sec": 9119, "page_link": "https://dick.show/episode-393/"} +{"ep_num": 394, "title": "Episode 394 - Dick on Scotch Earth", "pub_date": "Mon, 22 Jan 2024 07:22:00 +0000", "guid": "5b6083ab-324e-4c3f-b2e0-aaa7f6b92c90", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_394.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 150233094, "duration_sec": 7472, "page_link": "https://dick.show/episode-394/"} +{"ep_num": 395, "title": "Episode 395 - Dick on Stochastic Feet Stuff", "pub_date": "Mon, 29 Jan 2024 18:30:00 +0000", "guid": "d5a07377-c646-4820-a53c-aabc9acda904", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_395.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 205718564, "duration_sec": 10178, "page_link": "https://dick.show/episode-395/"} +{"ep_num": 396, "title": "Episode 396 - Dick on Horse-Man", "pub_date": "Mon, 05 Feb 2024 06:29:00 +0000", "guid": "54122836-6000-4b33-b897-12df645ef101", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_396.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 252620804, "duration_sec": 12497, "page_link": "https://dick.show/episode-396/"} +{"ep_num": 397, "title": "Episode 397 - Dick on Bad Photoshops", "pub_date": "Mon, 12 Feb 2024 07:07:00 +0000", "guid": "75851703-6af6-4498-8e57-b580261f1237", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/1707853395970_The_Dick_Show_397b.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 192558538, "duration_sec": 9589, "page_link": "https://dick.show/episode-397/"} +{"ep_num": 398, "title": "Episode 398 - Dick on Sean's Dog", "pub_date": "Mon, 19 Feb 2024 06:55:00 +0000", "guid": "618b5a2c-f0c1-4210-9282-73527ff158bd", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_398.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 190718576, "duration_sec": 9372, "page_link": "https://dick.show/episode-398/"} +{"ep_num": 399, "title": "Episode 399 - Dick on 100% Content", "pub_date": "Mon, 26 Feb 2024 06:37:00 +0000", "guid": "5ea2f693-d51a-4ad2-b65f-701d05a5bb8f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_399.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 200589170, "duration_sec": 9975, "page_link": "https://dick.show/episode-399/"} +{"ep_num": 400, "title": "Episode 400 - Dick on 1984: Part 2", "pub_date": "Mon, 04 Mar 2024 07:35:00 +0000", "guid": "3cb58f8c-30e7-4fd1-9026-7ba815e11c53", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_400.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 143132996, "duration_sec": 7100, "page_link": "https://dick.show/episode-400/"} +{"ep_num": 401, "title": "Episode 401 - Dick on Revenge Bankruptcy", "pub_date": "Mon, 11 Mar 2024 05:25:00 +0000", "guid": "f642147a-82f4-4bcd-bce1-d2387fe300a1", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_401.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 166462730, "duration_sec": 8007, "page_link": "https://dick.show/episode-401/"} +{"ep_num": 402, "title": "Episode 402 - Dick on The Meat Intervention", "pub_date": "Mon, 18 Mar 2024 05:29:00 +0000", "guid": "4fc9c4e6-6c14-423c-a1ee-c83cd1925d65", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_402.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 181909602, "duration_sec": 8974, "page_link": "https://dick.show/episode-402/"} +{"ep_num": 403, "title": "Episode 403 - Dick on 89th Place", "pub_date": "Mon, 25 Mar 2024 05:31:00 +0000", "guid": "6e41b518-843f-4d4f-bb6c-1e25f3b11729", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_403.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 216050646, "duration_sec": 10764, "page_link": "https://dick.show/episode-403/"} +{"ep_num": 404, "title": "Episode 404 - Dick on It Get's You Dead", "pub_date": "Tue, 02 Apr 2024 05:55:00 +0000", "guid": "d99189a2-0d7d-40ef-9bf6-8c94841a455e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_404.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 188106344, "duration_sec": 9391, "page_link": "https://dick.show/episode-404/"} +{"ep_num": 405, "title": "Episode 405 - Dick on the Slowpocalypse", "pub_date": "Mon, 08 Apr 2024 05:04:00 +0000", "guid": "3ecdc7c5-cbd7-4fca-bbc4-dad9d625760e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_405.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 193713932, "duration_sec": 9669, "page_link": "https://dick.show/episode-405/"} +{"ep_num": 406, "title": "Episode 406 - Dick on Bums vs. Drones", "pub_date": "Mon, 15 Apr 2024 18:25:00 +0000", "guid": "66027307-168e-4b7f-8c16-c3c4477ebad5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_406.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 226182240, "duration_sec": 11167, "page_link": "https://dick.show/episode-406/"} +{"ep_num": 407, "title": "Episode 407 - Dick on Super Christ", "pub_date": "Mon, 22 Apr 2024 06:01:00 +0000", "guid": "430c01d3-2650-4b81-a1d9-ffd61ad8671b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_407.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 217949478, "duration_sec": 10848, "page_link": "https://dick.show/episode-407/"} +{"ep_num": 408, "title": "Episode 408 - Dick on Real Writer Problems", "pub_date": "Mon, 29 Apr 2024 16:10:00 +0000", "guid": "c260fce7-5ec7-4723-b307-443208183fa1", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_408.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 241745640, "duration_sec": 12045, "page_link": "https://dick.show/episode-408/"} +{"ep_num": 409, "title": "Episode 409 - Dick on the Bearllema", "pub_date": "Mon, 06 May 2024 04:39:00 +0000", "guid": "006a997b-dd12-4f48-a5b5-b8a7b348a1a3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_409.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 170504902, "duration_sec": 8473, "page_link": "https://dick.show/episode-409/"} +{"ep_num": 410, "title": "Episode 410 - Dick on the Butt Wand", "pub_date": "Tue, 14 May 2024 06:40:00 +0000", "guid": "6fe3d4c3-b0c6-4928-a525-77378f8b44d6", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_410.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 194992604, "duration_sec": 9738, "page_link": "https://dick.show/episode-410/"} +{"ep_num": 411, "title": "Episode 411 - Dick on Tankerbelle", "pub_date": "Mon, 20 May 2024 06:41:00 +0000", "guid": "7217a129-c10e-4946-9fd3-1b8aa4b19d72", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_411.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 141585138, "duration_sec": 7000, "page_link": "https://dick.show/episode-411/"} +{"ep_num": 412, "title": "Episode 412 - Dick on Hooooo Boy!", "pub_date": "Tue, 28 May 2024 06:44:00 +0000", "guid": "dd12e695-753b-4ece-8ff2-5076d1e5c6a3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_412.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 209931660, "duration_sec": 10433, "page_link": "https://dick.show/episode-412/"} +{"ep_num": 413, "title": "Episode 413 - Dick on Stoplight Sensors", "pub_date": "Tue, 04 Jun 2024 05:44:00 +0000", "guid": "d207a58a-0a38-478c-910c-c79fd663f18b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_413.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 152831628, "duration_sec": 7576, "page_link": "https://dick.show/episode-413/"} +{"ep_num": 414, "title": "Episode 414 - Dick on Riley's Arrest", "pub_date": "Mon, 10 Jun 2024 06:26:00 +0000", "guid": "54b15bf6-5bc2-474e-8a23-a5444ace44da", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_414.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 166146848, "duration_sec": 8293, "page_link": "https://dick.show/episode-414/"} +{"ep_num": 415, "title": "Episode 415 - Dick on Rain Man Flag Laws", "pub_date": "Mon, 17 Jun 2024 16:35:00 +0000", "guid": "1af284a4-6a0f-4158-9689-a91d68c380c2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_415.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 155204808, "duration_sec": 7703, "page_link": "https://dick.show/episode-415/"} +{"ep_num": 416, "title": "Episode 416 - Dick on the Hair in Your Curse", "pub_date": "Mon, 24 Jun 2024 06:05:00 +0000", "guid": "e0ff0e50-a675-4f7b-a2fd-9cf8c774c4fe", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_416.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 198767008, "duration_sec": 9911, "page_link": "https://dick.show/episode-416/"} +{"ep_num": 417, "title": "Episode 417 - Dick on Hipster Prison", "pub_date": "Mon, 01 Jul 2024 05:03:00 +0000", "guid": "68a13d2d-61ea-461e-ab4c-bd9b7f71ac6c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_417.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 197500560, "duration_sec": 9818, "page_link": "https://dick.show/episode-417/"} +{"ep_num": 418, "title": "Episode 418 - Dick on New Weights", "pub_date": "Mon, 08 Jul 2024 06:20:00 +0000", "guid": "e6041898-3106-4353-b4ad-ffd1b6ef0f2a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_418.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 161512030, "duration_sec": 8061, "page_link": "https://dick.show/episode-418/"} +{"ep_num": 419, "title": "Episode 419 - Dick on Big Grrrls Bodyguards", "pub_date": "Mon, 15 Jul 2024 06:08:00 +0000", "guid": "4b2cf909-e7b7-4de7-b157-36d94407c343", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_419.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 165999644, "duration_sec": 8285, "page_link": "https://dick.show/episode-419/"} +{"ep_num": 420, "title": "Episode 420 - Dick on Disney Rash", "pub_date": "Mon, 22 Jul 2024 05:39:00 +0000", "guid": "e87d92a6-14ef-4de3-ad7c-83a548402d35", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_420.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 193268164, "duration_sec": 9607, "page_link": "https://dick.show/episode-420/"} +{"ep_num": 421, "title": "Episode 421 - Dick on Large-Bodied Bicyclers", "pub_date": "Mon, 05 Aug 2024 18:33:00 +0000", "guid": "b5782387-c328-4306-9dbf-ce9f4d28a8cb", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_421.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 164988606, "duration_sec": 8091, "page_link": "https://dick.show/episode-421/"} +{"ep_num": 422, "title": "Episode 422 - Dick on B-Dancing", "pub_date": "Mon, 12 Aug 2024 05:41:00 +0000", "guid": "6da84940-f85c-4c2e-b4f4-07555ca113db", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_422.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 214544074, "duration_sec": 10689, "page_link": "https://dick.show/episode-422/"} +{"ep_num": 423, "title": "Episode 423 - Dick on The Infinity Hoop", "pub_date": "Mon, 19 Aug 2024 06:16:00 +0000", "guid": "c07985ec-353a-4224-9d74-c0cfdbb11748", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_423.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 171300104, "duration_sec": 8503, "page_link": "https://dick.show/episode-423/"} +{"ep_num": 424, "title": "Episode 424 - Dick on Kamikaze Scooters", "pub_date": "Mon, 26 Aug 2024 06:03:00 +0000", "guid": "e4f35291-8ec7-4dee-810a-b4d5a5b1c7c0", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_424.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 147030406, "duration_sec": 7283, "page_link": "https://dick.show/episode-424/"} +{"ep_num": 425, "title": "Episode 425 - Dick on Good Advice", "pub_date": "Mon, 02 Sep 2024 05:55:00 +0000", "guid": "27e6d964-1d61-472d-9216-cf5679a79118", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_425.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 201039996, "duration_sec": 9999, "page_link": "https://dick.show/episode-425/"} +{"ep_num": 426, "title": "Episode 426 - Dick on Oinkamania", "pub_date": "Mon, 09 Sep 2024 05:35:00 +0000", "guid": "35c16d58-0f6a-4c5d-bc80-43a16c77396e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_426.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 270172660, "duration_sec": 13464, "page_link": "https://dick.show/episode-426/"} +{"ep_num": 427, "title": "Episode 427 - Dick on Excuse Me, I'm Speaking", "pub_date": "Mon, 16 Sep 2024 05:49:00 +0000", "guid": "78da5260-10e2-47a8-8a82-95754b050e67", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_427.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 188148496, "duration_sec": 9359, "page_link": "https://dick.show/episode-427/"} +{"ep_num": 428, "title": "Episode 428 - Dick on Character Creation", "pub_date": "Mon, 23 Sep 2024 05:08:00 +0000", "guid": "78f7eff4-b192-4232-8d98-3832f18d175f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_428.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 173030196, "duration_sec": 8600, "page_link": "https://dick.show/episode-428/"} +{"ep_num": 429, "title": "Episode 429 - Dick on \"The Newly Ped\" Game", "pub_date": "Mon, 30 Sep 2024 15:37:00 +0000", "guid": "737447fa-1a0f-4864-842f-51a5a14b30b8", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_429.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 194552834, "duration_sec": 9590, "page_link": "https://dick.show/episode-429/"} +{"ep_num": 430, "title": "Episode 430 - Dick on Bad Bail", "pub_date": "Mon, 07 Oct 2024 05:10:00 +0000", "guid": "d0c46bf2-d4db-4382-b361-f839ece618e6", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_430.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 182272312, "duration_sec": 8805, "page_link": "https://dick.show/episode-430/"} +{"ep_num": 431, "title": "Episode 431 - Dick on The Tungsteñera", "pub_date": "Mon, 14 Oct 2024 11:27:00 +0000", "guid": "d0b9db23-ac1b-40d1-998b-0f502ee2b4ab", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_431.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 181781404, "duration_sec": 9079, "page_link": "https://dick.show/episode-431/"} +{"ep_num": 432, "title": "Episode 432 - Dick on Not Spilling Chips in the Car", "pub_date": "Mon, 21 Oct 2024 09:34:00 +0000", "guid": "c49dc6a8-9a05-4fe4-ac33-f8e5bd8caa55", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_432.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 188644650, "duration_sec": 9389, "page_link": "https://dick.show/episode-432/"} +{"ep_num": 433, "title": "Episode 433 - Dick on Guitar Talk", "pub_date": "Mon, 28 Oct 2024 06:03:00 +0000", "guid": "50c72756-3ddd-40b8-9434-ee4ac5386d74", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_433.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 227415722, "duration_sec": 11298, "page_link": "https://dick.show/episode-433/"} +{"ep_num": 434, "title": "Episode 434 - Dick on Dark Romance Reviews", "pub_date": "Mon, 04 Nov 2024 06:02:00 +0000", "guid": "6c0a2241-e21d-47b4-82b9-aa0a11389a45", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_434.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 176026446, "duration_sec": 8783, "page_link": "https://dick.show/episode-434/"} +{"ep_num": 435, "title": "Episode 435 - Dick on More Gloating", "pub_date": "Mon, 11 Nov 2024 05:34:00 +0000", "guid": "fc3958fb-4055-4059-b1fc-9c5ef6b52b7d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_435.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 190877472, "duration_sec": 9509, "page_link": "https://dick.show/episode-435/"} +{"ep_num": 436, "title": "Episode 436 - Dick on Testifying", "pub_date": "Tue, 19 Nov 2024 08:05:00 +0000", "guid": "afb75f6a-0fbb-4259-a939-2927ffcb5bd0", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_436.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 176927188, "duration_sec": 8794, "page_link": "https://dick.show/episode-436/"} +{"ep_num": 437, "title": "Episode 437 - Dick on Formal Introductions", "pub_date": "Mon, 25 Nov 2024 06:55:00 +0000", "guid": "b1458669-c129-4d5a-b3ee-37f97515d387", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_437.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 157208120, "duration_sec": 7846, "page_link": "https://dick.show/episode-437/"} +{"ep_num": 438, "title": "Episode 438 - Dick on Good News, Bad News", "pub_date": "Mon, 02 Dec 2024 05:51:00 +0000", "guid": "ea687fbb-40b2-4b87-a214-c35578395919", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_438.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 159870710, "duration_sec": 7933, "page_link": "https://dick.show/episode-438/"} +{"ep_num": 439, "title": "Episode 439 - Dick on Good!", "pub_date": "Mon, 09 Dec 2024 08:01:00 +0000", "guid": "b76eeb7c-453c-44b2-b713-30ae93193c93", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_439b.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 204178498, "duration_sec": 10171, "page_link": "https://dick.show/episode-439/"} +{"ep_num": 440, "title": "Episode 440 - Dick on Follow the Fat", "pub_date": "Mon, 16 Dec 2024 06:33:00 +0000", "guid": "dca72c73-d2bf-4ee8-8836-72f460792ab4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_440.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 147998598, "duration_sec": 7289, "page_link": "https://dick.show/episode-440/"} +{"ep_num": 441, "title": "Episode 441 - Dick on Christmas Creeps", "pub_date": "Tue, 24 Dec 2024 00:44:00 +0000", "guid": "417f5f13-3998-4129-a893-05072f74fc37", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_441.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 185400414, "duration_sec": 9217, "page_link": "https://dick.show/episode-441/"} +{"ep_num": 442, "title": "Episode 442 - Dick on The Best and Brightest", "pub_date": "Sun, 29 Dec 2024 23:32:00 +0000", "guid": "c903ab3a-e198-4244-a157-e1ed07ca145a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_442.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 138366336, "duration_sec": 6579, "page_link": "https://dick.show/episode-442"} +{"ep_num": 443, "title": "Episode 443 - Dick on Counting Calories", "pub_date": "Mon, 06 Jan 2025 16:07:00 +0000", "guid": "57f89f2d-b356-42be-8b04-6f6e4b3f262c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_443.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 125888380, "duration_sec": 6267, "page_link": "https://dick.show/episode-443/"} +{"ep_num": 444, "title": "Episode 444 - Dick on Fighting Fires", "pub_date": "Mon, 13 Jan 2025 06:36:00 +0000", "guid": "e49defa1-5257-4748-8832-bace976da473", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_444b.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 153973888, "duration_sec": 7683, "page_link": "https://dick.show/episode-444/"} +{"ep_num": 445, "title": "Episode 445 - Dick on Generational Wealth", "pub_date": "Mon, 20 Jan 2025 18:17:00 +0000", "guid": "fb6d9830-00ba-49ff-adda-4d0aafd9aa7c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_445.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 156371712, "duration_sec": 7783, "page_link": "https://dick.show/episode-445"} +{"ep_num": 446, "title": "Episode 446 - Dick on Eating Paste", "pub_date": "Mon, 27 Jan 2025 07:12:00 +0000", "guid": "9017e9e5-06f4-4d0c-8495-da50a612db5a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_446.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 201718708, "duration_sec": 9998, "page_link": "https://dick.show/episode-446/"} +{"ep_num": 447, "title": "Episode 447 - Dick on Size-Inclusive Cars", "pub_date": "Mon, 03 Feb 2025 03:36:00 +0000", "guid": "aa6e093e-b459-4084-9f4f-29910046db52", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_447.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 149266504, "duration_sec": 7134, "page_link": "https://dick.show/episode-447/"} +{"ep_num": 448, "title": "Episode 448 - Dick on the Sexually Offended", "pub_date": "Mon, 10 Feb 2025 17:55:00 +0000", "guid": "4938ccfe-14f5-4db2-89e3-b06e4bd4580a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_448.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 150884494, "duration_sec": 7421, "page_link": "https://dick.show/episode-448/"} +{"ep_num": 449, "title": "Episode 449 - Dick on Goygamel", "pub_date": "Mon, 17 Feb 2025 15:14:00 +0000", "guid": "efaa49a7-f99b-487c-afdc-4d320e8a55c0", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_449.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 160858176, "duration_sec": 7968, "page_link": "https://dick.show/episode-449/"} +{"ep_num": 450, "title": "Episode 450 - Dick on Hungry, Hungry Hooters", "pub_date": "Mon, 24 Feb 2025 05:09:00 +0000", "guid": "5fa4887e-6c6d-4352-ba3d-60079c74e3a7", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_450.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 174720864, "duration_sec": 8437, "page_link": "https://dick.show/episode-450/"} +{"ep_num": 451, "title": "Episode 451 - Dick on The Horse is Fine", "pub_date": "Mon, 03 Mar 2025 17:27:00 +0000", "guid": "d2376445-8916-4a63-8332-8cfdf06d0397", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_451.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 214582540, "duration_sec": 10691, "page_link": "https://dick.show/episode-451/"} +{"ep_num": 452, "title": "Episode 452 - Dick on Drug-Head", "pub_date": "Mon, 10 Mar 2025 13:00:00 +0000", "guid": "1ffd36c0-3f5a-4636-92c3-a728aa0b91d6", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_452.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 189237498, "duration_sec": 9434, "page_link": "https://dick.show/episode-452/"} +{"ep_num": 453, "title": "Episode 453 - Dick on Tasting the Foam", "pub_date": "Tue, 18 Mar 2025 03:31:00 +0000", "guid": "543d95cb-9f72-40cc-b7d0-6c58a306fd45", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_453.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 206169666, "duration_sec": 9937, "page_link": "https://dick.show/episode-453"} +{"ep_num": 454, "title": "Episode 454 - Dick on Slurping it Up", "pub_date": "Mon, 24 Mar 2025 16:02:00 +0000", "guid": "5d1fd18e-b2cd-4339-b783-9b286edaf423", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_454.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 193709266, "duration_sec": 9661, "page_link": "https://dick.show/episode-454/"} +{"ep_num": 455, "title": "Episode 455 - Dick on a Homeless Wedding", "pub_date": "Mon, 31 Mar 2025 16:27:00 +0000", "guid": "dd1fe2b1-dc53-4554-825f-840bf6c5f5d0", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_455.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 118310080, "duration_sec": 5609, "page_link": "https://dick.show/episode-455/"} +{"ep_num": 456, "title": "Episode 456 - Dick on The Liar's Fund", "pub_date": "Mon, 07 Apr 2025 14:50:00 +0000", "guid": "417d257a-6834-44f5-9bdf-58399394fe00", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_456b.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 153550944, "duration_sec": 7585, "page_link": "https://dick.show/episode-456/"} +{"ep_num": 457, "title": "Episode 457 - Dick on Obesity Simulation Suits", "pub_date": "Mon, 14 Apr 2025 02:16:00 +0000", "guid": "000334c3-90b7-49ba-8dd4-ee760679d645", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_457.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 207812472, "duration_sec": 10025, "page_link": "https://dick.show/episode-457/"} +{"ep_num": 458, "title": "Episode 458 - Dick on The Ringer", "pub_date": "Tue, 22 Apr 2025 05:32:00 +0000", "guid": "a2ea5207-2bc3-46ad-a939-db5e40bba257", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_458.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 151663830, "duration_sec": 7547, "page_link": "https://dick.show/episode-458/"} +{"ep_num": 459, "title": "Episode 459 - Dick on Time is a Fat Circle", "pub_date": "Mon, 28 Apr 2025 03:17:00 +0000", "guid": "b628718a-9f50-42f8-8f9f-b7d3fd7fe435", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_459.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 172515770, "duration_sec": 8611, "page_link": "https://dick.show/episode-459/"} +{"ep_num": 460, "title": "Episode 460 - Dick on The Fear", "pub_date": "Mon, 12 May 2025 13:08:00 +0000", "guid": "26bc2691-53d1-4ae2-91e9-dd9db519a9ef", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_460.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 128394020, "duration_sec": 6312, "page_link": "https://dick.show/episode-460"} +{"ep_num": 461, "title": "Episode 461 - Dick on High-Fives", "pub_date": "Sun, 18 May 2025 23:10:00 +0000", "guid": "912e1295-5ff9-46b8-ba8b-657118c1c6ec", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_461.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 147521559, "duration_sec": 7361, "page_link": "https://dick.show/episode-461/"} +{"ep_num": 462, "title": "Episode 462 - Dick on Breastfeeding Class", "pub_date": "Mon, 26 May 2025 02:08:00 +0000", "guid": "2b35e59b-d33b-4920-ad33-cb696799fbce", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_462.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 203670642, "duration_sec": 9885, "page_link": "https://dick.show/episode-462/"} +{"ep_num": 463, "title": "Episode 463 - Dick on The Grave Digger", "pub_date": "Mon, 02 Jun 2025 02:52:00 +0000", "guid": "15543f40-b522-4226-bca2-bc2bca1e49c4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_463.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 171490632, "duration_sec": 8433, "page_link": "https://dick.show/episode-463"} +{"ep_num": 464, "title": "Episode 464 - Dick on Fat Women Throwing Bicycles", "pub_date": "Mon, 09 Jun 2025 04:52:00 +0000", "guid": "70ada3ca-a6bc-4abc-8561-642aa9ad2ad5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_464.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 172643660, "duration_sec": 8618, "page_link": "https://dick.show/episode-464/"} +{"ep_num": 465, "title": "Episode 465 - Dick on Dadmaxxing", "pub_date": "Mon, 16 Jun 2025 05:21:00 +0000", "guid": "133b8381-4713-47fd-b500-25a19c187ba3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_465.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 146154304, "duration_sec": 7136, "page_link": "https://dick.show/episode-465/"} +{"ep_num": 466, "title": "Episode 466 - Dick on The Two-Seater", "pub_date": "Mon, 30 Jun 2025 15:05:00 +0000", "guid": "81dc6adc-7bb8-4413-b4d3-5b45c59175f1", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_466.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 139634260, "duration_sec": 6919, "page_link": "https://dick.show/episode-466/"} +{"ep_num": 467, "title": "Episode 467 - Dick on Nitrous Wars", "pub_date": "Mon, 07 Jul 2025 00:54:00 +0000", "guid": "bfa4dd8c-4d67-4c15-b535-630431a046a3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_467.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 180680414, "duration_sec": 8938, "page_link": "https://dick.show/episode-467/"} +{"ep_num": 468, "title": "Episode 468 - Dick on The Family Man", "pub_date": "Mon, 14 Jul 2025 04:10:00 +0000", "guid": "a92a9b39-66a6-4d38-84c0-99febb9e7374", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_468.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 200986708, "duration_sec": 10012, "page_link": "https://dick.show/episode-468"} +{"ep_num": 469, "title": "Episode 469 - Dick on Slender Man's Wife", "pub_date": "Sun, 27 Jul 2025 22:33:00 +0000", "guid": "5b71d742-a71d-4670-9c01-ee48cb521eb3", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_469.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 188399548, "duration_sec": 9285, "page_link": "https://dick.show/episode-469/"} +{"ep_num": 470, "title": "Episode 470 - Dick on Boris Fatenov", "pub_date": "Mon, 04 Aug 2025 05:56:00 +0000", "guid": "6256f954-882b-4801-80a1-5316e5013837", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_470.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 211926834, "duration_sec": 10579, "page_link": "https://dick.show/episode-470/"} +{"ep_num": 471, "title": "Episode 471 - Dick on Walking Into Heaven", "pub_date": "Mon, 11 Aug 2025 02:38:00 +0000", "guid": "9bb04476-35ba-411b-a0e7-da1b6e1f31bb", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_471.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 185320952, "duration_sec": 9251, "page_link": "https://dick.show/episode-471/"} +{"ep_num": 472, "title": "Episode 472 - Dick on ChatGUPTA", "pub_date": "Sun, 17 Aug 2025 23:45:00 +0000", "guid": "a9b4b7b1-fc9c-4db3-8fa0-2d8a033b53d4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_472.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 200896760, "duration_sec": 9823, "page_link": "https://dick.show/episode-472/"} +{"ep_num": 473, "title": "Episode 473 - Dick on Buffy", "pub_date": "Mon, 25 Aug 2025 07:53:00 +0000", "guid": "87bfde42-acfb-4d31-b22a-1318a47382ad", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_473.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 162539306, "duration_sec": 8112, "page_link": "https://dick.show/episode-473"} +{"ep_num": 474, "title": "Episode 474 - Dick on The Stuntaverse", "pub_date": "Sun, 31 Aug 2025 21:33:00 +0000", "guid": "8b769b25-668c-4e94-b1fc-fab127e0f14e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_474.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 163429462, "duration_sec": 8153, "page_link": "https://dick.show/episode-474/"} +{"ep_num": 475, "title": "Episode 475 - Dick on The Windi", "pub_date": "Sun, 07 Sep 2025 22:16:00 +0000", "guid": "ae60bc6b-4fcd-4dda-b685-7d69440d35c6", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_475.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 126522790, "duration_sec": 6326, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 476, "title": "Episode 476 - Dick on AI Jesus", "pub_date": "Sun, 14 Sep 2025 23:43:00 +0000", "guid": "9036b2bb-6719-4c6d-9451-5713ccaabec6", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_476.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 140070860, "duration_sec": 6989, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 477, "title": "Episode 477 - Dick on Henry Ford Fitness", "pub_date": "Mon, 22 Sep 2025 02:51:00 +0000", "guid": "96652dbf-66f4-4e97-b761-bcb3a301ef6b", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_477.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 145379718, "duration_sec": 7122, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 478, "title": "Episode 478 - Dick on Straight Drop", "pub_date": "Sun, 28 Sep 2025 23:33:00 +0000", "guid": "93a88538-2393-47d1-a4d5-c76b68796681", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_478.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 153683314, "duration_sec": 7416, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 479, "title": "Episode 479 - Dick on The Pie Piper", "pub_date": "Mon, 06 Oct 2025 10:00:00 +0000", "guid": "906ab5c2-13f3-4f1d-b908-f1b231435cdd", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_479.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 177008922, "duration_sec": 8731, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 480, "title": "Episode 480 - Dick on The Seattle Fat Mall", "pub_date": "Mon, 13 Oct 2025 14:06:00 +0000", "guid": "baad6a7f-5608-4ea0-94a3-1a960053b11d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_480.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 196995302, "duration_sec": 9581, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 481, "title": "Episode 481 - Dick on The Gooch Seam", "pub_date": "Mon, 20 Oct 2025 02:19:00 +0000", "guid": "4cab0423-f733-4e4d-9681-45c9c7f69c9a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_481.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 179879082, "duration_sec": 8939, "page_link": "https://dick.show/"} +{"ep_num": 482, "title": "Episode 482 - Dick on Sean's Animal Corner: The Game", "pub_date": "Sun, 26 Oct 2025 04:29:00 +0000", "guid": "ffc99462-14de-46b0-8bfa-7fffe6793665", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_482.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 161108192, "duration_sec": 7993, "page_link": "https://dick.show/"} +{"ep_num": 483, "title": "Episode 483 - Dick on Goat Milk", "pub_date": "Sun, 02 Nov 2025 01:35:00 +0000", "guid": "560a4100-12fd-4393-854c-c034d86c4725", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_483.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 178358582, "duration_sec": 8525, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 484, "title": "Episode 484 - Dick on HIPPO Violations", "pub_date": "Mon, 10 Nov 2025 02:04:00 +0000", "guid": "4cc7be86-c0e8-4cd5-86ee-de35818dfb7e", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_484.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 166080386, "duration_sec": 8268, "page_link": "https://dick.show/"} +{"ep_num": 485, "title": "Episode 485 - Dick on Quirk Chungus World", "pub_date": "Mon, 17 Nov 2025 00:33:00 +0000", "guid": "45859165-ef78-4186-a6cb-c7f2c19478d1", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_485.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 206814454, "duration_sec": 10051, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 486, "title": "Episode 486 - Dick on Grocery Stars", "pub_date": "Mon, 24 Nov 2025 15:42:00 +0000", "guid": "1e2dd7cb-5de7-470e-a0ff-29216c8d56c9", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_486.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 212096390, "duration_sec": 10490, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 487, "title": "Episode 487 - Dick on Black Krang", "pub_date": "Mon, 01 Dec 2025 02:03:00 +0000", "guid": "ae8a0aa0-a725-4d45-a627-046aaa55b5a4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_487.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 170537264, "duration_sec": 8503, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 488, "title": "Episode 488 - Dick on Cursing on the Moon", "pub_date": "Mon, 08 Dec 2025 15:21:00 +0000", "guid": "23419bef-51ea-4826-97b4-75a0f2e1b0b4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_488.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 202829818, "duration_sec": 10045, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 489, "title": "Episode 489 - Dick on SantaCon", "pub_date": "Mon, 15 Dec 2025 15:35:00 +0000", "guid": "1979bde3-ac36-43b5-9f7b-7617e77167ba", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_489.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 171251618, "duration_sec": 8514, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 490, "title": "Episode 490 - Dick on Christmas Crash-Outs", "pub_date": "Sun, 21 Dec 2025 23:48:00 +0000", "guid": "a2d60d31-f758-4f11-af7b-5fff5a3bb9ed", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_490.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 176319222, "duration_sec": 8708, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 491, "title": "Episode 491 - Dick on Strangest Things", "pub_date": "Sun, 28 Dec 2025 23:39:00 +0000", "guid": "efa90cf9-78c7-44de-8d1f-49a9f24a0bca", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_491.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 191942934, "duration_sec": 9495, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 492, "title": "Episode 492 - Dick on Homeless Surveys", "pub_date": "Mon, 05 Jan 2026 00:47:00 +0000", "guid": "8acb6931-7793-4e23-9a9b-e9493e7f6284", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_492.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 207979964, "duration_sec": 10280, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 493, "title": "Episode 493 - Dick on ICE on Ice", "pub_date": "Sat, 10 Jan 2026 15:58:00 +0000", "guid": "2828b3e9-53eb-49b4-8da1-59169c238b81", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_493.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 146360160, "duration_sec": 7248, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 494, "title": "Episode 494 - Dick on The Final Fat Frontier", "pub_date": "Mon, 19 Jan 2026 18:57:00 +0000", "guid": "17d7cce1-19ed-4c03-b478-5faf971e2536", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_494.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 152270342, "duration_sec": 7532, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 495, "title": "Episode 495 - Dick on Emergency Ribs", "pub_date": "Sun, 25 Jan 2026 23:08:00 +0000", "guid": "09012856-3d0f-498a-879d-395ce6a8c194", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_495.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 161000450, "duration_sec": 8035, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 496, "title": "Episode 496 - Dick on Chungucide", "pub_date": "Mon, 09 Feb 2026 01:39:00 +0000", "guid": "e76a3c6e-e486-4c35-92bc-e59c1e540f64", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_496.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 187930188, "duration_sec": 9356, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 497, "title": "Episode 497 - Dick on SomaliaScan.com", "pub_date": "Mon, 16 Feb 2026 05:52:00 +0000", "guid": "fe812d31-b8b6-442c-bfbf-52ddfc24d0cd", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_497.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 188011924, "duration_sec": 9345, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 498, "title": "Episode 498 - Dick on Hitler Ice Cream", "pub_date": "Mon, 23 Feb 2026 00:17:00 +0000", "guid": "ebc45110-595a-47b5-9c28-fac821ced6f7", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_498.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 161265524, "duration_sec": 8036, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 499, "title": "Episode 499 - Dick on More Ayatollahs", "pub_date": "Sun, 01 Mar 2026 23:46:00 +0000", "guid": "08aeaa8d-69dd-4ba8-b9db-1d570623fe35", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_499.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 186698268, "duration_sec": 9268, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 500, "title": "Episode 500 - Dick on Chekov's Nuke", "pub_date": "Sun, 08 Mar 2026 23:40:00 +0000", "guid": "0c7f4b1f-887e-4c1c-8d15-2bef98c1253f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_500.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 196111214, "duration_sec": 9791, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 501, "title": "Episode 501 - Dick on Sol Ringers", "pub_date": "Mon, 16 Mar 2026 18:50:00 +0000", "guid": "3588540b-38ed-443f-8023-b05b7f85074a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_501.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 183911444, "duration_sec": 9119, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 502, "title": "Episode 502 - Dick on The Day the Chungus Died", "pub_date": "Mon, 23 Mar 2026 15:15:00 +0000", "guid": "687fd79a-ea74-495b-b50e-71ce0c27b5a5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_502.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 195143198, "duration_sec": 9747, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 503, "title": "Episode 503 - Dick on Vengeance for All", "pub_date": "Mon, 30 Mar 2026 01:03:00 +0000", "guid": "b0cd99ce-5a8c-4c4f-96fd-4153fbc468d2", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_503.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 155653388, "duration_sec": 7725, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 504, "title": "Episode 504 - Dick on Fat Libs", "pub_date": "Sun, 05 Apr 2026 01:26:00 +0000", "guid": "521e5d35-7b3c-47f8-89b4-1422e8467cc5", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_504.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 177682902, "duration_sec": 8820, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 505, "title": "Episode 505 - Dick on Monkey Noises", "pub_date": "Sun, 12 Apr 2026 01:26:00 +0000", "guid": "9c80eb10-100e-4177-af67-316edc572c9d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_505.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 160970816, "duration_sec": 7994, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 506, "title": "Episode 506 - Dick on One Thing in Common", "pub_date": "Mon, 20 Apr 2026 01:35:00 +0000", "guid": "d979fea7-d622-47b3-bf86-ee4387c656d4", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_506.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 141258932, "duration_sec": 7048, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 507, "title": "Episode 507 - Dick on SUPERKILLERs", "pub_date": "Mon, 04 May 2026 02:13:00 +0000", "guid": "7cf25314-8d95-4432-ba1d-752e72ccdf3a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_507.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 230262542, "duration_sec": 11499, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 508, "title": "Episode 508 - Dick on Quitting Social Media", "pub_date": "Mon, 11 May 2026 01:50:00 +0000", "guid": "569cf01d-00d0-4750-b243-3c050b50542c", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_508.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 120187458, "duration_sec": 5995, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 509, "title": "Episode 509 - Dick on Bad Guy Summer", "pub_date": "Mon, 18 May 2026 01:54:00 +0000", "guid": "474b59c4-3ec3-42fd-81da-91fbef39366d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_509.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 147538450, "duration_sec": 7323, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 510, "title": "Episode 510 - Dick on the Ice Cream Song", "pub_date": "Mon, 25 May 2026 01:49:00 +0000", "guid": "48e0f421-ba1e-4e9d-a025-5db20399b5aa", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_510.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 141344838, "duration_sec": 7028, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 511, "title": "Episode 511 - Dick on Imaginary Corporal Punishment", "pub_date": "Mon, 01 Jun 2026 06:36:00 +0000", "guid": "a821a9a6-1b83-4263-a849-9c0ad2034b64", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_511.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 134289434, "duration_sec": 6697, "page_link": "https://patreon.com/TheDickShow"} +{"ep_num": 512, "title": "Episode 512 - Dick on Two Half-Decades", "pub_date": "Mon, 08 Jun 2026 04:42:00 +0000", "guid": "43ac937a-c13e-43dc-8aec-2e5e4f71d19f", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_512.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 294134144, "duration_sec": 7346, "page_link": "http://patreon.com/TheDickShow"} +{"ep_num": 513, "title": "Episode 513 - Dick on the Food Pyramid", "pub_date": "Mon, 22 Jun 2026 03:58:00 +0000", "guid": "951e7e95-43d9-48f0-8367-a7b343c0a980", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_513.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 151682228, "duration_sec": 7570, "page_link": "http://patreon.com/TheDickShow"} +{"ep_num": 514, "title": "Episode 514 - Dick on the Torta Takeover", "pub_date": "Mon, 29 Jun 2026 16:00:00 +0000", "guid": "afa7935f-10dc-41fb-9fd6-9816d4d6b973", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_514.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 133610588, "duration_sec": 6666, "page_link": "http://patreon.com/TheDickShow"} +{"ep_num": 515, "title": "Episode 515 - Dick on Fargonauts", "pub_date": "Mon, 06 Jul 2026 03:24:00 +0000", "guid": "1a89d108-6c88-460f-b389-1567f1dd46f6", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_515.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 125325404, "duration_sec": 6252, "page_link": "http://patreon.com/TheDickShow"} +{"ep_num": 516, "title": "Episode 516 - Dick on The Sandwich Thief", "pub_date": "Mon, 13 Jul 2026 01:06:00 +0000", "guid": "c7dd396f-15f7-45c2-96af-6656dfe0cf73", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_516.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 134980316, "duration_sec": 6734, "page_link": "http://patreon.com/TheDickShow"} +{"ep_num": 517, "title": "Episode 517 - Dick on the Mexican MMORPG", "pub_date": "Mon, 20 Jul 2026 14:39:00 +0000", "guid": "2f11a8e0-c6db-4b8c-a1d3-82f9669a4831", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_517b.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 124570592, "duration_sec": 6214, "page_link": "http://patreon.com/TheDickShow"} +{"ep_num": 518, "title": "Episode 518 - Dick on The Women's Professional Baseball League", "pub_date": "Sun, 02 Aug 2026 21:33:00 +0000", "guid": "f04b29d6-ce99-4936-972b-d7fa29d07826", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_518.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 133481132, "duration_sec": 6660, "page_link": "http://patreon.com/TheDickShow"} +{"ep_num": 519, "title": "Episode 519 - Dick on I, Burrito", "pub_date": "Mon, 10 Aug 2026 14:54:00 +0000", "guid": "9f75e911-5dc6-4f54-b494-5c0fdecfc78a", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_519.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 134272484, "duration_sec": 6699, "page_link": "http://patreon.com/TheDickShow"} +{"ep_num": 520, "title": "Episode 520 - Dick on Male to Fester", "pub_date": "Sun, 16 Aug 2026 02:02:00 +0000", "guid": "209d1c2e-5e56-43ec-884e-3384e923ac5d", "audio_url": "https://traffic.libsyn.com/secure/thedickshow/The_Dick_Show_520.mp3?dest-id=516728", "audio_type": "audio/mpeg", "audio_bytes": 145067444, "duration_sec": 7239, "page_link": "http://patreon.com/TheDickShow"} diff --git a/download.py b/download.py new file mode 100644 index 0000000..ffcfbe2 --- /dev/null +++ b/download.py @@ -0,0 +1,134 @@ +"""Resumable MP3 downloader. + +Downloads each episode's enclosure into audio/.mp3. +Skips files that already exist with the expected size (HTTP Range resume). +""" +import json +import os +import re +import sys +import time + +import requests + +from config import AUDIO_DIR, DOWNLOAD_TIMEOUT, CHUNK_SIZE +from feed import load_episodes + + +def slug(ep: dict) -> str: + if ep.get("ep_num"): + return f"ep{ep['ep_num']:04d}" + g = re.sub(r"[^a-zA-Z0-9-]", "", ep["guid"])[:24] + return f"bonus-{g}" + + +def audio_path(ep: dict) -> str: + return os.path.join(AUDIO_DIR, slug(ep) + ".mp3") + + +def expected_size(ep: dict) -> int: + return ep.get("audio_bytes") or 0 + + +def download_episode(ep: dict, force: bool = False) -> str: + """Download one episode. Returns local path. Raises on hard failure.""" + url = ep["audio_url"] + if not url: + raise ValueError(f"no audio_url for {ep['guid']}") + dest = audio_path(ep) + tmp = dest + ".part" + want = expected_size(ep) + + if os.path.exists(dest): + if force: + os.remove(dest) + else: + have = os.path.getsize(dest) + if want and have != want: + print(f" size mismatch for {dest} (have {have}, want {want}); " + f"redownloading", file=sys.stderr) + os.remove(dest) + else: + return dest + + headers = {"User-Agent": "dickshow-indexer/1.0"} + mode = "wb" + if os.path.exists(tmp): + have = os.path.getsize(tmp) + if want and have == want: + os.replace(tmp, dest) + return dest + if have > 0: + headers["Range"] = f"bytes={have}-" + mode = "ab" + + last_err = None + for attempt in range(1, 6): + try: + with requests.get(url, headers=headers, stream=True, + timeout=DOWNLOAD_TIMEOUT, allow_redirects=True) as r: + if r.status_code == 416: # range beyond EOF -> already complete + os.replace(tmp, dest) + return dest + r.raise_for_status() + total = int(r.headers.get("Content-Length", "0") or 0) + if mode == "ab" and r.status_code == 200: + # server ignored Range; restart cleanly + mode = "wb" + with open(tmp, mode) as f: + for chunk in r.iter_content(chunk_size=CHUNK_SIZE): + if chunk: + f.write(chunk) + have = os.path.getsize(tmp) + if want and have < want: + raise IOError(f"incomplete download {have}/{want}") + break + except Exception as e: # noqa: BLE001 + last_err = e + print(f" retry {attempt}: {e}", file=sys.stderr) + time.sleep(5 * attempt) + mode = "ab" + headers["Range"] = f"bytes={os.path.getsize(tmp)}-" \ + if os.path.exists(tmp) and os.path.getsize(tmp) > 0 else {} + else: + raise IOError(f"download failed for {url}: {last_err}") + + os.replace(tmp, dest) + return dest + + +def main() -> None: + from config import TRANSCRIPT_DIR + from transcribe import transcript_path + eps = load_episodes() + only = set() + for a in sys.argv[1:]: + only.add(int(a)) + ok = fail = skip = 0 + for ep in eps: + if ep["ep_num"] is not None and only and ep["ep_num"] not in only: + continue + if os.path.exists(transcript_path(ep)): + skip += 1 # already fully transcribed; audio not needed + continue + dest = audio_path(ep) + if os.path.exists(dest) and not (expected_size(ep) and + os.path.getsize(dest) != expected_size(ep)): + skip += 1 + continue + label = f"Ep {ep['ep_num']}" if ep["ep_num"] else ep["title"][:40] + try: + p = download_episode(ep) + mb = os.path.getsize(p) / 1e6 + print(f"{label}: {mb:.1f} MB") + ok += 1 + except Exception as e: # noqa: BLE001 + print(f"{label}: FAILED - {e}", file=sys.stderr) + fail += 1 + with open(os.path.join(AUDIO_DIR, ".progress.json"), "w") as f: + json.dump({"last_done": ep["guid"]}, f) + print(f"downloaded={ok} skipped={skip} failed={fail}") + + +if __name__ == "__main__": + main() diff --git a/export_txt.py b/export_txt.py new file mode 100644 index 0000000..1915ee5 --- /dev/null +++ b/export_txt.py @@ -0,0 +1,45 @@ +"""Convert transcript JSON into a readable timestamped txt for LLM analysis.""" +import json +import os +import sys + +from config import TRANSCRIPT_DIR +from feed import load_episodes +from download import slug as ep_slug + +TXT_DIR = os.path.join(TRANSCRIPT_DIR, "txt") + + +def txt_path(ep: dict) -> str: + return os.path.join(TXT_DIR, ep_slug(ep) + ".txt") + + +def export_txt(ep: dict) -> str: + tp = os.path.join(TRANSCRIPT_DIR, ep_slug(ep) + ".json") + with open(tp, encoding="utf-8") as f: + data = json.load(f) + os.makedirs(TXT_DIR, exist_ok=True) + out = txt_path(ep) + with open(out + ".tmp", "w", encoding="utf-8") as f: + f.write(f"# {data['title']}\n# published: {data['pub_date']}\n" + f"# episode: {data.get('ep_num')}\n\n") + for seg in data["segments"]: + s = int(seg["start"]) + stamp = f"{s // 3600:02d}:{(s % 3600) // 60:02d}:{s % 60:02d}" + f.write(f"[{stamp}] {seg['text']}\n") + os.replace(out + ".tmp", out) + return out + + +if __name__ == "__main__": + eps = load_episodes() + want = {int(a) for a in sys.argv[1:]} if len(sys.argv) > 1 else None + n = 0 + for ep in eps: + if want and (ep["ep_num"] not in want): + continue + src = os.path.join(TRANSCRIPT_DIR, ep_slug(ep) + ".json") + if os.path.exists(src): + print(export_txt(ep)) + n += 1 + print(f"exported {n}") diff --git a/facts.py b/facts.py new file mode 100644 index 0000000..55a5bba --- /dev/null +++ b/facts.py @@ -0,0 +1,30 @@ +"""Ground-truth facts used to keep episode analyses honest. + +The dossier file is maintained separately (research project); this module +points at it and carries a compact cast sheet for cheap prompt injection. +""" +import os + +from config import BASE_DIR + +DOSSIER_PATH = os.path.join(os.path.dirname(BASE_DIR), + "Dax_Herrera_Dick_Masterson_Profile.txt") + +# Verified roster with eras - injected into BOTH analyzer and verifier prompts. +CAST_SHEET = """VERIFIED CAST FACTS (from court records, WIPO filings, primary sources): +- DICK MASTERSON (real name Dax Herrera): host of The Dick Show since June 2016. +- MADDOX (George Ouzounian): former BPITU co-host (2014-2016). He and Dick have + been ADVERSARIES since Oct 2016 (the "LOLSUIT", dismissed 2018). Maddox has + NOT been a Dick Show cohost at ANY point and is long gone from Dick's life. + Any analysis attributing a modern-era (2017+) cohost seat to Maddox is WRONG. +- SEAN (a.k.a. Seanie): longtime Dick Show audio engineer/cohost voice, + present across essentially all episodes. +- VITO GESUALDI: game developer/comic creator; frequent Dick Show guest and + cohost of the BPITU REVIVAL (2025+). On modern-era episodes an unnamed second + voice is usually Sean or Vito - not Maddox. +- ASTERIOS KOKKINOS: recurring guest (2016 era onward). +- ERIC JULY / RIPPAVERSE saga: May 2023 onward (Isom review = Ep 361). +- Ethan Ralph, Josh Denny, Nick Rekieta, Null (Kiwi Farms): associates/guests + of the 2017-2023 era. +If a voice cannot be attributed confidently from the transcript itself, label +it "unknown voice" instead of guessing a famous name.""" diff --git a/feed.py b/feed.py new file mode 100644 index 0000000..354702a --- /dev/null +++ b/feed.py @@ -0,0 +1,127 @@ +"""Parse The Dick Show RSS feed into data/episodes.jsonl (one episode per line).""" +import json +import re +import sys +import time +import xml.etree.ElementTree as ET + +import requests + +from config import FEED_URL, EPISODES_JSONL, DOWNLOAD_TIMEOUT, MAX_FEED_RETRIES + +NS = { + "itunes": "http://www.itunes.com/dtds/podcast-1.0.dtd", +} +EP_NUM_RE = re.compile(r"Episode\s+(\d+)", re.IGNORECASE) + + +def fetch_feed(url: str = FEED_URL) -> bytes: + last_err = None + for attempt in range(1, MAX_FEED_RETRIES + 1): + try: + r = requests.get(url, timeout=DOWNLOAD_TIMEOUT, + headers={"User-Agent": "dickshow-indexer/1.0"}) + r.raise_for_status() + return r.content + except Exception as e: # noqa: BLE001 + last_err = e + print(f"feed attempt {attempt}/{MAX_FEED_RETRIES} failed: {e}", + file=sys.stderr) + time.sleep(3 * attempt) + raise SystemExit(f"could not download feed: {last_err}") + + +def itunes_duration_seconds(text: str | None) -> int: + """Libsyn uses either HH:MM:SS or plain seconds.""" + if not text: + return 0 + text = text.strip() + if ":" in text: + parts = [int(p) for p in text.split(":")] + while len(parts) < 3: + parts.insert(0, 0) + h, m, s = parts + return h * 3600 + m * 60 + s + try: + return int(float(text)) + except ValueError: + return 0 + + +def parse_feed(xml_bytes: bytes) -> list[dict]: + root = ET.fromstring(xml_bytes) + channel = root.find("channel") + episodes = [] + for item in channel.findall("item"): + title_el = item.find("title") + title = (title_el.text or "").strip() if title_el is not None else "" + m = EP_NUM_RE.search(title) + ep_num = int(m.group(1)) if m else None + + guid_el = item.find("guid") + guid = (guid_el.text or "").strip() if guid_el is not None else "" + if not guid: + continue # unusable without stable id + + pub_el = item.find("pubDate") + pub_date = (pub_el.text or "").strip() if pub_el is not None else "" + + enc = item.find("enclosure") + audio_url, audio_type, audio_len = "", "", 0 + if enc is not None: + audio_url = enc.get("url", "").strip() + audio_type = enc.get("type", "") + try: + audio_len = int(enc.get("length", "0") or 0) + except ValueError: + audio_len = 0 + + dur_el = item.find("itunes:duration", NS) + duration_s = itunes_duration_seconds(dur_el.text if dur_el is not None else None) + + link_el = item.find("link") + page_link = (link_el.text or "").strip() if link_el is not None else "" + + episodes.append({ + "ep_num": ep_num, + "title": title, + "pub_date": pub_date, + "guid": guid, + "audio_url": audio_url, + "audio_type": audio_type, + "audio_bytes": audio_len, + "duration_sec": duration_s, + "page_link": page_link, + }) + # newest first from feed; store oldest-first for chronological processing + episodes.reverse() + return episodes + + +def write_episodes(episodes: list[dict]) -> None: + with open(EPISODES_JSONL, "w", encoding="utf-8") as f: + for ep in episodes: + f.write(json.dumps(ep, ensure_ascii=False) + "\n") + + +def load_episodes() -> list[dict]: + eps = [] + with open(EPISODES_JSONL, encoding="utf-8") as f: + for line in f: + line = line.strip() + if line: + eps.append(json.loads(line)) + return eps + + +def main() -> None: + xml = fetch_feed() + episodes = parse_feed(xml) + write_episodes(episodes) + numbered = [e["ep_num"] for e in episodes if e["ep_num"]] + print(f"parsed {len(episodes)} episodes " + f"(numbered {min(numbered)}-{max(numbered)}) -> {EPISODES_JSONL}") + + +if __name__ == "__main__": + main() diff --git a/index.py b/index.py new file mode 100644 index 0000000..057103e --- /dev/null +++ b/index.py @@ -0,0 +1,115 @@ +"""Build the SQLite FTS5 index from transcripts + lexicon hashtags. + +Schema: + episodes(ep_num, guid, title, pub_date, audio_url, page_link, duration_sec, + model, n_segments, tags_json) + segments(ep_rowid -> episodes.rowid, seg_idx, start_sec, end_sec, text, + tags) [FTS5 external content] + +Search examples (via search.py): + python search.py "isom lawsuit" + python search.py maddox --tag lolsuit --from 2018-01-01 --to 2018-12-31 +""" +import json +import os +import sqlite3 + +from config import DB_PATH +from feed import load_episodes +from lexicon import build_lexicon, tags_for_text + +SCHEMA = """ +PRAGMA journal_mode=WAL; + +CREATE TABLE IF NOT EXISTS episodes ( + id INTEGER PRIMARY KEY, + ep_num INTEGER UNIQUE, + guid TEXT UNIQUE NOT NULL, + title TEXT, + pub_date TEXT, + audio_url TEXT, + page_link TEXT, + duration_sec REAL, + model TEXT, + n_segments INTEGER, + tags TEXT +); + +CREATE VIRTUAL TABLE IF NOT EXISTS segments USING fts5( + text, + tags, + episode_id UNINDEXED, + seg_idx UNINDEXED, + start_sec UNINDEXED, + end_sec UNINDEXED +); +""" + + +def open_db(path=DB_PATH) -> sqlite3.Connection: + con = sqlite3.connect(path) + con.executescript(SCHEMA) + return con + + +def index_transcripts() -> None: + from transcribe import transcript_path + lexicon = build_lexicon() + eps = load_episodes() + con = open_db() + cur = con.cursor() + + n_eps = n_segs = 0 + for ep in eps: + tp = transcript_path(ep) + if not os.path.exists(tp): + continue + with open(tp, encoding="utf-8") as f: + data = json.load(f) + + ep_tags = set() + for seg in data["segments"]: + ep_tags.update(tags_for_text(seg["text"], lexicon)) + + # upsert episode row + cur.execute( + """INSERT INTO episodes (ep_num, guid, title, pub_date, audio_url, + page_link, duration_sec, model, n_segments, tags) + VALUES (?,?,?,?,?,?,?,?,?,?) + ON CONFLICT(guid) DO UPDATE SET + ep_num=excluded.ep_num, title=excluded.title, + pub_date=excluded.pub_date, audio_url=excluded.audio_url, + page_link=excluded.page_link, duration_sec=excluded.duration_sec, + model=excluded.model, n_segments=excluded.n_segments, + tags=excluded.tags""", + (data.get("ep_num"), data["guid"], data.get("title"), + data.get("pub_date"), data.get("audio_url"), data.get("page_link"), + data.get("duration_sec"), data.get("model"), + len(data["segments"]), json.dumps(sorted(ep_tags))), + ) + row_id = cur.execute("SELECT id FROM episodes WHERE guid=?", + (data["guid"],)).fetchone()[0] + + # rebuild this episode's segment rows (simplest correct incremental path) + cur.execute("DELETE FROM segments WHERE episode_id=?", (row_id,)) + cur.executemany( + "INSERT INTO segments (text, tags, episode_id, seg_idx, start_sec," + " end_sec) VALUES (?,?,?,?,?,?)", + [(seg["text"], + " ".join("#" + t for t in tags_for_text(seg["text"], lexicon)), + row_id, i, seg["start"], seg["end"]) + for i, seg in enumerate(data["segments"])], + ) + n_eps += 1 + n_segs += len(data["segments"]) + label = f"Ep {data.get('ep_num')}" if data.get("ep_num") else data.get("title", "")[:40] + print(f" indexed {label}: {len(data['segments'])} segs, " + f"tags: {' '.join('#' + t for t in sorted(ep_tags)) or '(none)'}") + + con.commit() + con.close() + print(f"indexed {n_eps} episodes / {n_segs} segments -> {DB_PATH}") + + +if __name__ == "__main__": + index_transcripts() diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..46335b5 --- /dev/null +++ b/install.sh @@ -0,0 +1,297 @@ +#!/usr/bin/env bash +# Dick Show Index - Installer +# Installs all dependencies and sets up the pipeline for the Dick Show transcript index. +# Usage: ./install.sh [--skip-opencode] [--skip-python-deps] + +set -euo pipefail + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +log_info() { echo -e "${BLUE}[INFO]${NC} $*"; } +log_success() { echo -e "${GREEN}[OK]${NC} $*"; } +log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; } +log_error() { echo -e "${RED}[ERROR]${NC} $*"; } + +# Configuration +REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PYTHON_MIN_VERSION="3.10" +OPENCODE_BIN="${OPENCODE_BIN:-$HOME/.opencode/bin/opencode}" + +# Flags +SKIP_OPENCODE=false +SKIP_PYTHON_DEPS=false + +for arg in "$@"; do + case $arg in + --skip-opencode) SKIP_OPENCODE=true ;; + --skip-python-deps) SKIP_PYTHON_DEPS=false ;; + --help|-h) + cat < /dev/null; then + log_error "Python 3 not found. Please install Python ${PYTHON_MIN_VERSION}+" + exit 1 + fi + + local version=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")') + local major=$(echo $version | cut -d. -f1) + local minor=$(echo $version | cut -d. -f2) + + if [[ $major -lt 3 ]] || [[ $major -eq 3 && $minor -lt 10 ]]; then + log_error "Python ${PYTHON_MIN_VERSION}+ required, found ${version}" + exit 1 + fi + + log_success "Python ${version} found" +} + +install_python_deps() { + log_info "Installing Python dependencies..." + if [[ -f "requirements.txt" ]]; then + pip3 install --upgrade pip + pip3 install -r requirements.txt + log_success "Python dependencies installed" + else + log_warn "requirements.txt not found, skipping" + fi +} + +install_opencode() { + if [[ "$SKIP_OPENCODE" == "true" ]]; then + log_info "Skipping opencode installation (--skip-opencode)" + return + fi + + log_info "Installing opencode CLI..." + + if command -v opencode &> /dev/null; then + log_success "opencode already installed: $(opencode --version)" + return + fi + + # Try official installer first + if command -v curl &> /dev/null; then + log_info "Downloading opencode installer..." + if curl -fsSL https://opencode.ai/install.sh | bash; then + log_success "opencode installed via official installer" + return + fi + log_warn "Official installer failed, trying direct download..." + fi + + # Fallback: direct binary download from GitHub releases + log_info "Downloading opencode binary from GitHub..." + local arch=$(uname -m) + local os=$(uname -s | tr '[:upper:]' '[:lower:]') + + # Normalize arch + case $arch in + x86_64|amd64) arch="x64" ;; + aarch64|arm64) arch="arm64" ;; + esac + + # Get latest release + local release_url="https://api.github.com/repos/anomalyco/opencode/releases/latest" + local download_url=$(curl -fsSL "$release_url" | grep "browser_download_url" | grep "${os}-${arch}" | head -1 | cut -d '"' -f 4) + + if [[ -z "$download_url" ]]; then + log_warn "Could not find binary for ${os}-${arch}, trying windows-x64.zip..." + download_url=$(curl -fsSL "$release_url" | grep "browser_download_url" | grep "windows-x64.zip" | head -1 | cut -d '"' -f 4) + fi + + if [[ -z "$download_url" ]]; then + log_error "Could not find opencode binary for your platform" + log_info "Please install manually from: https://github.com/anomalyco/opencode/releases" + return 1 + fi + + log_info "Downloading from: $download_url" + mkdir -p "$(dirname "$OPENCODE_BIN")" + curl -fsSL "$download_url" -o /tmp/opencode.zip + + if [[ "$download_url" == *.zip ]]; then + unzip -o /tmp/opencode.zip -d "$(dirname "$OPENCODE_BIN")" + else + mv /tmp/opencode.zip "$OPENCODE_BIN" + fi + + chmod +x "$OPENCODE_BIN" + + # Add to PATH if not already + local bin_dir=$(dirname "$OPENCODE_BIN") + if [[ ":$PATH:" != *":$bin_dir:"* ]]; then + echo "export PATH=\"\$PATH:$bin_dir\"" >> ~/.bashrc + log_info "Added $bin_dir to PATH in ~/.bashrc" + fi + + export PATH="$PATH:$bin_dir" + log_success "opencode installed: $(opencode --version)" +} + +verify_opencode() { + log_info "Verifying opencode installation..." + if ! command -v opencode &> /dev/null; then + log_error "opencode not found in PATH" + log_info "Add $(dirname "$OPENCODE_BIN") to your PATH and restart your shell" + return 1 + fi + + log_success "opencode: $(opencode --version)" + + # Check available models + log_info "Available models:" + opencode models 2>/dev/null | head -20 || log_warn "Could not list models (may need auth)" +} + +check_existing_work() { + log_info "Checking for existing work..." + + local transcript_count=0 + local analysis_count=0 + + if [[ -d "transcripts" ]]; then + transcript_count=$(find transcripts -name "ep*.json" 2>/dev/null | wc -l) + fi + + if [[ -d "data/analysis" ]]; then + analysis_count=$(find data/analysis -name "ep*.json" 2>/dev/null | wc -l) + fi + + log_info "Found $transcript_count existing transcripts" + log_info "Found $analysis_count existing analyses" + + if [[ $transcript_count -gt 0 || $analysis_count -gt 0 ]]; then + log_info "Pipeline will resume from existing work (skips completed episodes)" + fi +} + +create_dirs() { + log_info "Creating directory structure..." + mkdir -p audio transcripts data/analysis + log_success "Directories created" +} + +# ============================================================================ +# Main +# ============================================================================ + +main() { + echo "==========================================" + echo " Dick Show Index - Installer" + echo "==========================================" + echo + + cd "$REPO_ROOT" + + log_info "Starting installation..." + + check_python + create_dirs + + if [[ "$SKIP_PYTHON_DEPS" != "true" ]]; then + install_python_deps + fi + + install_opencode + verify_opencode + check_existing_work + + echo + log_success "Installation complete!" + echo + cat < canonical tag. + +Seeded from the research dossier (people, feuds, events, recurring bits). +Extend freely; matching is case-insensitive whole-word on each transcript +segment, then aggregated per episode and per segment in the FTS index. +""" +import re + +PEOPLE = { + "maddox": ["maddox", "george ochotsk", "ouzounian"], + "asterios": ["asterios", "asterios kokkinos", "kokkinos"], + "vito": ["vito", "vito gesualdi", "gesualdi"], + "sean": ["sean", "seanie"], # Sean the audio engineer + "eric_july": ["eric july", "rippaverse", "rippa", "isom", "yaira", + "alphacore", "horseman", "backwordz"], + "ethan_van_sciver": ["van sciver", "van schiver", "evs", "cyberfrog", + "comicsgate", "trashcast"], + "razorfist": ["razorfist", "razor fist"], + "yellowflash": ["yellowflash", "yellow flash"], + "clippa": ["clippa", "young clippa", "riley"], + "kevin_landau": ["kevin landau", "landau"], + "nick_rekieta": ["rekieta", "rekieta law", "rackets", + # whisper phonetic variants observed in transcripts + "raketa", "riketa", "rikita", "rakiti", "rakeda", + "rikata", "rikade"], + "ethan_ralph": ["ralph", "the ralph retort", "killstream", "ralphretort"], + "null": ["joshua moon", "kiwi farms", "kiwifarms"], + "mumkey_jones": ["mumkey", "mumkey jones"], + "josh_denny": ["denny", "josh denny"], + "frank_hassle": ["hassle", "frank hassle"], + "destiny": ["destiny", "steven bonnell"], + "justin_whang": ["whang", "justin whang", "whang!"], + "digibro": ["digibro"], + "wauterboi": ["waut3rboi", "wauterboi"], + "andy_lee": ["andy lee", "callofthedeep"], + "cliff_campbell": ["cliff campbell"], + "john_morgan": ["john morgan"], + "mumkey": [], + "greg_boser": ["boser", "greg boser"], + "loren_baker": ["loren baker"], + "tuomas": ["tuomas", "holmburg", "collector crypt"], + "john_mcafee": ["mcafee"], + "bunty_king": ["bunty"], + "jf_gariepy": ["jf garpey", "gariepy", "jfg"], + "sargon": ["sargon"], + "boogie2988": ["boogie", "boogie2988"], + "kraut": ["kraut"], + "andy_warski": ["warski"], + "tony_heller": [], + "stefan_molyneux": ["molyneux"], + "lauren_southern": ["lauren southern", "southern"], + "gavin_mcinnes": ["gavin mcinnes", "mcinnes"], + "milo": ["milo yiannopoulos", "milo"], + "cuck_shack_cast": [], +} + +EVENTS = { + "lolsuit": ["lolsuit", "lol suit", "lawsuit", "complaint", "deposition", + "judge ramos", "greenberger", "subpoena", "dismissed with prejudice"], + "isom_lawsuit": ["international school of ministry", "trademark lawsuit", + "night letter", "cease and desist"], + "patreon_drama": ["patreon"], + "deplatforming": ["deplatform", "mastercard", "match list", "visa", + "stripe", "paypal", "banking", "backed.by", "backedby"], + "seanies": ["seanie", "seanies", "seany award"], + "rage_calendar": ["rage calendar", "advent calendar"], + "hot_goss": ["hot goss"], + "rape_list": ["rape list"], + "drunk_sober_high": ["drunk sober high"], + "dick_tips": ["dick tip", "dick tips"], + "voicemail": ["voicemail", "voice mail"], + "rage": ["are you a rage", "the rage"], + "isom_review": ["isom #1", "isom review", "grave digger", "tombstone"], + "charity_accusations": ["charity"], + "new_project2": ["new project 2", "np2"], + "web3": ["web3", "nft", "solana", "crypto", "token", "blockchain", + "wallet", "mint"], + "maddox_book_prank": ["fuck whales", "fuck whales"], + "best_debate": ["best debate in the universe"], + "biggest_problem": ["biggest problem in the universe", "tbpitu"], +} + +TOPICS = { + "politics": ["trump", "biden", "obama", "election", "senate", "congress", + "democrat", "republican", "libertarian"], + "gun_policy": ["second amendment", "nra", "gun control"], + "covid": ["covid", "pandemic", "mask", "vaccine", "lockdown", "fauci"], + "ukraine_war": ["ukraine", "zelensky", "putin", "russia"], + "israel": ["israel", "gaza", "hamas", "idf", "antisemitism"], + "ai_tech": ["artificial intelligence", " chatgpt", " openai", " ai ", + "machine learning"], + "gaming": ["video game", "playstation", "nintendo", "xbox", "steam"], + "movies_tv": ["movie", "netflix", "disney", "marvel", "star wars"], + "sports": ["nfl", "nba", "ufc", "boxing", "wnba"], + "relationships": ["girlfriend", "wife", "divorce", "dating", "marriage"], +} + + +def build_lexicon() -> list[tuple[str, str, "re.Pattern"]]: + """Returns [(category, canonical_tag, compiled_regex)].""" + import re + out = [] + for category, table in (("person", PEOPLE), ("event", EVENTS), + ("topic", TOPICS)): + for tag, aliases in table.items(): + parts = [] + for alias in aliases: + a = alias.strip() + if not a: + continue + esc = re.escape(a) + if a[:1].isalnum(): + esc = r"\b" + esc + if a[-1:].isalnum(): + esc = esc + r"\b" + parts.append(esc) + if not parts: + continue + rx = re.compile("|".join(parts), re.IGNORECASE) + out.append((category, tag, rx)) + return out + + +def tags_for_text(text: str, lexicon=None) -> list[str]: + if lexicon is None: + lexicon = build_lexicon() + found = [] + for _cat, tag, rx in lexicon: + if rx.search(text): + found.append(tag) + return found diff --git a/peek.py b/peek.py new file mode 100644 index 0000000..941e178 --- /dev/null +++ b/peek.py @@ -0,0 +1,19 @@ +"""Quick peek: grep finished transcripts for saga keywords.""" +import json +import sys + +KEYS = ["isom", "eric july", "rippa", "comic book", "yellowflash"] + +for f in sys.argv[1:] or ["transcripts/ep0361.json", "transcripts/ep0362.json"]: + with open(f, encoding="utf-8") as fh: + d = json.load(fh) + print("===", d["title"]) + n = 0 + for s in d["segments"]: + t = s["text"].lower() + if any(k in t for k in KEYS): + m, sec = divmod(int(s["start"]), 60) + print(f' [{m:02d}:{sec:02d}] {s["text"][:110]}') + n += 1 + if n >= 8: + break diff --git a/pipeline_all.py b/pipeline_all.py new file mode 100644 index 0000000..94e16a3 --- /dev/null +++ b/pipeline_all.py @@ -0,0 +1,311 @@ +"""Full-backlog driver: Ep 1 -> latest. One pass, fully resumable, verbose. + +Per episode: + 1. skip if transcript + verified analysis already exist + 2. download mp3 (skipped if present) + 3. transcribe (re-does partial transcripts, e.g. old smoke tests) + 4. analyze via opencode (fresh session, WITH HARD TIMEOUT) + dossier fact-check + 5. every 10 episodes: rebuild FTS index + master JSON + +Run: python pipeline_all.py [--eps 84 87 89 ...] [--start-ep N] [--dry-run] +Log: stdout (use with redirection) +""" +import argparse +import json +import os +import sys +import time +import traceback +import subprocess + +try: + sys.stdout.reconfigure(encoding="utf-8", errors="replace") + sys.stderr.reconfigure(encoding="utf-8", errors="replace") +except Exception: + pass + +from config import TRANSCRIPT_DIR, KEEP_AUDIO +from feed import load_episodes +from download import audio_path, slug as ep_slug, download_episode +from preprocess import prepare_audio, prepared_path +from transcribe import transcript_path +from lexicon import build_lexicon, tags_for_text +from export_txt import export_txt + +# seconds between opencode calls - provider rate limits are real +ANALYSIS_PAUSE = int(os.environ.get("DS_ANALYZE_PAUSE", "45")) +# hard timeout for entire analysis (seconds) - opencode can hang +ANALYSIS_TIMEOUT = int(os.environ.get("DS_ANALYSIS_TIMEOUT", "600")) # 10 minutes + +# memory guard threshold (bytes) - pause if available RAM drops below this +MIN_FREE_RAM = int(os.environ.get("DS_MIN_FREE_RAM", str(1024 * 1024 * 1024))) # 1 GB + + +def has_partial(transcript_file: str) -> bool: + try: + with open(transcript_file, encoding="utf-8") as f: + return json.load(f).get("partial_minutes") is not None + except (OSError, json.JSONDecodeError): + return False + + +def check_memory() -> bool: + """Check if we have enough free RAM. Return True if OK, False if low.""" + try: + import psutil + avail = psutil.virtual_memory().available + if avail < MIN_FREE_RAM: + return False + except ImportError: + pass # psutil not installed, skip check + except Exception: + pass + return True + + +def wait_for_memory() -> None: + """Block until enough RAM is available.""" + print(f" [MEM] Low memory (< {MIN_FREE_RAM/1e9:.1f} GB free), waiting...", flush=True) + while not check_memory(): + time.sleep(30) + print(f" [MEM] Memory recovered, continuing...", flush=True) + + +def do_transcribe(model, ep: dict) -> None: + from transcribe import transcribe_episode + from preprocess import load_pcm + src = audio_path(ep) + if not os.path.exists(src): + print(f" [{time.strftime('%H:%M:%S')}] downloading {ep['audio_url'][-40:]} ...", flush=True) + download_episode(ep) + prep = prepared_path(ep) + ok = False + t0 = time.time() + try: + # Check memory before loading episode + wait_for_memory() + print(f" [{time.strftime('%H:%M:%S')}] transcribing Ep {ep['ep_num']} ({ep['title'][:50]})", flush=True) + result = transcribe_episode(model, ep, None) + outp = transcript_path(ep) + with open(outp + ".tmp", "w", encoding="utf-8") as f: + json.dump(result, f, ensure_ascii=False) + os.replace(outp + ".tmp", outp) + dur = result["duration_sec"] or 1 + rate = dur / max(time.time() - t0, 0.001) + lex = build_lexicon() + tags = set() + for seg in result["segments"]: + tags.update(tags_for_text(seg["text"], lex)) + print(f" [{time.strftime('%H:%M:%S')}] TRANSCRIBED: {len(result['segments'])} segments, " + f"{dur/60:.0f} min, {rate:.1f}x realtime", flush=True) + print(f" TAGS: {' '.join(sorted('#' + t for t in tags)) or '(none)'}", flush=True) + ok = True + finally: + if os.path.exists(prep): + try: + os.remove(prep) + except OSError: + pass + if not KEEP_AUDIO and ok and os.path.exists(src): + try: + os.remove(src) + except OSError: + pass + + +def run_analysis_with_timeout(ep: dict) -> tuple: + """ + Run analysis + verification using opencode subprocess with hard timeout. + Returns (success: bool, result: dict | None, error: str | None) + """ + from analyze import ANALYSIS_DIR, OPENCODE, build_prompt, strip_to_json, validate + from verify import verify_episode + from download import slug as ep_slug + from export_txt import txt_path + from config import BASE_DIR + + label = f"Ep {ep['ep_num']}" + apath = os.path.join(ANALYSIS_DIR, f"{ep_slug(ep)}.json") + + # Check if already analyzed + if os.path.exists(apath): + with open(apath, encoding="utf-8") as f: + existing = json.load(f) + return (True, existing, None) + + # Build prompt + prompt = build_prompt() + attach = export_txt(ep) + + # Run analysis with timeout + rate-limit retries + cmd = [OPENCODE, "run", "--auto", "-f", attach, "--dir", BASE_DIR, prompt] + + # Rate limit retry waits (seconds) + rate_limit_waits = [10, 60, 180, 420, 600] + + for attempt, wait_time in enumerate(rate_limit_waits, 1): + try: + print(f" [{time.strftime('%H:%M:%S')}] running analysis (attempt {attempt}, timeout {ANALYSIS_TIMEOUT}s)...", flush=True) + proc = subprocess.run(cmd, capture_output=True, text=True, + encoding="utf-8", errors="replace", + cwd=BASE_DIR, timeout=ANALYSIS_TIMEOUT) + out = proc.stdout or "" + err = proc.stderr or "" + combined = (out + err).lower() + + if "rate limit" in combined or "429" in combined: + raise RuntimeError("provider rate limit exceeded") + + if not out.strip() and err: + raise RuntimeError(f"opencode produced no stdout: {err[-400:]}") + + # Parse result + from analyze import _repair + obj = json.loads(_repair(out), strict=False) + validate(obj) + + # Add metadata + obj["ep_num"] = ep["ep_num"] if ep["ep_num"] else obj.get("ep_num") + obj["title"] = obj.get("title") or ep["title"] + obj["pub_date"] = ep["pub_date"] + obj["_analyzed_at"] = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()) + obj["_source_transcript"] = os.path.basename(transcript_path(ep)) + + # Save analysis + from analyze import ANALYSIS_DIR as ANALYSIS_DIR2 + from download import slug as ep_slug + apath = os.path.join(ANALYSIS_DIR2, f"{ep_slug(ep)}.json") + with open(apath + ".tmp", "w", encoding="utf-8") as f: + json.dump(obj, f, ensure_ascii=False, indent=1) + os.replace(apath + ".tmp", apath) + + # Now run verification + print(f" [{time.strftime('%H:%M:%S')}] fact-checking...", flush=True) + from verify import verify_episode + verify_episode(ep) + + return (True, obj, None) + + except RuntimeError as e: + if "rate limit" in str(e).lower(): + if attempt < len(rate_limit_waits): + wait = rate_limit_waits[attempt] + print(f" [{time.strftime('%H:%M:%S')}] rate limited (attempt {attempt}), sleeping {wait}s...", flush=True) + time.sleep(wait) + continue + else: + return (False, None, f"Rate limit exceeded after {attempt} attempts") + else: + return (False, None, str(e)) + except Exception as e: + return (False, None, str(e)) + + return (False, None, "Max retries exceeded") + + +def main() -> None: + ap = argparse.ArgumentParser() + ap.add_argument("--eps", nargs="*", type=int, default=None, + help="Specific episode numbers to process (default: all from start-ep)") + ap.add_argument("--start-ep", type=int, default=0) + ap.add_argument("--dry-run", action="store_true") + args = ap.parse_args() + + from faster_whisper import WhisperModel + from config import WHISPER_MODEL, DEVICE, COMPUTE_TYPE + from analyze import analyze_episode, OPENCODE + from verify import verify_episode + + eps = load_episodes() + if args.eps: + eps = [e for e in eps if e["ep_num"] in args.eps] + else: + eps = [e for e in eps if (e["ep_num"] or 0) >= args.start_ep] + + print(f"[{time.strftime('%H:%M:%S')}] pipeline over {len(eps)} episodes " + f"(model={WHISPER_MODEL}/{DEVICE}, analyzer={os.path.basename(OPENCODE)})", flush=True) + + if args.dry_run: + for e in eps[:20]: + tp = transcript_path(e) + t_exists = os.path.exists(tp) and not has_partial(tp) + a_exists = os.path.exists(os.path.join( + os.path.dirname(TRANSCRIPT_DIR), "analysis", f"{e['ep_num']:04d}.json")) if e["ep_num"] else False + print(f" ep {e['ep_num']}: transcript={'Y' if t_exists else 'N'} analysis={'Y' if a_exists else 'N'}", flush=True) + return + + model = None + done_t = done_a = 0 + t_start = time.time() + + for i, ep in enumerate(eps, 1): + num = ep["ep_num"] if ep["ep_num"] else ep["title"][:30] + tp = transcript_path(ep) + + need_transcript = (not os.path.exists(tp)) or has_partial(tp) + if need_transcript and model is None: + print(f"[{time.strftime('%H:%M:%S')}] loading whisper model '{WHISPER_MODEL}'...", flush=True) + model = WhisperModel(WHISPER_MODEL, device=DEVICE, compute_type=COMPUTE_TYPE) + + if has_partial(tp): + print(f"[{time.strftime('%H:%M:%S')}] [{i}/{len(eps)}] Ep {num}: redo partial transcript", flush=True) + os.remove(tp) + elif need_transcript: + print(f"[{time.strftime('%H:%M:%S')}] [{i}/{len(eps)}] Ep {num}: transcribing", flush=True) + + if need_transcript: + try: + do_transcribe(model, ep) + done_t += 1 + # keep the searchable index fresh-ish + if done_t % 10 == 0: + import index as index_mod + print(f" [{time.strftime('%H:%M:%S')}] rebuilding search index...", flush=True) + index_mod.index_transcripts() + except Exception as ex: + print(f" [{time.strftime('%H:%M:%S')}] TRANSCRIBE FAILED, skipping episode: {ex}", flush=True) + traceback.print_exc() + continue + + # analysis + fact-check (with hard timeout) + label = f"Ep {num}" + print(f" [{time.strftime('%H:%M:%S')}] analyzing {label} ...", flush=True) + try: + success, result, error = run_analysis_with_timeout(ep) + if success: + done_a += 1 + print(f" [{time.strftime('%H:%M:%S')}] analyzed {label} (TI={result['transgression']['overall_ti']}, " + f"{len(result['talking_points'])} points, {len(result['notable_quotes'])} quotes)", flush=True) + print(f" [{time.strftime('%H:%M:%S')}] verified {label}", flush=True) + else: + print(f" [{time.strftime('%H:%M:%S')}] ANALYSIS FAILED {label}: {error}", flush=True) + except Exception as ex: + print(f" [{time.strftime('%H:%M:%S')}] ANALYZE FAILED {label}: {ex}", flush=True) + traceback.print_exc() + + # pacing: keep the provider happy + print(f" [{time.strftime('%H:%M:%S')}] pacing pause {ANALYSIS_PAUSE}s ...", flush=True) + time.sleep(ANALYSIS_PAUSE) + + if i % 10 == 0: + print(f" [{time.strftime('%H:%M:%S')}] rebuilding search index (periodic)...", flush=True) + import index as index_mod + index_mod.index_transcripts() + from aggregate import aggregate as _agg + _agg() + hrs = (time.time() - t_start) / 3600 + rate_eps = i / hrs + remaining = (len(eps) - i) / max(rate_eps, 0.01) + print(f"[{time.strftime('%H:%M:%S')}] == progress: {i}/{len(eps)} eps " + f"({rate_eps:.1f} eps/hr, ~{remaining:.0f} hr left) ==", flush=True) + + print(f"[{time.strftime('%H:%M:%S')}] final index rebuild...", flush=True) + import index as index_mod + index_mod.index_transcripts() + from aggregate import aggregate as _agg + _agg() + print(f"[{time.strftime('%H:%M:%S')}] PIPELINE COMPLETE: transcribed={done_t} analyzed={done_a}", flush=True) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/preprocess.py b/preprocess.py new file mode 100644 index 0000000..c5811e5 --- /dev/null +++ b/preprocess.py @@ -0,0 +1,82 @@ +"""Robust audio preprocessing. + +Libsyn MP3s confuse faster-whisper's decoder on this box (bogus multi-channel +allocation). We therefore demux+decode ourselves with PyAV in bounded chunks, +downmix to mono, resample to 16 kHz s16, and write a plain WAV that Whisper +ingests instantly. + +Full-length prep of a 3 h episode takes ~1 min and ~340 MB; the file is +deleted by transcribe.py afterwards unless DS_PREP_KEEP=1. +""" +import os +import wave + +import av +import numpy as np + +from config import AUDIO_DIR +from download import slug as ep_slug + +PREP_DIR = os.path.join(AUDIO_DIR, "_prep") +TARGET_RATE = 16000 + + +def prepared_path(ep: dict) -> str: + return os.path.join(PREP_DIR, ep_slug(ep) + ".16k.wav") + + +def prepare_audio(src_mp3: str, dst_wav: str, + max_seconds: float | None = None) -> str: + os.makedirs(PREP_DIR, exist_ok=True) + if os.path.exists(dst_wav): + return dst_wav + + resampler = av.AudioResampler(format="s16", layout="mono", + rate=TARGET_RATE) + total_written = 0 + limit = int(max_seconds * TARGET_RATE) if max_seconds else None + + tmp = dst_wav + ".tmp" + with av.open(src_mp3, metadata_errors="ignore") as container: + # pick the first real audio stream explicitly + streams = [s for s in container.streams.audio] + if not streams: + raise ValueError(f"no audio stream in {src_mp3}") + stream = streams[0] + + import wave + wf = wave.open(tmp, "wb") + wf.setnchannels(1) + wf.setsampwidth(2) + wf.setframerate(TARGET_RATE) + try: + for frame in container.decode(stream): + resampled = resampler.resample(frame) + for rf in resampled: + arr = rf.to_ndarray() + if arr.ndim == 2: # (1, samples) planar mono + arr = arr[0] + pcm = arr.astype(np.int16).tobytes() + n = len(pcm) // 2 + if limit and total_written + n > limit: + n = limit - total_written + pcm = pcm[: n * 2] + wf.writeframes(pcm) + total_written += n + if limit and total_written >= limit: + raise StopIteration + except StopIteration: + pass + finally: + wf.close() + + os.replace(tmp, dst_wav) + return dst_wav + + +def load_pcm(dst_wav: str) -> np.ndarray: + """Load a prepared 16 kHz s16 mono wav as float32 in [-1, 1].""" + with wave.open(dst_wav, "rb") as wf: + assert wf.getnchannels() == 1 and wf.getframerate() == TARGET_RATE + frames = wf.readframes(wf.getnframes()) + return np.frombuffer(frames, dtype=np.int16).astype(np.float32) / 32768.0 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..dc30adb --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +requests>=2.31 +faster-whisper>=1.0.0 diff --git a/rubric.py b/rubric.py new file mode 100644 index 0000000..8427760 --- /dev/null +++ b/rubric.py @@ -0,0 +1,80 @@ +"""The Transgression Index (TI): an arbitrary-but-anchored 0-10 scale for how +edgy/transgressive content is. Deliberately opinionated anchors so scores are +comparable across episodes. Shared by analyze.py prompts and aggregate.py. +""" + +RUBRIC = """ +TRANSGRESSION INDEX (TI) RUBRIC - score each quote and each dimension 0-10: + +0 Wholesome/neutral: could air on network morning TV. +1 Mild crudeness: innuendo, toilet humor, light profanity. +2 Frequent profanity, explicit sexual talk, crude insults aimed at public figures. +3 Edgy shock humor: jokes about death/tragedy/disability; mean-spirited roasts. +4 Slurs used (quoted or reclaimed), graphic sexual content, sustained cruelty + toward an individual as a running bit. +5 Dehumanizing generalizations about groups (by race/sex/religion/etc.) played + for laughs; celebration of harassment campaigns. +6 Sincere demeaning rhetoric about protected groups (not clearly ironic); + praising doxxing/deplatforming of enemies; glorifying self-harm or violence + rhetorically. +7 Targeted abuse: encouraging audiences to swarm/threaten a named private + individual; credible threats framed as jokes. +8 Endorsement of political violence or extremism beyond rhetoric; material + support (fundraising) for violent/extremist causes. +9 Direct incitement to violence; non-consensual sexual content endorsement. +10 Planning/praising specific acts of terror or mass violence. + +Sub-dimensions (each 0-10, same anchors applied narrowly): +- profanity: raw frequency/intensity of swearing only. +- slur_usage: occurrence of slurs/bigoted epithets (quoted bits count half). +- harassment_or_cruelty: targeted attacks on named individuals. +- sincerity: how sincere vs comedic the worst content is (0 = pure bit, + 10 = stated sincerely). NOTE: this measures tone, not severity. + +overall_ti is NOT an average - it is the peak sustained level (>=60 seconds +or a defining moment of the episode). +""" + +SCHEMA_EXAMPLE = """{ + "ep_num": 361, + "title": "Episode 361 - Dick on Lizard Feet", + "pub_date": "2023-05-30", + "runtime_minutes": 147, + "one_line_summary": "...", + "guests": [{"name": "...", "role": "host/cohost/guest/caller", "notes": "..."}], + "talking_points": [ + {"topic": "short label", + "summary": "2-3 sentence account of what was said, including positions and punchlines", + "start_ts": 1234.5, + "people": ["maddox", "eric july"], + "controversy_ti": 4} + ], + "arguments": [ + {"claim": "what the host asserts", + "position": "pro/anti/mockery-of", + "target": "who or what it is against", + "quality": "strong|moderate|weak|trollish", + "evidence_used": "receipts, anecdotes, statistics cited"} + ], + "ideas": [ + {"concept": "coined term / recurring bit / theory introduced", + "explanation": "what it means", + "first_ts": 1234.5} + ], + "notable_quotes": [ + {"quote": "verbatim quote (may be lightly cleaned)", + "ts": 1234.5, + "ti": 5, + "why": "one clause explaining the score"} + ], + "transgression": { + "overall_ti": 5, + "profanity": 7, + "slur_usage": 3, + "harassment_or_cruelty": 4, + "sincerity": 2, + "targets": ["groups or individuals the edge is aimed at"], + "rationale": "2 sentences justifying overall_ti" + }, + "content_warnings": ["slurs", "sexual content"] +}""" diff --git a/run_all.py b/run_all.py new file mode 100644 index 0000000..8eae686 --- /dev/null +++ b/run_all.py @@ -0,0 +1,50 @@ +"""One-command pipeline: feed -> download -> transcribe -> index. + + python run_all.py # everything not yet done + python run_all.py --ep 361 # just one episode end-to-end (good first run) + python run_all.py --minutes 5 --ep 520 # 5-minute smoke test +""" +import argparse +import subprocess +import sys + + +def run(cmd: list[str]) -> int: + print(f"\n=== {' '.join(cmd)} ===\n", flush=True) + return subprocess.call([sys.executable] + cmd) + + +def main() -> None: + ap = argparse.ArgumentParser() + ap.add_argument("--ep", type=int, nargs="*", default=None) + ap.add_argument("--minutes", type=float, default=None) + ap.add_argument("--skip-download", action="store_true") + ap.add_argument("--skip-transcribe", action="store_true") + ap.add_argument("--force", action="store_true") + args = ap.parse_args() + + rc = run(["feed.py"]) + if rc: + return rc + + if not args.skip_download: + cmd = ["download.py"] + ([str(e) for e in args.ep] if args.ep else []) + if run(cmd): + print("download step reported failures; continuing", file=sys.stderr) + + if not args.skip_transcribe: + cmd = ["transcribe.py"] + if args.ep: + cmd += [str(e) for e in args.ep] + if args.minutes: + cmd += ["--minutes", str(args.minutes)] + if args.force: + cmd += ["--force"] + if run(cmd): + return 1 + + return run(["index.py"]) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/search.py b/search.py new file mode 100644 index 0000000..64a1e0d --- /dev/null +++ b/search.py @@ -0,0 +1,136 @@ +"""Search the transcript index. + +Usage: + python search.py "isom trademark" + python search.py "pull up" --tag eric_july + python search.py "judge ramos" --ep 103 --limit 5 + python search.py "rage" --from 2017-01-01 --to 2019-12-31 --report out.txt + +Output lines include EPISODE + TIMESTAMP so they can be deep-linked to audio +later: [Ep 373 | 2023-08-29] 01:12:45-01:13:02 "...transcript snippet..." +""" +import argparse +import datetime as dt +import json +import re +import sqlite3 +import sys + +from config import DB_PATH +from index import open_db + + +def ts(seconds: float) -> str: + s = int(seconds) + return f"{s // 3600:02d}:{(s % 3600) // 60:02d}:{s % 60:02d}" + + +def parse_date(s: str): + return dt.date.fromisoformat(s) + + +def pubdate_year(pub: str): + m = re.search(r"(\d{4})", pub or "") + return int(m.group(1)) if m else None + + +def main() -> None: + ap = argparse.ArgumentParser() + ap.add_argument("query", help="FTS5 query (supports \"quoted phrases\", AND/OR)") + ap.add_argument("--tag", action="append", default=[], + help="filter by hashtag (repeatable)") + ap.add_argument("--ep", type=int, action="append", default=[], + help="restrict to episode number(s)") + ap.add_argument("--from", dest="date_from", default=None) + ap.add_argument("--to", dest="date_to", default=None) + ap.add_argument("--limit", type=int, default=25) + ap.add_argument("--context", type=int, default=0, + help="include N neighbouring segments") + ap.add_argument("--report", default=None, + help="also write matches to this file") + args = ap.parse_args() + + con = open_db(DB_PATH) + q = args.query.strip() + + sql = """ + SELECT s.rowid, e.ep_num, e.guid, e.title, e.pub_date, e.audio_url, + e.page_link, s.seg_idx, s.start_sec, s.end_sec, s.text, s.tags + FROM segments s JOIN episodes e ON e.id = s.episode_id + WHERE segments MATCH ? + """ + params = [q] + + if args.tag: + for t in args.tag: + sql += " AND s.tags LIKE ?" + params.append(f"%#{t}%") + if args.ep: + sql += " AND e.ep_num IN (%s)" % ",".join("?" * len(args.ep)) + params += args.ep + if args.date_from: + y = parse_date(args.date_from).year + # crude pub-date year filter; feed dates are RFC2822 + sql += " AND CAST(substr(e.pub_date, length(e.pub_date)-3, 4) AS INTEGER) >= ?" + params.append(y) + if args.date_to: + y = parse_date(args.date_to).year + sql += " AND CAST(substr(e.pub_date, length(e.pub_date)-3, 4) AS INTEGER) <= ?" + params.append(y) + + sql += " ORDER BY e.pub_date LIMIT ?" + params.append(args.limit) + + rows = con.execute(sql, params).fetchall() + if not rows: + print("no matches") + return + + lines = [] + + def parse_tags(raw: str) -> list[str]: + raw = raw or "" + if not raw: + return [] + if raw.startswith("["): + try: + return json.loads(raw) + except ValueError: + return [] + return [t for t in raw.split() if t] + + for r in rows: + (_rid, ep_num, guid, title, pub, audio_url, page_link, seg_idx, + start, end, text, tags) = r + label = f"Ep {ep_num}" if ep_num else title[:30] + taglist = parse_tags(tags) + head = (f"[{label} | {pub}] {ts(start)}-{ts(end)} " + f"{' '.join(taglist)}") + body = f" \"{text}\"" + extra = "" + if args.context: + ctx = con.execute( + """SELECT start_sec, end_sec, text FROM segments + WHERE episode_id=(SELECT id FROM episodes WHERE guid=?) + AND seg_idx BETWEEN ? AND ? ORDER BY seg_idx""", + (guid, max(0, seg_idx - args.context), + seg_idx + args.context)).fetchall() + body = "\n".join( + f" [{ts(a)}-{ts(b)}] {t}" for a, b, t in ctx) + link = page_link or audio_url + extra = f" -> {link}\n mp3: {audio_url}" + lines.append(head + "\n" + body + "\n" + extra) + + out = "\n\n".join(lines) + print(out[:20000]) + print(f"\n({len(rows)} result(s), limit {args.limit})") + + if args.report: + with open(args.report, "a", encoding="utf-8") as f: + f.write(f"\n===== QUERY: {q} tags={args.tag} eps={args.ep} =====\n") + f.write(out + "\n") + print(f"appended to {args.report}") + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/status.py b/status.py new file mode 100644 index 0000000..84de827 --- /dev/null +++ b/status.py @@ -0,0 +1,14 @@ +"""Print master-file integrity summary.""" +import json + +m = json.load(open("data/dickshow_analysis.json", encoding="utf-8")) +meta = m["meta"] +print("meta:", {k: meta[k] for k in + ("episodes_analyzed", "episodes_factchecked", + "total_runtime_minutes")}) +for e in m["episodes"]: + v = e.get("_verification", {}) + n_issues = len(v.get("issues", [])) + print(f"Ep {e['ep_num']}: TI={e['transgression']['overall_ti']} " + f"verified={v.get('verdict')} issues_fixed={n_issues} " + f"points={len(e['talking_points'])}") diff --git a/transcribe.py b/transcribe.py new file mode 100644 index 0000000..ee2bf46 --- /dev/null +++ b/transcribe.py @@ -0,0 +1,170 @@ +"""Whisper transcription with segment timestamps. + +Reads audio/*.mp3, writes transcripts/.json: +{ + "guid": ..., "ep_num": ..., "title": ..., "pub_date": ..., + "audio_url": ..., "model": ..., "segments": [ + {"start": 12.34, "end": 18.90, "text": "..."}, ... + ] +} +Fully resumable: finished transcripts are skipped unless --force. +Use --minutes N to transcribe only the first N minutes (testing). +""" +import argparse +import json +import os +import sys +import time + +from config import (TRANSCRIPT_DIR, WHISPER_MODEL, DEVICE, COMPUTE_TYPE, + LANGUAGE, VAD_FILTER, BEAM_SIZE, WORD_TIMESTAMPS, + CONDITION_ON_PREVIOUS_TEXT, KEEP_AUDIO) +from feed import load_episodes +from download import audio_path, slug as ep_slug +from preprocess import prepare_audio, prepared_path, load_pcm +from lexicon import build_lexicon, tags_for_text + +# faster-whisper runs one giant FFT over the whole input; multi-hour episodes +# blow up RAM (~2.5 GB arrays). Transcribe in fixed windows instead. +CHUNK_SECONDS = 600 + + +def transcript_path(ep: dict) -> str: + return os.path.join(TRANSCRIPT_DIR, ep_slug(ep) + ".json") + + +def transcribe_episode(model, ep: dict, minutes: float | None) -> dict: + src = audio_path(ep) + prep = prepared_path(ep) + t0 = time.time() + prepare_audio(src, prep, max_seconds=minutes * 60 + 5 if minutes else None) + print(f" prepped audio in {time.time() - t0:.0f}s -> {os.path.basename(prep)}", + flush=True) + + pcm = load_pcm(prep) + total_samples = len(pcm) + if minutes: + total_samples = min(total_samples, int(minutes * 60 * 16000)) + duration = total_samples / 16000.0 + + segments = [] + n_chunks = (total_samples + CHUNK_SECONDS * 16000 - 1) // (CHUNK_SECONDS * 16000) + for ci in range(n_chunks): + a = ci * CHUNK_SECONDS * 16000 + b = min(a + CHUNK_SECONDS * 16000, total_samples) + offset = a / 16000.0 + chunk = pcm[a:b] + segs_iter, info = model.transcribe( + chunk, + language=LANGUAGE, + vad_filter=VAD_FILTER, + beam_size=BEAM_SIZE, + word_timestamps=WORD_TIMESTAMPS, + condition_on_previous_text=CONDITION_ON_PREVIOUS_TEXT, + ) + for seg in segs_iter: + text = seg.text.strip() + if not text: + continue + segments.append({ + "start": round(seg.start + offset, 2), + "end": round(seg.end + offset, 2), + "text": text, + }) + print(f" chunk {ci + 1}/{n_chunks} done " + f"(audio {(b - a) / 16000 / 60:.0f}m, " + f"{len(segments)} segs so far)", flush=True) + + return { + "guid": ep["guid"], + "ep_num": ep["ep_num"], + "title": ep["title"], + "pub_date": ep["pub_date"], + "audio_url": ep["audio_url"], + "page_link": ep.get("page_link", ""), + "duration_sec": duration, + "model": WHISPER_MODEL, + "language": LANGUAGE, + "partial_minutes": minutes, + "segments": segments, + } + + +def main() -> None: + ap = argparse.ArgumentParser() + ap.add_argument("eps", nargs="*", type=int, + help="episode numbers; default: all") + ap.add_argument("--minutes", type=float, default=None, + help="only transcribe first N minutes (testing)") + ap.add_argument("--force", action="store_true", + help="re-transcribe even if transcript exists") + args = ap.parse_args() + + from faster_whisper import WhisperModel + + eps = load_episodes() + todo = [] + for ep in eps: + if ep["ep_num"] is not None and args.eps and ep["ep_num"] not in args.eps: + continue + tp = transcript_path(ep) + if os.path.exists(tp) and not args.force and not args.minutes: + continue + if not os.path.exists(audio_path(ep)): + print(f"skip (no audio): {ep['title']}", file=sys.stderr) + continue + todo.append(ep) + + model = None # lazy-load after we know there's work + done = 0 + for i, ep in enumerate(todo, 1): + label = f"Ep {ep['ep_num']}" if ep["ep_num"] else ep["title"][:40] + if model is None: + print(f"loading whisper model '{WHISPER_MODEL}' " + f"(device={DEVICE}, compute={COMPUTE_TYPE}) ...") + model = WhisperModel(WHISPER_MODEL, device=DEVICE, + compute_type=COMPUTE_TYPE) + t0 = time.time() + src = audio_path(ep) + prep = prepared_path(ep) + ok = False + try: + result = transcribe_episode(model, ep, args.minutes) + outp = transcript_path(ep) + with open(outp + ".tmp", "w", encoding="utf-8") as f: + json.dump(result, f, ensure_ascii=False) + os.replace(outp + ".tmp", outp) + dur = result["duration_sec"] or 1 + rate = dur / max(time.time() - t0, 0.001) + n_seg = len(result["segments"]) + lexicon = build_lexicon() + ep_tag_set: set[str] = set() + for seg in result["segments"]: + ep_tag_set.update(tags_for_text(seg["text"], lexicon)) + print(f"[{i}/{len(todo)}] {label}: {n_seg} segments, " + f"{dur/60:.0f} min audio, {rate:.1f}x realtime") + print(f" TAGS: {' '.join('#' + t for t in sorted(ep_tag_set)) or '(none)'}") + done += 1 + ok = True + except Exception as e: # noqa: BLE001 + print(f"{label}: TRANSCRIBE FAILED - {e}", file=sys.stderr) + continue + finally: + # reclaim disk: prepped wav always goes; mp3 unless KEEP_AUDIO + if os.path.exists(prep): + try: + os.remove(prep) + except OSError: + pass + if not KEEP_AUDIO and ok and not args.minutes: + try: + os.remove(src) + except OSError: + pass + + print(f"transcribed={done} skipped_existing=" + f"{len([e for e in eps if os.path.exists(transcript_path(e))])}") + + +if __name__ == "__main__": + main() diff --git a/verify.py b/verify.py new file mode 100644 index 0000000..5c85c21 --- /dev/null +++ b/verify.py @@ -0,0 +1,177 @@ +"""Second-pass fact-check: verify an episode analysis against the research +dossier (Dax_Herrera_Dick_Masterson_Profile.txt) via a second opencode run. + +Spots "strange assumptions" like attributing a 2023 cohost seat to Maddox. +Usage: + python verify.py # verify ALL existing analyses + python verify.py 361 373 # verify specific episodes +""" +import json +import os +import sys +import time + +# console-safe output (model errors may contain any unicode) +try: + sys.stdout.reconfigure(encoding="utf-8", errors="replace") + sys.stderr.reconfigure(encoding="utf-8", errors="replace") +except Exception: + pass + +from config import BASE_DIR +from feed import load_episodes +from download import slug as ep_slug +from facts import DOSSIER_PATH, CAST_SHEET +from analyze import (ANALYSIS_DIR, OPENCODE, run_opencode, strip_to_json, + validate) +from export_txt import txt_path + +VERIFY_PROMPT = """You are the fact-checking archivist for The Dick Show project. Three files are attached: + + FILE 1: the episode transcript (timestamped lines [HH:MM:SS]). + FILE 2: a researched dossier about the host, Dax Herrera aka Dick Masterson (verified court records, timeline, cast roster, feuds). + FILE 3: a candidate ANALYSIS JSON of that episode produced by another analyst pass. + +Your job: cross-check FILE 3 against FILE 1 and FILE 2 for FACTUAL consistency only. Do not judge opinions, humor, or TI scores. Check specifically: +- Speaker/role attribution. {cast} +- Names, spellings, and who is who (e.g. Sean vs Vito vs Asterios vs Maddox). +- Timeline claims vs the dossier (what was happening when this episode aired; which feud is active). +- Events/people attributed to the wrong era or wrong person. +- Claims about guests that contradict the transcript itself. + +Output ONLY one valid JSON object, no fences, no commentary: +{{ + "verdict": "pass" or "fix", + "issues": [ + {{"field": "guests|talking_points|arguments|ideas|notable_quotes|transgression", + "claim": "...", "issue": "...", "correction": "..."}} + ], + "corrected_analysis": {{ ... full corrected analysis JSON, same schema as FILE 3, or null if verdict=pass ... }} +}} + +Rules: +- If everything checks out: verdict="pass", issues=[], corrected_analysis=null. +- If ANY factual issue affects content: verdict="fix" and corrected_analysis MUST contain the complete corrected JSON (not a diff). +- Keep all scores/timestamps unless they are part of an identified error. +Begin now.""" + + +def build_verify_prompt() -> str: + return VERIFY_PROMPT.replace("{cast}", CAST_SHEET.strip()) + + +def verify_episode(ep: dict, force: bool = False) -> dict | None: + apath = os.path.join(ANALYSIS_DIR, f"{ep_slug(ep)}.json") + if not os.path.exists(apath): + return None + with open(apath, encoding="utf-8") as f: + current = json.load(f) + + attach_txt = txt_path(ep) + if not os.path.exists(attach_txt): + from export_txt import export_txt + attach_txt = export_txt(ep) + if not os.path.exists(DOSSIER_PATH): + print(f" dossier missing at {DOSSIER_PATH}; cannot verify", + file=sys.stderr) + return None + + prompt = build_verify_prompt() + from analyze import RateLimitError + waits = [30, 120, 300, 600] + attempt = 0 + last_err = None + while attempt < len(waits): + attempt += 1 + try: + raw = run_opencode_multi(prompt, [attach_txt, DOSSIER_PATH, apath]) + verdict = strip_to_json(raw) + v = verdict.get("verdict") + if v not in ("pass", "fix"): + raise ValueError(f"bad verdict: {v!r}") + if v == "pass": + current.setdefault("_verification", { + "verdict": "pass", "checked_at": _now(), "issues": []}) + _save(apath, current) + print(f" verified OK (no issues)", flush=True) + return current + fixed = verdict.get("corrected_analysis") + if not isinstance(fixed, dict): + raise ValueError("verdict=fix but no corrected_analysis") + validate(fixed) + issues = verdict.get("issues", []) + fixed["_verification"] = {"verdict": "fix", "checked_at": _now(), + "issues": issues} + fixed["ep_num"] = ep["ep_num"] if ep["ep_num"] else fixed.get("ep_num") + _save(apath, fixed) + print(f" FIXED {len(issues)} issue(s):", flush=True) + for i in issues[:6]: + print(f" - [{i.get('field')}] {str(i.get('issue'))[:90]}", + flush=True) + return fixed + except RateLimitError as e: + last_err = e + wait = waits[min(attempt, len(waits) - 1)] + print(f" verify rate-limited (attempt {attempt}); " + f"sleeping {wait}s ...", flush=True) + time.sleep(wait) + except Exception as e: # noqa: BLE001 + last_err = e + wait = waits[min(attempt - 1, len(waits) - 1)] + print(f" verify attempt {attempt} failed: {e}; " + f"retry in {wait}s", flush=True) + time.sleep(wait) + print(f" verification FAILED for {ep['title']}: {last_err}", flush=True) + return None + + +def run_opencode_multi(prompt: str, attachments: list[str]) -> str: + from analyze import OPENCODE_MODEL + cmd = [OPENCODE, "run", "--auto"] + for a in attachments: + cmd += ["-f", a] + cmd += ["--dir", BASE_DIR] + if OPENCODE_MODEL: + cmd += ["-m", OPENCODE_MODEL] + cmd.append(prompt) + import subprocess + proc = subprocess.run(cmd, capture_output=True, text=True, + encoding="utf-8", errors="replace", + cwd=BASE_DIR, timeout=900) + out = proc.stdout or "" + if not out.strip() and proc.stderr: + raise RuntimeError(f"opencode produced no stdout: " + f"{proc.stderr[-400:]}") + return out + + +def _now() -> str: + from datetime import datetime, timezone + return datetime.now(timezone.utc).isoformat() + + +def _save(apath: str, obj: dict) -> None: + tmp = apath + ".tmp" + with open(tmp, "w", encoding="utf-8") as f: + json.dump(obj, f, ensure_ascii=False, indent=1) + os.replace(tmp, apath) + + +def main() -> None: + args = [a for a in sys.argv[1:] if not a.startswith("-")] + eps = load_episodes() + todo = [e for e in eps + if os.path.exists(os.path.join(ANALYSIS_DIR, + f"{ep_slug(e)}.json")) + and (not args or e["ep_num"] in {int(a) for a in args})] + print(f"verifying {len(todo)} analysis file(s)", flush=True) + for i, ep in enumerate(todo, 1): + label = f"Ep {ep['ep_num']}" if ep['ep_num'] else ep['title'][:40] + print(f"[{i}/{len(todo)}] verifying {label} ...", flush=True) + verify_episode(ep) + from aggregate import aggregate + aggregate() + + +if __name__ == "__main__": + main()