我正在尝试更改OBS Studio的phyton脚本中的代码,以显示来自Google日历的即将发生的事件的日期。但是,OBS Studio的输出在每个事件上仅显示相同(最后)日期。脚本日志显示它应该是您应该看到的...
[努力寻找一种方法来将字典项目转换为以我想显示的方式打印后,我终于以为我可以按照自己的方式使它工作。
我是python的新手,基本上只是在寻找有关如何解决我需要在代码中进行更改的答案。我花了几天的时间来了解有关datetime.datetime以及strftime可以如何一起工作,并且我需要将Dateutil升级到更新的版本,以免出现一些错误。
无论如何,由于我是编码的新手,并且大多数脚本是由其他人编写的,所以我很难看出问题所在。它可以在脚本日志中正常工作,但是当我将其发送到OBS Studio中的“文本”时,每个事件的“ stime”中的日期都相同。
如果有人可以帮助我解决这个问题,我将非常高兴。
# Time objects using datetime
dt_now = dt.utcnow()
now = dt.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time
#Timeformat
locale.setlocale(locale.LC_TIME, "sv_SE") # swedish
tmfmt = '%d %B, %H:%M '
# Gets events currently happending by setting bounds to events happening within a second of current datetime
events = service.events().list(calendarId=cal_url, timeMin=now, timeMax=(dt_now+datetime.timedelta(7,1)).isoformat() +'Z',
maxResults=max_events, singleEvents=True, orderBy='startTime').execute()
# Logs the events to console
for event in events['items']:
mystart = (event['start']['dateTime'])
stime = dt.strftime(dtparse(mystart), format=tmfmt)
print(stime)
#print(datetime.datetime.utcnow().date())
#print (event['start']['dateTime'])
print(event['summary'])
#print(dt_now("%d %b, %Y"))
# Updates the text for each event
count = 0
stream_event_happening = False
record_event_happening = False
for event in events['items']:
if(count >= max_events):
break
text = stime + "\n" + event['summary']
settings = obs.obs_data_create()
obs.obs_data_set_string(settings, "text", text)
source = obs.obs_get_source_by_name(source_names[count])
obs.obs_source_update(source, settings)
obs.obs_data_release(settings)
obs.obs_source_release(source)
settings2 = obs.obs_data_create()
obs.obs_data_set_string(settings2, "file", "{}/{}.jpg".format(images_path, text))
source2 = obs.obs_get_source_by_name(image_sources[count])
obs.obs_source_update(source2, settings2)
obs.obs_data_release(settings2)
obs.obs_source_release(source2)
count += 1
text = stime +“ \ n” + event ['summary']
仅显示相同的日期,但显示不同的事件...
哇,几分钟后,我自己找到了解决方案...我添加了:
mystart = (event['start']['dateTime'])
stime = dt.strftime(dtparse(mystart), format=tmfmt)
就在之前:
text = stime + "\n" + event['summary']
现在它可以正常工作了:)