ååããããªã³ã©ã€ã³ã¹ãã¬ãŒãžã®ãGoogleãã©ã€ãããPythonããæäœããæ¹æ³ã«ã€ããŠç޹ä»ããŠãããPythonããGoogleãã©ã€ãã«ã¢ã¯ã»ã¹ã§ããã°ãã¢ã€ãã¢æ¬¡ç¬¬ã§ããããæŽ»çšã§ããã ãããä»åã¯ããã詳ããäœ¿ãæ¹ã玹ä»ããã
ååã®ãããã
ååã¯ãGoogleãã©ã€ããPythonããå©çšããããã«ãGoogleããOAuthã¯ã©ã€ã¢ã³ãIDãååŸããããGoogle Drive APIãæå¹ã«ãããªã©ããŠæºåãæŽããåŸã§ãããã¹ããã¡ã€ã«ãGoogleãã©ã€ãäžã«äœæãããšããç°¡åãªããã°ã©ã ã玹ä»ãããOAuthã®ä»çµã¿ãã¡ãã£ãšè€éãªã®ã§ãååã¯OAuthèªèšŒã§çµãã£ãŠããŸã£ãæããã£ãã
ããã§ãä»åã¯ããã¡ã€ã«ã®äžèЧãåŸãæ¹æ³ããä»»æã®ãã©ã«ãã«ãã¡ã€ã«ãã¢ããããŒãããæ¹æ³ãªã©ãããçªã£èŸŒãã ããã°ã©ã ã玹ä»ãããã
ãŠãŒã¶èªèšŒã ããè¡ãããã°ã©ã
æ¢ã«ãååã®æé ã®éãäœæ¥ããŠãsettings.yamlãäœæããŠãããšããåæã§è©±ãé²ãããååã®ããã°ã©ã ã§ã¯ãããã°ã©ã ã®äžã§èªèšŒãè¡ã£ãŠããã®åŸããã¡ã€ã«ãGoogleãã©ã€ãã«ã¢ããããŠããŸããããã§ãæåã«èªèšŒã ããè¡ãããã°ã©ã ãäœã£ãŠã¿ããã
以äžã®ããã°ã©ã ããgauth.pyããšããååã§ä¿åãããã
# å¿
èŠãªã©ã€ãã©ãª --- (*1)
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
# èªèšŒãè¡ã --- (*2)
gauth = GoogleAuth()
gauth.CommandLineAuth()
print("ok")
ãããŠãã³ãã³ãã©ã€ã³ããã以äžã®ããã°ã©ã ãå®è¡ããã
$ python gauth.py
ååå®è¡ã®å Žåã ãã以äžã®å³ã«ãããããªèªèšŒçšã®URLã衚瀺ããã(â»ååå®è¡ããŠããå Žåã¯ãokããšã ã衚瀺)ãWebãã©ãŠã¶ã§ãã®URLã«ã¢ã¯ã»ã¹ããŠãGoogleã¢ã«ãŠã³ãã§ãã°ã€ã³ããèš±å¯ããã¿ã³ãã¯ãªãã¯ãããšãèªèšŒã³ãŒãã衚瀺ããããããã§ã衚瀺ãããèªèšŒã³ãŒãããã³ãã³ãã©ã€ã³ã«å ¥åãããšãèªèšŒãå®äºããã
ååãããã°ã©ã ã«ã€ããŠãããèŠãŠããªãã£ãã®ã§ãããã°ã©ã ã«æ³šç®ããŠã¿ãããããã°ã©ã ã®(ïŒ1)ã®éšåã§ã¯ãã©ã€ãã©ãªPyDriveã®æ©èœãåã蟌ãã§ããããããŠã(ïŒ2)ã§ã¯ãGogoleAuth()ã§èªèšŒçšã®ãªããžã§ã¯ããäœæããCommandLineAuth()ã¡ãœãããåŒã³ã ããŠãã³ãã³ãã©ã€ã³çšã«èªèšŒãè¡ã£ãŠããã
ç»åãã¡ã€ã«ãã¢ããããŒãããŠã¿ãã
次ã«ãç»åãã¡ã€ã«ãã¢ããããŒãããããã°ã©ã ãäœã£ãŠã¿ããã以äžã®ããã°ã©ã ããupload_image.pyããšããååã§ä¿åããããããŠãã¢ããããŒãããç»åããtest.jpgããšããååã§çšæããŠãããã°ã©ã ãšåããã©ã«ãã«é 眮ããã
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
# èªèšŒãè¡ã
gauth = GoogleAuth()
gauth.CommandLineAuth(GoogleAuth())
# Google Driveã®ãªããžã§ã¯ããåŸã --- (*1)
drive = GoogleDrive(gauth)
# ç»åãã¡ã€ã«ãã¢ããããŒã --- (*2)
f = drive.CreateFile({
'title': 'test.jpg',
'mimeType': 'image/jpeg'})
f.SetContentFile('test.jpg')
f.Upload()
# ã¢ããããŒãçµæã衚瀺 --- (*3)
print(f['title'], f['id'])
ã³ãã³ãã©ã€ã³ããããã°ã©ã ãå®è¡ããŠã¿ããã
$ python upload_image.py
ç»åãã¢ããããŒãããŠãGoogleãã©ã€ããéããŠã¿ããšãç»åãã¢ããããŒããããŠããã®ã確èªã§ããã
ããã°ã©ã ã確èªããŠã¿ãããããã°ã©ã ã®(ïŒ1)ã®éšåã§ã¯ãèªèšŒãªããžã§ã¯ããåŒæ°ã«ãGoogleDriveã®æäœçšã®ãªããžã§ã¯ããååŸããããããŠã(ïŒ2)ã®éšåã§ãç»åãã¢ããããŒãããã®ã ãããŸããCreateFile()ã¡ãœããã§ãã¡ã€ã«ãæºåããŠãSetContentFile()ã¡ãœããã§ã¢ããããŒããããã¡ã€ã«ããã¡ã€ã«ã«ã»ããããUpoad()ã¡ãœããã§å®éã«ã¢ããããŒããè¡ãããããŠããã¡ã€ã«ãã¢ããããŒããããšããã¡ã€ã«ã®idæ å ±ãªã©ãåŸãããã
ã¢ããããŒããããã¡ã€ã«ã®äžèЧã衚瀺ããã
ãããããã¢ããããŒããããã¡ã€ã«ã®äžèЧãååŸããæ¹æ³ãèŠãŠã¿ãŸãããããã®ããã«ã¯ã以äžã®ããã«ãListFile()ã¡ãœãããå©çšããŸãã以äžã®ããã°ã©ã ããlist_files.pyãšããååã§ä¿åããŸãããã
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
gauth = GoogleAuth()
gauth.CommandLineAuth(GoogleAuth())
# Google Driveã®ãªããžã§ã¯ããåŸã
drive = GoogleDrive(gauth)
# ãã¡ã€ã«ã®äžèЧãååŸããŠè¡šç€º
file_list = drive.ListFile().GetList()
for f in file_list:
print(f['title'], f['id'])
ã³ãã³ãã©ã€ã³ããããã°ã©ã ãå®è¡ããŠã¿ãŸãããããããšãå ã»ã©ã¢ããããŒãããç»åãã¡ã€ã«åãšããã¡ã€ã«ã®idã衚瀺ãããŸãã
$ python list_files.py
Googleãã©ã€ãã§ã¯ããã¡ã€ã«ã管çããããã«ãidãä»äžãããŸããäžèšã³ãã³ããå®è¡ãããšã以äžã®ããã«ããã¡ã€ã«åãšidã衚瀺ãããŸãã(ãã¡ããããã¡ã€ã«ã®idã¯ç°ãªãå€ã衚瀺ãããŸãã)
test.jpg 0Bw-U6x8fLBGgSy15WVhQYXpsOE0
ã¡ãªã¿ã«ãå ã»ã©ã®ç»åãã¢ããããŒãããããã°ã©ã ãäœåºŠãå®è¡ãããšãååã®ãã¡ã€ã«ãè€æ°äœæãããŸãããããããã®ãã¡ã€ã«ã¯ãidãç°ãªã£ãŠãããç°ãªããã¡ã€ã«ã«ãªãã®ã確èªã§ããã§ãããã
ãã¡ã€ã«ãåé€ããæ¹æ³
ãã¡ã€ã«ã®äžèЧã衚瀺ããŠããã¡ã€ã«ã®idãåŸããããããã®idãå©çšããŠãã¡ã€ã«ãåé€ããããšãã§ããŸãã以äžã®ãããªããã°ã©ã ãäœããŸãã以äžã®ããã°ã©ã ãdelete_file.pyãšããååã§ä¿åããŸãããã
ãã®æãããã°ã©ã äžã®(ïŒ1)ã®â ããŒã¯ã®ãã倿°ãfile_idãããå ã»ã©ã¢ããããŒãããç»åã®idã«æžãæããŠãã ãããé©åœãªidãæå®ãããšãšã©ãŒãåºãã®ã§ãå®éã«å ã»ã©ã®ããã°ã©ã ã§ç¢ºèªãããã¡ã€ã«ã®idãæå®ããŸãã
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
# åé€ãããã¡ã€ã«ã®id â
--- (*1)
file_id = '0Bw-U6x8fLBGgSy15WVhQYXpsOE0'
gauth = GoogleAuth()
gauth.CommandLineAuth(GoogleAuth())
drive = GoogleDrive(gauth)
# idãæå®ããŠãã¡ã€ã«ãåé€
f = drive.CreateFile({'id': file_id})
f.Delete()
ããã°ã©ã ãã³ãã³ãã©ã€ã³ããå®è¡ããŠã¿ããã
$ python delete_file.py
ããŸãåé€ã§ããããlist_files.pyãå®è¡ããŠãã¡ã€ã«ãåé€ãããŠããããšã確èªããŠã¿ãŠãã ããã
ãã¡ã€ã«ã宿çãªæŽæ°ããã
次ã«ããã¡ã€ã«ã®å 容ã宿çã«æŽæ°ããããã°ã©ã ãäœã£ãŠã¿ããã以äžã®ããã°ã©ã ã¯ã30ç§ã«äžåããã¡ã€ã«ã®å å®¹ãæŽæ°ãããµã³ãã«ã ã以äžã®ããã°ã©ã ããupdate_text.pyãšããååã§ä¿åããã
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from random import randint
from time import sleep
gauth = GoogleAuth()
gauth.CommandLineAuth()
drive = GoogleDrive(gauth)
# æ°åã®ããã¹ããGoogleãã©ã€ãã«æžã蟌ã --- (*1)
f1 = drive.CreateFile({'title': 'dice.txt'})
r = str(randint(1, 6))
f1.SetContentString(r)
f1.Upload()
# ã¢ããããŒããããšidãåŸããã --- (*2)
file_id = f1['id']
# 宿çã«ãã¡ã€ã«ã®å
å®¹ãæŽæ°ãã --- (*3)
while True:
# idãããã¡ã€ã«ãæºåãã --- (*4)
f2 = drive.CreateFile({'id': file_id})
r = str(randint(1, 6))
f2.SetContentString(r)
f2.Upload() # 倿Žãã¢ããããŒã
print("æŽæ°ããŸãã:" + r)
sleep(30)
ããã°ã©ã ãå®è¡ããã«ã¯ãã³ãã³ãã©ã€ã³ãã以äžã®ããã«å®è¡ããããŸããããã°ã©ã ã忢ããã«ã¯ã[Ctrl]+[c]ããŒãæŒããããã°ã©ã ãæ¢ãããŸã§ããã£ãš30ç§æ¯ã«ãã¡ã€ã«ã®å å®¹ãæŽæ°ãç¶ããã
python update_text.py
ããã°ã©ã ãå®è¡ããããWebãã©ãŠã¶ã§Googleãã©ã€ãã«ã¢ã¯ã»ã¹ããŠãdice.txtãšãããã¡ã€ã«ã確èªããŠã¿ããã1ãã6ãŸã§ã®ã©ã³ãã ãªæ°åãæžã蟌ãŸããŠããã®ã確èªã§ãããšæããããã§ã30ç§åŸ ã£ãŠãæ¹ããŠWebãã©ãŠã¶ã§dice.txtãèŠããšãæ°åãæžãæãã£ãŠããã®ã確èªã§ããã
ããã°ã©ã ã確èªããŠã¿ããã(ïŒ1)ã®éšåã§ã¯ãdice.txtãšãããã¡ã€ã«ãäœæããã¢ããããŒãããããããšã(ïŒ2)ã®éšåã«ããããã«ãã¡ã€ã«ã®idãååŸã§ããã(ïŒ3)ã§ã¯ãwhileæ§æã§ç¹°ãè¿ããã¡ã€ã«ã®å å®¹ãæŽæ°ããããã«æå®ããŠããã(ïŒ4)ã§ã¯ããã¡ã€ã«ã®idãããã¡ã€ã«ãæºåããSetContentString()ã§æ°ããããã¹ããèšå®ããUpload()ã§æ°ããããã¹ããã¢ããããŒããããããã«ãã£ãŠããã¡ã€ã«ãæŽæ°ãããã
ãŸãšã
以äžãä»åã¯ãGoogleãã©ã€ããæäœããæ¹æ³ãäžå¿ã«ããã°ã©ã ã玹ä»ãããå°ãé§ãè¶³ãªããããã¡ã€ã«ã®è¿œå ãäžèЧã®è¡šç€ºãåé€ãšæŽæ°ãŸã§ã®æµãã確èªãããããã ãåãã£ãŠããã°ãäžéãã®æäœã¯ãã¹ã¿ãŒããããšã«ãªããæ¬çš¿ãæŽ»ãããŠã圹ã«ç«ã€èªäœããŒã«ãäœã£ãŠã¿ããã
èªç±åããã°ã©ããŒããããã¯ãã©ã«ãŠãããã°ã©ãã³ã°ã®æ¥œãããäŒããæŽ»åãããŠããã代衚äœã«ãæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã ãããã¹ã鳿¥œããµã¯ã©ããªã©ã2001幎ãªã³ã©ã€ã³ãœãã倧è³å ¥è³ã2004幎床æªèžãŠãŒã¹ ã¹ãŒããŒã¯ãªãšãŒã¿èªå®ã2010幎 OSSè²¢ç®è ç« åè³ãæè¡æžãå€ãå·çããŠããã


