65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
# coding: utf-8
|
|
from __future__ import unicode_literals
|
|
import sys, os
|
|
import requests
|
|
import importlib
|
|
|
|
# to run separatly from soffice
|
|
# $ soffice --calc --accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager"
|
|
|
|
sys.path.append("/lib64/libreoffice/program/")
|
|
|
|
from scriptforge import ScriptForge, CreateScriptService
|
|
from unohelper import fileUrlToSystemPath
|
|
|
|
sys.path.insert(0, '{}/{}'.format(os.getcwd(),'Library'))
|
|
ScriptForge(hostname='localhost', port=2002)
|
|
|
|
from gquiz import gquiz
|
|
|
|
ui = CreateScriptService("UI")
|
|
doc = CreateScriptService("Calc")
|
|
bas = CreateScriptService("Basic")
|
|
|
|
q = gquiz()
|
|
q.generateService()
|
|
|
|
def get_file_id_from_link(link):
|
|
# Find the starting index of the file ID
|
|
start_index = -1
|
|
if "/d/" in link:
|
|
start_index = link.index("/d/") + 3
|
|
elif "id=" in link:
|
|
start_index = link.index("id=") + 3
|
|
elif "rs/" in link:
|
|
start_index = link.index("rs/") + 3
|
|
|
|
if start_index != -1:
|
|
# Find the ending index of the file ID
|
|
end_index = link.index("/", start_index)
|
|
if end_index == -1:
|
|
# If there is no trailing "/", use the end of the string
|
|
end_index = len(link)
|
|
|
|
# Extract the file ID
|
|
file_id = link[start_index:end_index]
|
|
return file_id
|
|
else:
|
|
# Return None if no file ID is found
|
|
return None
|
|
|
|
cells = doc.getValue("")
|
|
|
|
for col in range(0, len(cells)):
|
|
for row in range(0, len(cells[0])):
|
|
if(str(cells[col][row]).startswith("https://")):
|
|
print("found the culprit!!")
|
|
url = cells[col][row]
|
|
print(url)
|
|
Id=get_file_id_from_link(url)
|
|
file = q.drive_service.files().get(fileId=Id).execute()
|
|
newCell = "/asset/{newname}".format(newname=file["name"])
|
|
print("{new} <- {old}".format(new=newCell, old=cells[col][row]))
|
|
doc.setValue(doc.Offset("A1",col,row),newCell)
|
|
|