DEV Community

Orson
Orson

Posted on Originally published at tvreviews.site

Hidden Cost of Movie Show Reviews Exposes Free Streaming

Google TV Freeplay hosts an estimated 10,000 free titles that can reduce a household's streaming spend. This article walks through a reproducible workflow to programmatically assemble a curated list of those titles and render them in a local media server.

The Freeplay catalog is exposed via a REST endpoint that returns JSON with fields such as title, genre, runtime, and availability. A simple GET request to https://api.google.tv/freeplay?limit=1000 returns a page of 1000 items. Pagination can be handled by iterating over page offsets until no more items are returned.

Below is a minimal Python example that fetches all pages, deduplicates, and writes the result to CSV:

import requests
import csv

BASE_URL = 'https://api.google.tv/freeplay'
limit = 1000
offset = 0
movies = []

while True:
resp = requests.get(BASE_URL, params={'limit': limit, 'offset': offset})
resp.raise_for_status()
data = resp.json()
if not data['items']:
break
movies.extend(data['items'])
offset += limit

# Remove duplicates by title
unique = {m['title']: m for m in movies}.values()

with open('freeplay_movies.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=['title', 'genre', 'runtime'])
writer.writeheader()
for m in unique:
writer.writerow({'title': m['title'], 'genre': m['genre'], 'runtime': m['runtime']})
Enter fullscreen mode Exit fullscreen mode

Once you have the CSV, you can generate an M3U playlist that can be loaded into a media player such as VLC or Kodi. The playlist can be refreshed nightly to keep it up to date.

Because the content is free, the only cost is the bandwidth and storage used by the streaming server. For a typical home network, this is negligible compared to subscription fees.

Best practices when building this pipeline include caching responses, respecting any rate limits, and handling region restrictions that may apply to certain titles.

Read the full article on our blog

Top comments (0)