How To Host Podcasts On Google Drive

Google Drive

Choosing Google Drive

About three weeks ago I started a project in my house to move all of our personal pictures, home movies, music, and other shared files out to a cloud base storage provider.  I did some research and based on cost I decided to go with Google Drive for my purposes.  They had a native Mac sync client and also I tend to use Google Chrome and many other Google Cloud tools for my personal use so it made sense.  It has taken quite some time with our 3meg DSL connection but thanks to some background VMware View Desktops I have been slowly migrating data to the Google Drive cloud.

Sharing Files on Google Drive

This seems pretty easy enough with Google Drive, when you are talking about basic image files, or other documents.  It’s as simple as sharing the file to “anyone with the link” and publishing the link as I have for this example.

Google Drive

For example you can click here and see that it is easy to share an image out to anyone with a Google Drive URL.  What I am finding is so far even as a new service it is very flexible in the respect of file sharing.  So I wanted to start doing Podcasts for another blog site, and I figured let’s use this fancy new space to store them!  Here started my problem.  If you share out an audio file in the same way it is not directly accessible and is converted to the docs.google.com URL as you can see here and the file is not really usable in any way except to “Download” it.  That will not work for podcast streaming of course.

Overlaying Google Drive’s API

Here is where things get interesting!  I was doing some research previously on a company called Storage Made Easy.  I signed up for their free service to try the UI out.  Basically, the idea is that Storage Made Easy overlays the Google Drive API along with about 30 other Cloud Storage providers.  I may get into that later, but for the purposes here I was only concerned with Google Drive even though you will see below I have it connected to some others.

Google Drive

Once you have connected Storage Made Easy to your various cloud storage providers you can then generate URL’s using the Storage Made Easy user interface.  You can see below the same file is enumerated in the interface to select and generate a shared link.

Using PowerPress With Google Drive

Once we have generated this new Storage Made Easy URL, you can see here that the file is now made available not only with a download link, but it is actually just downloaded like any hosted file.  What this means for me is that in the PowePress plugin for WordPress is the URL I provide the plugin is this new one and is 100% verified.  Below is the two screen shots and you can see with the original URL and the new Storage Made Easy generated URL the file is now available to the plugin.  Once the blog post is published the file will play and stream directly from Google Drive.

Google Drive

The real upside to this is I can have other people record and upload PodCasts to this folder provided I give them access to it.  All I need to do is generate the Storage Made Easy URL’s, create the blog posts with the proper URL’s and the PodCasts are good to go!  Why I find hosting these on Google Drive easier really is the user sharing capability of the folder for others to upload files.  Amazon S3 for one is not that user-friendly, at least to me, and DropBox was more expensive.  I now have a way to leverage the storage I am paying for on Google Drive with Storage Made Easy.  The best part is you can move the file from Google Drive to another provider using the Storage Made Easy Interface and the URL you generated is maintained   I will get into more about the usability of Storage Made Easy another time.

I will mention I have since upgraded to the Personal Lifetime Cloud for Business level with Storage Made Easy as it provides unlimited bandwidth.  The free version worked great for my testing and validation before I decided the service would work.  If you want to know more about Storage Made Easy please drop me a line and I will try to help you get started.

Updated 12/3/2012 – Google Drive iTunes Issue

After the work to set this up and it DOES work for PowerPress based blog post streaming, I tried to add the feed to iTunes and got an error about the host not allowing “Byte Range Requests”.  This is a new requirement from iTunes for mobile devices and is supported natively on Apache out of the box and on Amazon Web Services.  However Google Drive does not support this and the solution above to host the files will not work with iTunes.  Below is an example output of what you should see when you run a curl test on the file.  The first two are from S3 and my local web server the third is using the Storage Made Easy API.  You can see the needed item for Byte Range Requests is missing.

$ curl -I -r 200-300 http://s3.amazonaws.com/vfitpodcasts/VFit_PodCast_Episode_1.mp3
HTTP/1.1 206 Partial Content
x-amz-id-2: 7WOWvDo6+QJbmu4wyeYtxDFE67lh3WmTTtwkf2/qKjsWvf3Gz2ftoLXMrgE7tkhP
x-amz-request-id: 1E0F19F44F33ABFB
Date: Mon, 03 Dec 2012 14:02:45 GMT
Last-Modified: Mon, 03 Dec 2012 13:49:20 GMT
ETag: "bc33487e1c973945f497ff51cd6f98d5"
Accept-Ranges: bytes
Content-Range: bytes 200-300/10129785
Content-Type: audio/mpeg
Content-Length: 101
Server: AmazonS3

$ curl -I -r 200-300 http://www.v-fit.us/podcasts/VFit_PodCast_Episode_1.mp3
HTTP/1.1 206 Partial Content
Date: Mon, 03 Dec 2012 14:03:01 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Mon, 03 Dec 2012 14:01:06 GMT
ETag: "9a9179-4cff32e38ca12"
Accept-Ranges: bytes
Content-Length: 101
Cache-Control: public
Expires: Tue, 03 Dec 2013 14:03:01 GMT
Vary: User-Agent
Pragma: public
X-Powered-By: W3 Total Cache/0.9.2.4
Content-Range: bytes 200-300/10129785
Connection: close
Content-Type: audio/mpeg

$ curl -I -r 200-300 http://storagemadeeasy.com/wp-content/uploads/55df0a51439cd03c96ff3db20b8394fa.mp3
HTTP/1.1 200 OK
Date: Mon, 03 Dec 2012 14:03:33 GMT
Server: Apache
X-Powered-By: PHP/5.2.17
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Transfer-Encoding: binary
Content-Disposition: attachment; filename="VFit PodCast Episode 1.mp3"
Set-Cookie: PHPSESSID=185fc2023b60d61780b0755cf6c65198; path=/
Content-Range: bytes 0-10129784/10129785
Content-Length: 10129785
Content-Type: audio/mpeg

I have contacted Storage Made Easy to see if this is something their service can be enabled for and at this time the answer is no.  I will have to revert back to putting these podcasts on S3 for now until I can get another workaround for using Google Drive. At least these podcasts are not large so it should take a while to fill up my 5GB of free space on S3.

The moral of the story here is this does work as long as you don’t want to create an iTunes feed for your podcasts.  If that is the case you cannot use this method today, but it could still work for a few people that don’t yet want to deal with iTunes.

About Chris Colotti

Chris is active on the VMUG and event speaking circuit and is available for many events if you want to reach out and ask. Previously to this he spent close to a decade working for VMware as a Principal Architect. Previous to his nine plus years at VMware, Chris was a System Administrator that evolved his career into a data center architect. Chris spends a lot of time mentoring co-workers and friends on the benefits of personal growth and professional development. Chris is also amongst the first VMware Certified Design Experts (VCDX#37), and author of multiple white papers. In his spare time he helps his wife Julie run her promotional products as the accountant, book keeper, and IT Support. Chris also believes in both a healthy body and healthy mind, and has become heavily involved with fitness as a Diamond Team Beachbody Coach using P90X and other Beachbody Programs. Although Technology is his day job, Chris is passionate about fitness after losing 60 pounds himself in the last few years.

19 comments

  1. Hie Chris! thx for this post…it answered my prayer…have been awhile trying to stream audio & video from google drive.

    bravo!

  2. Awesome, thanks for the Google drive tip, it worked!

  3. Just so you know serving from Google Drive is an extremely bad idea in fact you can expect your numbers to collapse. They do not support
    Byte Serving and Byte Range Request – Required by iTunes and many other portable devices and smartphones

    • Agreed hence the 12/3/2012 update I added 🙂

    • You might want to revisit this and update your blog – I don’t know when it changed, but I’ve been using drive for audio file hosting with no problem for some months, and it supports partial content and byte range requests (see log below).

      Note that I am using the google drive hosted option, which gives me 15Gb free and almost unlimited bandwidth. I say “unlimited” – Google’s official answer is that they don’t provide figures, but you’re “unlikely” to hit it unless your sites is serving “millions” of large files per day. Here’s an example of the headers I receive for mp3, mp4 and ogg files.

      It certainly seems to work fine with jPlayer, which is a front end to the html5 audio elements which also use byte range requests.

      curl -H Range:bytes=16-256 -I http://googledrive.com/host/xxxxxxx/audio/01_Introduction_and_track_list.mp3

      HTTP/1.1 206 Partial Content

      Content-Type: audio/mpeg

      Date: Sun, 06 Apr 2014 10:49:42 GMT

      Content-Length: 241

      Content-MD5: IFcgv48/EWr63xxxxxx==

      Last-Modified: Sat, 05 Apr 2014 19:12:43 GMT

      Cache-Control: private, max-age=60

      Expires: Sun, 06 Apr 2014 10:50:42 GMT

      Content-Range: bytes 16-256/465352

      Access-Control-Allow-Origin: *

      Access-Control-Allow-Credentials: false

      Access-Control-Allow-Headers: Accept, Accept-Language, Authorization, Cache-Control, Content-Disposition, Content-Encoding, Content-Language, Content-Length, Content-MD5, Content-Range, Content-Type, Date, GData-Version, Host, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, Origin, OriginToken, Pragma, Range, Slug, Transfer-Encoding, X-ClientDetails, X-GData-Client, X-GData-Key, X-Goog-AuthUser, X-Goog-PageId, X-Goog-Encode-Response-If-Executable, X-Goog-Correlation-Id, X-Goog-Request-Info, X-Goog-Upload-Command, X-Goog-Upload-Content-Disposition, X-Goog-Upload-Content-Length, X-Goog-Upload-Content-Type, X-Goog-Upload-Offset, X-Goog-Upload-Protocol, X-Goog-Visitor-Id, X-HTTP-Method-Override, X-JavaScript-User-Agent, X-Origin, X-Referer, X-Upload-Content-Length, X-Upload-Content-Type, X-Use-HTTP-Status-Code-Override, X-YouTube-VVT, X-YouTube-Page-CL, X-YouTube-Page-Timestamp

      Access-Control-Allow-Methods: GET,OPTIONS

      Server: HTTP Upload Server Built on Apr 4 2014 13:03:17 (1396641797)

      Alternate-Protocol: 443:quic

  4. Does Amazon S3 automatically add all the metadata iTunes requires or does this have to be done manually? I only ask because when I go into my bucket and select the properties on an mp3 I have there, Accept-Ranges isn’t one of the options in the add more metadata menu. I tried to add “Accept-Ranges: bytes” manually and hit save but when I refreshed it wasn’t there. Where should I be looking?

  5. Has the iTunes issue been fixed in regards to the Byte-Range requests, or has a work around been found?

  6. Well, for whatever it’s worth, I’ve tried this approach using a script to get the direct links to the files on Google Drive in Aug 2016 and iTunes is still rejecting the files because of an apparent byte-range requests inability from the server (Google Drive). So, looks like this would-be-awesome approach is still less-than-awesome. #bummer

Leave a Reply

Your email address will not be published. Required fields are marked *