AppleConferencesDownloader960.png

Icon-AppleConferencesDownloader-128x128.png

Apple Conferences Downloader

The Apple juice preservation

Sometime you live in place with no high speed internet available, or you just want to travel and still access Apple Conferences resources (like during a snow storm in Yellowstone NP).

Multiple "WWDC Downloader" applications exist, but I like organaized data, and they generally create a world a litlle bit too flat...
AppleConferenceDownloader organizes all files by conferences, sessions and resources.

Multiple sessions can reference the same resources, to not waste disk space, it shared all of them (using hard link, like Time Machine)

Sometimes you see a resource and wonder where it was referenced, "shortcut link" in the resource folder shows all the sessions that reference it.

Need to stop it before the end, or the network get lost? just restart AppleConferenceDownloader and skeep resources already downloaded,

Let's get started

Download the AppleConferenceDownloader.zip (available at the end of the page) and extract the application.

Start the program.

AppleConferencesDownloader-MainWindow.png

Select where to download

Select where you want to download the conference, by default it is inside the "Downloads" folder. You can change it with the "Select folder" button, from there you can create a new folder or select an existing one.

Select what to download

You can select SD or HD video, presentation slide (pdf), or available resources.

At this time (just after WWDC 2018) the following conferences will be downloaded:

  • WWDC 2018
  • Developer Insights
  • Tech Talks
  • WWDC 2017
  • WWDC 2016
  • WWDC 2015
  • WWDC 2014

The exact list of conferences is downloaded from Apple server ("https://devimages-cdn.apple.com/wwdc-services/j06970e2/296E57DA-8CE8-4526-9A3E-F0D0E8BD6543/contents.json") and should be updated when new conferences are available.

Note: It is not possible to download only a subset of conference, but the conferences already downloaded will not be downloaded again in the future...

Start to download

Click on "Download" button.

AppleConferencesDownloader-Downloading.png

The "Download" button changes to "Stop", click on it to request to stop before all download are completed. The application will stop after the current download is completed.

A message area gives an overview of what is currently downloaded.

A progress bar indicates the global progression.

AppleConferencesDownloader-Error.png

If an error arrived during the processing, a description is added in red.

When all downloads are completed, the button changes back to "Download" and the progress bar is reset.

You can expect to download about 170 GB (for WWDC 2018 and previous, and without HD movies), that will take some time...

Download organization:

AppleConferencesDownloader-Folder1.png

The "Apple Conferences" folder is created.
Inside you have one folder by conferences, and one folder "_sharedresources".

Conferences and sessions

AppleConferencesDownloader-Folder2.png

For each conference, you get one subfolder by session, prefixed with the session ID.

Inside each session folder you get the video and slide, and one folder by resources associated with the session. In the previous screenshot, the conferences "WWDC 2018" contains the session "204", that contains the resource "412".

Resources

Each resource is present in the "_sharedresources" folder, and shared between sessions.

AppleConferencesDownloader-Folder3.png

Each session includes a "hard link" to the resource, to avoid duplicating files when multiple sessions reference the same resources.

AppleConferencesDownloader-Folder4.png

From the previous conference example, the resource 412 contains a file (*.md) that describes the resource, and two shortcuts that reference back the session where this resource is used, here both are from WWDC 2018, one is session 204, the other is sesion 234.

Some resource can include pdf file (like resource 415, 416, and 417).

AppleConferencesDownloader-Folder5.png

Some other resource can include sample source archive (like 393), or other type of files that seems to be interesting to download.

Some resources like the 393 can be very popular bettween sessions.

 

Have fun, and let me know what you think about this little App.

Pascal

 


Download:

 

History:

2018/07/13 v1.1 Log: yellow background text for new download. Gray text when no changes.
2018/06/15 v1.0 Initial release

Notes:

AppleConferenceDownloader follow recomendation from MacOS Security to protect your computer:

  • Gatekeeper friendly: signed with the Apple's developer ID of Pascal Mermoz.
  • Sandboxed with limited privileges: access only the "Downloads" folder or the folder you specify, and outgoing network connection, nothing else.
    To check the app binary sandbox state:
$ codesign -dvvv --entitlements :- AppleConferencesDownloader.app

Executable=/Users/dev/Desktop/AppleConferencesDownloader.app/Contents/MacOS/AppleConferencesDownloader
Identifier=net.mermoz.AppleConferencesDownloader
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=1989 flags=0x0(none) hashes=54+5 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=3202dfb9baeec672be415e7e582d4368c93aa7ed
CandidateCDHash sha256=829baf5c563262f13f4ac6e73dea3fb2a747a9b3
Hash choices=sha1,sha256
CDHash=829baf5c563262f13f4ac6e73dea3fb2a747a9b3
Signature size=8915
Authority=Developer ID Application: Pascal Mermoz (93DJXX349P)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Jun 15, 2018 at 16:49:12
Info.plist entries=23
TeamIdentifier=93DJXX349P
Sealed Resources version=2 rules=13 files=22
Internal requirements count=1 size=232
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.downloads.read-write</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>