def _extract_item(self, f, include_download_info=False): size = long('%s' % Utils.get_safe_value(f, 'size', 0)) item = { 'id': f['id'], 'name': f['name'], 'name_extension': Utils.get_extension(f['name']), 'drive_id': Utils.get_safe_value( Utils.get_safe_value(f, 'owners', [{}])[0], 'permissionId'), 'mimetype': Utils.get_safe_value(f, 'mimeType', ''), 'last_modified_date': Utils.get_safe_value(f, 'modifiedTime'), 'size': size, 'description': Utils.get_safe_value(f, 'description', '') } if item['mimetype'] == 'application/vnd.google-apps.folder': item['folder'] = {'child_count': 0} if 'videoMediaMetadata' in f: video = f['videoMediaMetadata'] item['video'] = { 'width': Utils.get_safe_value(video, 'width'), 'height': Utils.get_safe_value(video, 'height'), 'duration': long('%s' % Utils.get_safe_value(video, 'durationMillis', 0)) / 1000 } if 'imageMediaMetadata' in f: item['image'] = {'size': size} if 'hasThumbnail' in f and f['hasThumbnail']: item['thumbnail'] = Utils.get_safe_value(f, 'thumbnailLink') if include_download_info: parameters = { 'alt': 'media', 'access_token': self._provider.get_access_tokens()['access_token'] } url = self._provider._get_api_url() + '/files/%s' % item['id'] if 'size' not in f and item[ 'mimetype'] == 'application/vnd.google-apps.document': url += '/export' parameters['mimeType'] = self.get_mimetype_by_extension( item['name_extension']) item['download_info'] = { 'url': url + '?%s' % urllib.urlencode(parameters) } return item
def _extract_item(self, f, include_download_info=False): item = { 'id': f['id'], 'name': f['name'], 'name_extension' : Utils.get_extension(f['name']), 'drive_id' : Utils.get_safe_value(Utils.get_safe_value(f, 'parentReference', {}), 'driveId'), 'mimetype' : Utils.get_safe_value(Utils.get_safe_value(f, 'file', {}), 'mimeType'), 'last_modified_date' : Utils.get_safe_value(f,'lastModifiedDateTime'), 'size': Utils.get_safe_value(f, 'size', 0), 'description': Utils.get_safe_value(f, 'description', '') } if 'folder' in f: item['folder'] = { 'child_count' : Utils.get_safe_value(f['folder'],'childCount',0) } if 'video' in f: video = f['video'] item['video'] = { 'width' : Utils.get_safe_value(video,'width', 0), 'height' : Utils.get_safe_value(video, 'height', 0), 'duration' : Utils.get_safe_value(video, 'duration', 0) /1000 } if 'audio' in f: audio = f['audio'] item['audio'] = { 'tracknumber' : Utils.get_safe_value(audio, 'track'), 'discnumber' : Utils.get_safe_value(audio, 'disc'), 'duration' : int(Utils.get_safe_value(audio, 'duration') or '0') / 1000, 'year' : Utils.get_safe_value(audio, 'year'), 'genre' : Utils.get_safe_value(audio, 'genre'), 'album': Utils.get_safe_value(audio, 'album'), 'artist': Utils.get_safe_value(audio, 'artist'), 'title': Utils.get_safe_value(audio, 'title') } if 'image' in f or 'photo' in f: item['image'] = { 'size' : Utils.get_safe_value(f, 'size', 0) } if 'thumbnails' in f and type(f['thumbnails']) == list and len(f['thumbnails']) > 0: thumbnails = f['thumbnails'][0] item['thumbnail'] = Utils.get_safe_value(Utils.get_safe_value(thumbnails, 'large', {}), 'url', '') if include_download_info: item['download_info'] = { 'url' : Utils.get_safe_value(f,'@microsoft.graph.downloadUrl') } return item
def _extract_item(self, f, driveid, include_download_info=False): size = long('%s' % Utils.get_safe_value(f, 'size', 0)) item = { 'id': f['id'], 'name': f['name'], 'name_extension': Utils.get_extension(f['name']), 'drive_id': driveid, 'path_lower': f['path_lower'], 'last_modified_date': Utils.get_safe_value(f, 'client_modified'), 'size': size } if f['.tag'] == 'folder': item['folder'] = {'child_count': 0} metadata = Utils.get_safe_value( Utils.get_safe_value(f, 'media_info', {}), 'metadata', {}) tag = Utils.get_safe_value(metadata, '.tag', '') if tag == 'video': video = metadata['video'] dimensions = Utils.get_safe_value(video, 'dimensions', {}) item['video'] = { 'width': long('%s' % Utils.get_safe_value(dimensions, 'width', 0)), 'height': long('%s' % Utils.get_safe_value(dimensions, 'height', 0)), 'duration': long('%s' % Utils.get_safe_value(video, 'duration', 0)) / 1000 } elif tag == 'photo': item['image'] = {'size': size} if include_download_info: parameters = { 'arg': json.dumps({'path': item['id']}), 'authorization': 'Bearer %s' % self._provider.get_access_tokens()['access_token'] } url = self._provider._get_content_url() + '/files/download' item['download_info'] = { 'url': url + '?%s' % urllib.urlencode(parameters) } return item
def _extract_item(self, f, include_download_info=False): size = long('%s' % Utils.get_safe_value(f, 'size', 0)) item = { 'id': f['id'], 'name': f['name'], 'name_extension' : Utils.get_extension(f['name']), 'drive_id' : Utils.get_safe_value(Utils.get_safe_value(f, 'owners', [{}])[0], 'permissionId'), 'mimetype' : Utils.get_safe_value(f, 'mimeType', ''), 'last_modified_date' : Utils.get_safe_value(f,'modifiedTime'), 'size': size, 'description': Utils.get_safe_value(f, 'description', '') } if item['mimetype'] == 'application/vnd.google-apps.folder': item['folder'] = { 'child_count' : 0 } if 'videoMediaMetadata' in f: video = f['videoMediaMetadata'] item['video'] = { 'width' : Utils.get_safe_value(video, 'width'), 'height' : Utils.get_safe_value(video, 'height'), 'duration' : long('%s' % Utils.get_safe_value(video, 'durationMillis', 0)) / 1000 } if 'imageMediaMetadata' in f: item['image'] = { 'size' : size } if 'hasThumbnail' in f and f['hasThumbnail']: item['thumbnail'] = Utils.get_safe_value(f, 'thumbnailLink') if include_download_info: parameters = { 'alt': 'media', 'access_token': self._provider.get_access_tokens()['access_token'] } url = self._provider._get_api_url() + '/files/%s' % item['id'] if 'size' not in f and item['mimetype'] == 'application/vnd.google-apps.document': url += '/export' parameters['mimeType'] = self.get_mimetype_by_extension(item['name_extension']) item['download_info'] = { 'url' : url + '?%s' % urllib.urlencode(parameters) } return item
def _extract_item(self, f, include_download_info=False): kind = Utils.get_safe_value(f, 'kind', '') if kind == 'drive#change': if 'file' in f: f = f['file'] else: return {} size = long('%s' % Utils.get_safe_value(f, 'size', 0)) is_album = kind == 'album' is_media_items = kind == 'media_item' item_id = f['id'] if is_album: mimetype = 'application/vnd.google-apps.folder' name = Utils.get_safe_value(f, 'title', item_id) else: mimetype = Utils.get_safe_value(f, 'mimeType', '') name = Utils.get_safe_value(f, 'name', '') if is_media_items: name = Utils.get_safe_value(f, 'filename', item_id) item = { 'id': item_id, 'name': name, 'name_extension' : Utils.get_extension(name), 'parent': Utils.get_safe_value(f, 'parents', ['root'])[0], 'drive_id' : Utils.get_safe_value(Utils.get_safe_value(f, 'owners', [{}])[0], 'permissionId'), 'mimetype' : mimetype, 'last_modified_date' : Utils.get_safe_value(f,'modifiedTime'), 'size': size, 'description': Utils.get_safe_value(f, 'description', ''), 'deleted' : Utils.get_safe_value(f, 'trashed', False) } if item['mimetype'] == 'application/vnd.google-apps.folder': item['folder'] = { 'child_count' : 0 } if is_media_items: item['url'] = f['baseUrl'] + '=d' if 'mediaMetadata' in f: metadata = f['mediaMetadata'] item['video'] = { 'width' : Utils.get_safe_value(metadata, 'width'), 'height' : Utils.get_safe_value(metadata, 'height') } item['last_modified_date'] = Utils.get_safe_value(metadata, 'creationTime') if 'videoMediaMetadata' in f: video = f['videoMediaMetadata'] item['video'] = { 'width' : Utils.get_safe_value(video, 'width'), 'height' : Utils.get_safe_value(video, 'height'), 'duration' : long('%s' % Utils.get_safe_value(video, 'durationMillis', 0)) / 1000 } if 'imageMediaMetadata' in f or 'mediaMetadata' in f: item['image'] = { 'size' : size } if 'hasThumbnail' in f and f['hasThumbnail']: item['thumbnail'] = Utils.get_safe_value(f, 'thumbnailLink') if is_album: item['thumbnail'] = Utils.get_safe_value(f, 'coverPhotoBaseUrl') item['id'] = 'album-' + item['id'] if include_download_info: if is_media_items: item['download_info'] = { 'url' : item['url'] } else: parameters = { 'alt': 'media', 'access_token': self.get_access_tokens()['access_token'] } url = self._get_api_url() + '/files/%s' % item['id'] if 'size' not in f and item['mimetype'] == 'application/vnd.google-apps.document': url += '/export' parameters['mimeType'] = Utils.default(Utils.get_mimetype_by_extension(item['name_extension']), Utils.get_mimetype_by_extension('pdf')) item['download_info'] = { 'url' : url + '?%s' % urllib.urlencode(parameters) } return item
def _extract_item(self, f, include_download_info=False): name = Utils.get_safe_value(f, 'name', '') parent_reference = Utils.get_safe_value(f, 'parentReference', {}) item = { 'id': f['id'], 'name': name, 'name_extension': Utils.get_extension(name), 'drive_id': Utils.get_safe_value(parent_reference, 'driveId'), 'parent': Utils.get_safe_value(parent_reference, 'id'), 'mimetype': Utils.get_safe_value(Utils.get_safe_value(f, 'file', {}), 'mimeType'), 'last_modified_date': Utils.get_safe_value(f, 'lastModifiedDateTime'), 'size': Utils.get_safe_value(f, 'size', 0), 'description': Utils.get_safe_value(f, 'description', ''), 'deleted': 'deleted' in f } if 'folder' in f: item['folder'] = { 'child_count': Utils.get_safe_value(f['folder'], 'childCount', 0) } if 'video' in f: video = f['video'] item['video'] = { 'width': Utils.get_safe_value(video, 'width', 0), 'height': Utils.get_safe_value(video, 'height', 0), 'duration': Utils.get_safe_value(video, 'duration', 0) / 1000 } if 'audio' in f: audio = f['audio'] item['audio'] = { 'tracknumber': Utils.get_safe_value(audio, 'track'), 'discnumber': Utils.get_safe_value(audio, 'disc'), 'duration': int(Utils.get_safe_value(audio, 'duration') or '0') / 1000, 'year': Utils.get_safe_value(audio, 'year'), 'genre': Utils.get_safe_value(audio, 'genre'), 'album': Utils.get_safe_value(audio, 'album'), 'artist': Utils.get_safe_value(audio, 'artist'), 'title': Utils.get_safe_value(audio, 'title') } if 'image' in f or 'photo' in f: item['image'] = {'size': Utils.get_safe_value(f, 'size', 0)} if 'thumbnails' in f and type( f['thumbnails']) == list and len(f['thumbnails']) > 0: thumbnails = f['thumbnails'][0] item['thumbnail'] = Utils.get_safe_value( Utils.get_safe_value(thumbnails, 'large', {}), 'url', '') if include_download_info: item['download_info'] = { 'url': Utils.get_safe_value(f, '@microsoft.graph.downloadUrl') } return item