为什么代码仅将最后一个日期返回给OBS“文本”?

问题描述 投票:0回答:1

我正在尝试更改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']

仅显示相同的日期,但显示不同的事件...

python-3.x google-calendar-api obs
1个回答
0
投票

哇,几分钟后,我自己找到了解决方案...我添加了:

mystart = (event['start']['dateTime'])
stime = dt.strftime(dtparse(mystart), format=tmfmt)

就在之前:

text = stime + "\n" + event['summary']

现在它可以正常工作了:)

© www.soinside.com 2019 - 2024. All rights reserved.