title: Getting key error and Import error in Python code for YouTube data API
body: <p>I am trying to run Python code to download YouTube data using the generated API key for YouTube. My problem is whenever I try to run the code I am getting warnings and error. The code worked once when I downloaded it from Coursera, but now after getting me the results once it has stopped working.</p>
  
  <p>The output of this code is a CSV file containing video data like like count, view count, comment count dislike count, favorite count, etc. which I would use later to do some statistical analysis on R or Python as part of my course on Coursera.</p>
  
  <p>PFB the code which I used: xxxxx is the API key for me which I generated from Google YouTube data API v3</p>
  
  <pre><code>Enter code here
  
  # -*- coding: utf-8 -*-
  
  from apiclient.discovery import build
  #from apiclient.errors import HttpError
  #from oauth2client.tools import argparser # removed by Dongho
  import argparse
  import csv
  import unidecode
  
  # Set DEVELOPER_KEY to the API key value from the APIs &amp; authentication ? Registered apps
  # tab of
  #   https://cloud.google.com/console
  # Please ensure that you have enabled the YouTube Data API for your project.
  DEVELOPER_KEY = "xxxxxxxxxxxx"
  YOUTUBE_API_SERVICE_NAME = "youtube"
  YOUTUBE_API_VERSION = "v3"
  
  def youtube_search(options):
      youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=DEVELOPER_KEY)
      # Call the search.list method to retrieve results matching the specified
      # Query term.
      search_response = youtube.search().list(q=options.q, part="id,snippet", maxResults=options.max_results).execute()
  
      videos = []
      channels = []
      playlists = []
  
      # Create a CSV output for video list
      csvFile = open('video_result.csv','w')
      csvWriter = csv.writer(csvFile)
      csvWriter.writerow(["title","videoId","viewCount","likeCount","dislikeCount","commentCount","favoriteCount"])
  
      # Add each result to the appropriate list, and then display the lists of
      # matching videos, channels, and playlists.
      for search_result in search_response.get("items", []):
          if search_result["id"]["kind"] == "youtube#video":
              #videos.append("%s (%s)" % (search_result["snippet"]["title"],search_result["id"]["videoId"]))
              title = search_result["snippet"]["title"]
              title = unidecode.unidecode(title)  # Dongho 08/10/16
              videoId = search_result["id"]["videoId"]
              video_response = youtube.videos().list(id=videoId,part="statistics").execute()
              for video_result in video_response.get("items",[]):
                  viewCount = video_result["statistics"]["viewCount"]
                  if 'likeCount' not in video_result["statistics"]:
                      likeCount = 0
                  else:
                      likeCount = video_result["statistics"]["likeCount"]
                  if 'dislikeCount' not in video_result["statistics"]:
                      dislikeCount = 0
                  else:
                      dislikeCount = video_result["statistics"]["dislikeCount"]
                  if 'commentCount' not in video_result["statistics"]:
                      commentCount = 0
                  else:
                      commentCount = video_result["statistics"]["commentCount"]
                  if 'favoriteCount' not in video_result["statistics"]:
                      favoriteCount = 0
                  else:
                      favoriteCount = video_result["statistics"]["favoriteCount"]
  
              csvWriter.writerow([title,videoId,viewCount,likeCount,dislikeCount,commentCount,favoriteCount])
  
      csvFile.close()
  
  if __name__ == "__main__":
      parser = argparse.ArgumentParser(description='Search on YouTube')
      parser.add_argument("--q", help="Search term", default="Google")
      parser.add_argument("--max-results", help="Max results", default=25)
      args = parser.parse_args()
      #try:
      youtube_search(args)
      #except HttpError, e:
      #    print ("An HTTP error %d occurred:\n%s" % (e.resp.status, e.content))
  </code></pre>
  
  <p>Whenever I run the code I get following errors:</p>
  
  <ol>
  <li><p>viewCount = video_result[u'statistics']["viewCount"]</p>
  
  <p>KeyError: 'statistics'</p></li>
  <li><p>WARNING:googleapiclient.discovery_cache:file_cache is unavailable when using oauth2client >= 4.0.0
  Traceback (most recent call last):
    File "C:\Anaconda3\Anaconda3 4.2.0\lib\site-packages\googleapiclient\discovery_cache__init__.py", line 36, in autodetect
      from google.appengine.api import memcache
  ImportError: No module named 'google'</p>
  
  <p>During handling of the above exception, another exception occurred:</p>
  
  <p>Traceback (most recent call last):
    File "C:\Anaconda3\Anaconda3 4.2.0\lib\site-packages\googleapiclient\discovery_cache\file_cache.py", line 33, in 
      from oauth2client.contrib.locked_file import LockedFile
  ImportError: No module named 'oauth2client.contrib.locked_file</p></li>
  </ol>
  
  <p>How do I overcome this error?</p>