| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | 
from __future__ import print_functionimport os.pathfrom googleapiclient.discovery import buildfrom google_auth_oauthlib.flow import InstalledAppFlowfrom google.auth.transport.requests import Requestfrom google.oauth2.credentials import Credentialsfrom google.oauth2 import service_accountimport argparseimport requestsimport pprintimport jsonimport calendarimport timeimport osimport shutilfrom distutils.util import strtoboolSCOPES = ['https://www.googleapis.com/auth/presentations.readonly',          'https://www.googleapis.com/auth/drive.metadata.readonly']dir_sound = 'mp3_track/'dir_photo = 'photo/'dir_text = 'text_file/'dir_video = 'video_material/'dir_title = 'title/'dir_subtitle = 'subtitle/'dir_anchor = 'anchor_raw/'tmp_video_dir = 'tmp_video/'video_sub_folder = 'ai_anchor_video/'def parse_url(url):    #https://docs.google.com/presentation/d/17jJ3OZWh8WorFcolB_LiTa7xQ3R-xrmFlqJ_EyCj06M/edit#slide=id.p    return url.split('/')[5]def parse_slide_url(slide_url,eng):    PRESENTATION_ID = parse_url(slide_url)    credentials = service_account.Credentials.from_service_account_file('spread2.json')    scoped_credentials = credentials.with_scopes(SCOPES)    creds = credentials    notes_list=[]    sub_title_list=[]    img_list=[]    service = build('slides', 'v1', credentials=creds)        # Call the Slides API    presentation = service.presentations().get(        presentationId=PRESENTATION_ID).execute()    slides = presentation.get('slides')            for i, slide in enumerate(slides):        # Check if the notes exists        print(slide['slideProperties']['notesPage']['pageElements'][1]['shape'].keys())        notes=''        if 'text' in slide['slideProperties']['notesPage']['pageElements'][1]['shape'].keys():            notes = slide['slideProperties']['notesPage']['pageElements'][1]['shape']['text']['textElements'][1]['textRun']['content']        else:            notes = slide['slideProperties']['notesPage']['pageElements'][0]['shape']['text']['textElements'][1]['textRun']['content']        if '[sub_title]' in notes:            sub_title = notes.split('[sub_title]')[1].strip()                          sub_title_list.append(sub_title)            notes = notes.split('[sub_title]')[0].strip()                notes_list.append(notes)                          # Convert the content of the presentation to png        thumbnail = service.presentations().pages().getThumbnail(presentationId=PRESENTATION_ID, pageObjectId=slide['objectId']).execute()             img_list.append(thumbnail['contentUrl'])                # data    slide_content = { "name": presentation['title'], "text_content": notes_list, "image_urls": img_list, "avatar": "7", "client_id": calendar.timegm(time.gmtime()) }    if eng:        slide_content['sub_titles'] = sub_title_list    return slide_content['name'],slide_content['text_content'],slide_content['image_urls']def parse_slide_url(fileanme,img_upload_folder,img_url,eng):        notes_list=[]    sub_title_list=[]    img_list=[]        prs = Presentation(fileanme)    for slide in prs.slides:        notes_slide = slide.notes_slide        text_frame = notes_slide.notes_text_frame        print(text_frame.text)        shapes = slide.shapes        notes_list.append(text_frame.text)        for s in shapes:            img_name = str(time.time()).replace('.','')            image = s.image            image_bytes = image.blob            # ---make up a name for the file, e.g. 'image.jpg'---            image = Image.open(image_bytes)            image= image.convert("RGB")            image.save(img_upload_folder+img_name+'.jpg')            img_list.append(img_url+img_name+'.jpg')            #image_filename = ''            #with open(image_filename, 'wb') as f:            #    f.write(image_bytes)    return filename, notes_list, img_list
 |