0

我正在尝试更改 OBS 工作室的 phyton 脚本中的代码,以显示来自谷歌日历的即将发生的事件的日期。但是 OBS Studio 的输出仅显示每个事件的相同(最后)日期。脚本日志显示它应该是你......

在努力寻找一种方法将字典项目转换为以我想要显示的方式打印之后,我终于认为我已经让它按照我想要的方式工作了。

我是 python 新手,基本上只是在寻找如何解决我需要更改代码的答案。我花了几天时间才知道 datetime.datetime 以及 strftime 如何协同工作,并且我需要将 Dateutil 升级到更新的版本,以免出现一些我遇到的错误。

无论如何,由于我是编码新手,而且这个脚本的大部分内容都是由其他人编写的,所以我很难看出这个问题出在哪里。它可以在脚本日志中正常工作,但是当我将其发送到 OBS Studio 中的“文本”时,“时间”中的日期对于每个事件都变得相同。

如果有人可以帮助我解决这个问题,我会很高兴。

# 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']

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

4

1 回答 1

0

哇,几分钟后,我自己找到了解决方案……我补充说:

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

就在之前:

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

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

于 2019-09-30T22:06:45.890 回答