1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- from __future__ import print_function
- import os.path
- from googleapiclient.discovery import build
- from google_auth_oauthlib.flow import InstalledAppFlow
- from google.auth.transport.requests import Request
- from google.oauth2.credentials import Credentials
- from google.oauth2 import service_account
- import argparse
- import requests
- import pprint
- import json
- import calendar
- import time
- import os
- import shutil
- from distutils.util import strtobool
- from pptx import Presentation
- SCOPES = ['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']
- #www.choozmo.com:8168/tmp_pttx/1634388575388378.pptx
- #www.choozmo.com:8168/tmp_img/16344598943505244.jpg
- def parse_pttx_url(fileanme,img_upload_folder,img_url,eng):
- prs = Presentation(fileanme)
- filename = filename[:filename.find('#')]
- imgurl = []
- for slide in prs.slides:
- for shape in slide.shapes:
- with open('mypic.jpg', 'wb') as f:
- f.write(shape.image.blob)
- text = []
- for page, slide in enumerate(prs.slides):
- textNote = slide.notes_slide.notes_text_frame.text
- print(textNote)
- return filename, imgurl, text
|