Open-source project
ohoachuck/wwdc-downloader avatar
ohoachuck/wwdc-downloader

wwdc-downloader for WWDC 2019 Videos and Resources

WWDC 2019 video downloader script written in Swift - no external dependency.

1,478 stars136 forksSwiftLicense varies

At a glance

What is it?
wwdc-downloader is a Swift script for collecting WWDC session videos, PDF resources, and sample code in bulk. It is aimed at macOS users at the WWDC event, but its documented external-drive failure and Swift 5.1 shebang workaround limit its suitability elsewhere.
Who is it for?
Adopt wwdc-downloader if you need a command-line batch downloader for WWDC 2019 assets and can download into the current directory. Do not adopt it if you require reliable external-drive output, a documented license, recent releases, or a maintained desktop experience.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 139 days ago.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Why wwdc-downloader targets the WWDC conference network

wwdc-downloader solves a narrow acquisition problem: downloading complete sets of WWDC 2019 session assets before leaving the conference venue. Its intended user is someone with access to the fast connection at the WWDC conference center, especially a macOS user who wants videos, slide PDFs, and sample code in one batch. The README says the project was created for this situation rather than as a general video client.

The script can request 1080p, 720p, or standard-definition videos. It can also include PDF resources and sample code when available. Selection can be broad, covering all known sessions for a year, or narrow, such as sessions 503 and 504. A listing mode provides session titles without initiating downloads.

That focus explains both the design and several constraints. The project is not presented as a catalog browser, media player, or persistent library manager. It writes into the current directory, relies on session metadata discovered by the script, and treats video conversion as part of the download operation when `ffmpeg` is available. This makes it suitable for a temporary conference download batch, not necessarily for managing the same conference collection repeatedly.

How the Swift downloader selects and processes WWDC assets

The repository contains one main script, `wwdcDownloader.swift`, along with older year-specific Swift files and deprecated shell entry points. The README identifies `wwdcDownloader.swift` as the latest version. Its interface accepts a target WWDC year, video quality, resource types, session numbers, and output-related actions through command-line options.

The quality path has an important two-stage behavior. For 720p and SD downloads, the script retrieves the requested assets directly. For 1080p, the documentation says video processing is required. The script attempts to use `ffmpeg`; if `ffmpeg` is unavailable, it downloads the stream files without converting them. After `ffmpeg` is installed, rerunning the same download command performs conversion of the downloaded stream files rather than downloading everything again.

Separate flags also change the data flow. `--pdf` adds slide documents to a video download, while `--pdf-only` requests documents without videos. `--sample` includes sample code, while `--sample-only` requests sample code by itself. Session IDs passed with `--sessions` narrow the operation. Based on the README, the output is assembled in the process working directory, so the chosen directory is part of the download behavior rather than a configurable destination in the documented interface.

Installing wwdcDownloader.swift and listing WWDC 2019 sessions

The documented platform is macOS. No package manager installation is specified for the script itself, so the project files are used directly from the repository. There is also an important startup caveat. The README says execution through `#!/usr/bin/swift` failed with a Swift 5.1 bug and recommends compiling the script before running it. The README does not provide the exact compile command, so it would be unsafe to invent one.

If direct execution works in the chosen Swift environment, begin by listing the sessions that the script recognizes. The reader should see known session titles and no downloaded media files:

bash
./wwdcDownloader.swift --list-only

The main executable also has a shell entry point, `wwdcDownloader.sh`, whose documented syntax accepts the same parameters as the Swift script. The README names an example invocation:

bash
wwdcDownloader.sh --hd720 --pdf --sample

The repository includes this shell file and the deprecated variants, but the README explicitly calls `wwdcDownloader.swift` the latest version. The repository also has no GitHub releases, so there is no release archive or published version number to use as an installation anchor.

Running a first 720p WWDC 2019 batch download

A first download should be narrower than the project's original all-session use case. After checking the available titles with `--list-only`, choose the directory in which the files should be written and run the documented 720p command there. The command requests every known WWDC 2019 video at that quality, then adds PDF resources and sample code when they exist:

bash
./wwdcDownloader.swift --hd720 --pdf --sample

The expected outputs are video files for the selected sessions, slide PDFs, and sample-code archives or directories, all placed in the current directory according to the README. This is not an estimate of file count or download size, because the README does not enumerate the session catalog or provide total sizes.

For a smaller first use, the documented session filter can restrict the operation. This example requests SD video and PDFs for sessions 503 and 504:

bash
./wwdcDownloader.swift --sd --pdf --sessions 503 504

That example provides a clearer acceptance check because it names exactly two sessions and two asset classes. The script should produce only the requested kinds of files for those sessions, subject to the resources being available. The README does not document retry policy, overwrite behavior, partial-download recovery, or rollback, so those points remain unverified.

The external-drive warning and 1080p conversion boundary

The most consequential limitation appears at the top of the README: the current script does not work when downloading directly to an external hard drive. The cause is not documented, and there is no prescribed repair. A user who needs the conference batch to land on removable storage must therefore choose another output location or use a different acquisition tool.

There is a second boundary around 1080p output. The README says 1080p downloads require video processing and that the script tries to use `ffmpeg`. If `ffmpeg` is missing, the script still downloads stream files but does not convert them to video files. This fallback is useful because it preserves work, yet it does not satisfy a request for immediately playable 1080p files.

The documented recovery is to install `ffmpeg` and rerun the same command. The README points to the Homebrew formula page for installation, but it does not specify a Swift installation procedure or cover non-macOS systems. It also does not define conversion error handling. Users should therefore treat successful stream retrieval and successful `ffmpeg` conversion as separate states rather than assuming that the presence of downloaded files means the requested video is complete.

Repository history, maintenance signals, and upgrade limits

The repository is not archived. Its last push was on 2026-06-07, which is the available maintenance signal, but a push date does not establish a release cadence or confirm that WWDC endpoints remain compatible. The repository has no GitHub releases, and the README contains no changelog, compatibility matrix, or upgrade procedure.

The file layout also shows accumulated generations of the project: `fall2017.swift`, `wwdc2014.swift`, `wwdc2016.swift`, `wwdc2017.swift`, deprecated shell files, and the current `wwdcDownloader.swift`. That arrangement helps explain which file the README considers current, but it does not provide a migration path from every historical script.

The repository lists its primary language as Swift, and the README requires macOS. It has no external dependency for the basic script, although `ffmpeg` is required for 1080p conversion. The license is unknown, so the repository does not provide enough licensing information for an adopter to assess redistribution or reuse terms. Without a named license, the absence of an explicit grant is a practical blocker for organizations that need documented permission before incorporating the code into their own tooling.

How the WWDC mac app differs from the script

The README identifies Guilherme Rambo's WWDC application as the best-in-class reference and links to the `insidegui/WWDC` repository. The practical difference is the delivery model. wwdc-downloader is a Swift command-line script aimed at bulk collection into the current directory, with flags for quality and asset type. The WWDC project is presented as a purpose-designed native macOS application associated with wwdc.io.

That comparison is not a claim that both projects expose identical features, because the repository material does not document the application's full command set, output handling, or conversion behavior. It does establish a clear choice for a user. Choose the script when the immediate requirement is a batch command for WWDC 2019 assets and external-drive output is not required. Investigate the native app when a graphical macOS experience is the priority, but verify its current compatibility and licensing independently before adoption.

Editorial conclusion

Adopt wwdc-downloader if you need a command-line batch downloader for WWDC 2019 assets and can download into the current directory. Do not adopt it if you require reliable external-drive output, a documented license, recent releases, or a maintained desktop experience. Before use, verify that `./wwdcDownloader.swift --list-only` returns the expected sessions and decide whether 1080p conversion through `ffmpeg` is part of your workflow.

Frequently asked questions

Does wwdc-downloader support macOS?

Yes. The README lists macOS as a requirement, and the project is written in Swift.

Does wwdc-downloader work with an external hard drive?

No. The README explicitly warns that the current script does not work when downloading directly to an external hard drive and gives no documented workaround.

Does wwdc-downloader require ffmpeg?

It requires `ffmpeg` for 1080p video conversion. Without it, the script downloads 1080p stream files but does not convert them into video files.

Official sources

  1. Issues
  2. ohoachuck/wwdc-downloader on GitHub
  3. Project website
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ohoachuck-wwdc-downloader.svg)](https://hysenlabs.com/projects/ohoachuck-wwdc-downloader)

Was this useful?