☁️ How I Downloaded 85 Videos From Google's Open Cloud Bucket — With 20 Lines of Python

:cloud: How I Downloaded 85 Free Videos From Google’s Public Cloud — With a Simple Python Script

Google left a bucket of videos sitting in the open. I wrote 20 lines of Python to grab them all.

No hacking. No passwords. No “exploits.” Just a public storage folder that anyone can access — and a script to automate the download. Here’s how it works and what you can learn from it.


:world_map: The Backstory — How I Found This

Google has a showcase called Flow TV — a public demo site showing off video content:

While watching, I got curious. Where are these videos actually stored? So I did what any nosy person would do — I looked at the video URL.

It pointed back to something called a Google Cloud Storage bucket. Think of it like a public folder on Google’s servers. And this one? Wide open. No login required. No password. Just… files sitting there for anyone to grab.


☁️ WTF Is a Cloud Storage Bucket? (Dumb-Proof Explanation)

Imagine Google Drive — but for developers and companies.

Instead of sharing files through a link like normal humans, companies store their images, videos, and data in these “buckets” on Google’s cloud servers. Each bucket has a URL, and inside it are files (called “objects”).

The important part: Buckets can be set to public (anyone can see everything) or private (locked down, needs a key).

This bucket? Public. No lock on the door. The files inside were video assets Google uses for their Flow TV demo — and the bucket listing was readable by anyone who knew the URL.

That means you could:

  • See every file stored in the bucket
  • Read metadata about each file (size, name, date)
  • Download any file directly

No tricks. That’s just how public buckets work.


:magnifying_glass_tilted_left: What I Found

The bucket URL:

https://storage.googleapis.com/gweb-tveo-website.appspot.com/

When you visit a public GCS bucket, it returns an XML file — basically a structured list of everything stored inside. Each file entry looks something like this:

<Contents>
  <Key>videos/some-video-name.mp4</Key>
  <Size>12345678</Size>
  <LastModified>2025-01-15T10:30:00Z</LastModified>
</Contents>

Key = the file path. Size = file size. That’s your download list right there.

The pattern to build a download link:

https://storage.googleapis.com/{bucket-name}/{object-key}

So for every .mp4 file listed in that XML → build the URL → download it. That’s it.

Result: ~85 publicly accessible videos. All downloadable. All legit.


:snake: The Python Script (20 Lines)

This script reads the XML listing, finds every .mp4 file, builds the download URL, and grabs them all automatically.

📜 Full Script — Copy & Run
import xml.etree.ElementTree as ET
import requests
import os

BUCKET = "https://storage.googleapis.com/gweb-tveo-website.appspot.com/"
OUTPUT_DIR = "videos"
os.makedirs(OUTPUT_DIR, exist_ok=True)

tree = ET.parse("videos.xml")
root = tree.getroot()
ns = {"ns": "http://doc.s3.amazonaws.com/2006-03-01"}

for contents in root.findall("ns:Contents", ns):
    key = contents.find("ns:Key", ns).text
    if not key.endswith(".mp4"):
        continue

    url = BUCKET + key
    local_path = os.path.join(OUTPUT_DIR, key)
    os.makedirs(os.path.dirname(local_path), exist_ok=True)

    print(f"Downloading: {key}")
    r = requests.get(url, stream=True)
    if r.status_code == 200:
        with open(local_path, "wb") as f:
            for chunk in r.iter_content(8192):
                f.write(chunk)
    else:
        print(f"Failed: {url}")
🧩 What Each Part Does — For People Who Don't Code
Line What It Does (In English)
import ... Loads the tools the script needs — XML reader, web downloader, file manager
BUCKET = "..." The address of Google’s public storage folder
OUTPUT_DIR = "videos" Creates a “videos” folder on your computer to save downloads
tree = ET.parse("videos.xml") Opens the XML file (the list of everything in the bucket)
for contents in root.findall(...) Loops through every file listed in the XML
if not key.endswith(".mp4") Skips anything that isn’t a video file
url = BUCKET + key Builds the full download link for each video
requests.get(url, stream=True) Downloads the video in small chunks (so it doesn’t eat all your RAM)
with open(...) as f: Saves each chunk to a file on your computer
print(f"Failed: {url}") Tells you if a download didn’t work

That’s the entire script. Read a list → filter for videos → download each one. No magic.

▶️ How to Actually Run This

You need:

  • Python 3 installed on your computer
  • The requests library (run pip install requests in terminal)

Steps:

  1. Visit the bucket URL in your browser — it’ll show you the raw XML
  2. Save that page as videos.xml in a folder
  3. Save the Python script above as download.py in the same folder
  4. Open terminal/command prompt in that folder
  5. Run: python download.py
  6. Watch 85 videos download automatically into the videos folder

Takes a few minutes depending on your internet speed. That’s it.


:brain: What You Can Learn From This

This isn’t about “getting free videos.” The videos themselves aren’t that interesting — they’re demo content for a Google showcase.

The real value is understanding:

  • How cloud storage works — companies store assets in buckets, and sometimes those buckets are public
  • How media delivery pipelines operate — websites load videos from cloud storage, not from the website server itself
  • How to turn manual curiosity into automation — instead of clicking 85 links one by one, 20 lines of Python does it in minutes
  • How XML metadata works — structured data that lists everything in a storage system, readable by code
  • Why bucket security matters — if you’re ever building something with cloud storage, this is why you lock your buckets down

⚠️ Important Disclaimer
  • This was a public bucket — no authentication, no bypassing, no scraping
  • Accessing publicly listed files on a public URL is the same as visiting any website
  • This is a learning exercise — not a vulnerability report or a “hack”
  • The script only works on publicly readable buckets — private buckets will just return an access denied error
  • If you work with GCS, AWS S3, or Azure Blob Storage — audit your bucket permissions. Misconfigured public buckets are one of the most common cloud security mistakes

20 lines of Python. 85 videos. Zero passwords. That’s what happens when a storage bucket is left open. :bucket:

5 Likes