2014-09-20 2 views
0

Я использую следующий код python для загрузки видео на свой Google Диск из команды Linux. Можно ли использовать на android с Android на базе ядра Linux? если нет, есть ли какая-либо служба Android для загрузки видео в фоновом режиме (эфир на Google Диск или DropBox)?Как загрузить файл на android на Google Диск, используя код python

$ питон uploader.py video_file.avi

uploader.py:

#!/usr/bin/python 
import smtplib 
import os.path 
import sys 
import gdata.data 
import gdata.docs.data 
import gdata.docs.client 
import ConfigParser 

from curses import ascii    


class MotionUploader: 
    def __init__(self): 


     self.password = "my Gmail password" 
     self.sender = "[email protected]"     

     # Folder (or collection) in Docs where you want the videos to go 
     self.folder = 'motion' 


     self._create_gdata_client() 

    def _create_gdata_client(self): 
     """Create a Documents List Client.""" 
     self.client = gdata.docs.client.DocsClient(source='motion_uploader') 
     self.client.http_client.debug = False 
     self.client.client_login(self.sender, self.password, service=self.client.auth_service, source=self.client.source) 

    def _get_folder_resource(self): 
     """Find and return the resource whose title matches the given folder.""" 
     col = None 
     for resource in self.client.GetAllResources(uri='/feeds/default/private/full/-/folder'): 
      if resource.title.text == self.folder: 
       col = resource 
       break  
     return col 


    def _upload(self, video_file_path, folder_resource): 
     '''Upload the video and return the doc''' 
     doc = gdata.docs.data.Resource(type='video', title=os.path.basename(video_file_path)) 
     media = gdata.data.MediaSource() 
     media.SetFileHandle(video_file_path, 'video/avi') 
     doc = self.client.CreateResource(doc, media=media, collection=folder_resource) 
     return doc 

    def upload_video(self, video_file_path): 
     """Upload a video to the specified folder""" 

     folder_resource = self._get_folder_resource() 
     if not folder_resource: 
      raise Exception('Could not find the %s folder' % self.folder) 

     doc = self._upload(video_file_path, folder_resource) 


     video_link = None 
     for link in doc.link:    
      if 'docs.google.com/file/d' in link.href: 
       video_link = link.href 
       break 


if __name__ == '__main__':   
    try: 
     if len(sys.argv) < 2: 
      exit('Usage: uploader.py {config-file-path} {video-file-path}') 

     vid_path = sys.argv[1]   
     if not os.path.exists(vid_path): 
      exit('Video file does not exist [%s]' % vid_path)  
     MotionUploader().upload_video(vid_path)   
    except gdata.client.BadAuthentication: 
     exit('Invalid user credentials given.') 
    except gdata.client.Error: 
     exit('Login Error') 
    except Exception as e: 
     exit('Error: [%s]' % e) 
+0

Вы пишете этот скрипт? «From curses import ascii» немного странно, поскольку скрипт не использует его ... но из быстрого Googling кажется, что у Android Python есть проклятия FWIW. –

+0

Я на самом деле изменил код с одного, который я получил из Интернета, я просто забыл удалить ascii. Но код отлично работает на linux (Beaglebone). –

ответ

0

Я действительно не понимаю, почему вы хотели бы использовать Python на Android? Android может использовать API Google Диска через Службы Google Play. Это очень хорошо документировано здесь: https://developers.google.com/drive/android/get-started.

Вы также можете проверить официальное приложение Quickstart: https://github.com/googledrive/android-quickstart.

+0

Я очень новичок в android java.But, я попробую со вторым link.I только нужно загружать файлы автоматически, без нажатия кнопки на экране Android. –

+0

Вам также необходимо проверить [руководство по началу работы] (https://developers.google.com/drive/android/get-started), чтобы заставить его работать. – Tas