Skip to content

Commit 5501f6b

Browse files
authored
Merge pull request #27 from cloudnativedaysjp/feature/cicd-base
CIのベースを作成
2 parents 645a5b0 + fd10868 commit 5501f6b

File tree

16 files changed

+1112
-60
lines changed

16 files changed

+1112
-60
lines changed

.github/workflows/ci.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: ci
2+
3+
on:
4+
push:
5+
branches: "*"
6+
pull_request:
7+
branches: [master]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
strategy:
13+
fail-fast: false
14+
matrix:
15+
python-version: ["3.11"]
16+
17+
steps:
18+
- uses: actions/checkout@v2
19+
- name: Set up Python ${{ matrix.python-version }}
20+
uses: actions/setup-python@v2
21+
with:
22+
python-version: ${{ matrix.python-version }}
23+
- name: Install poetry
24+
run: |
25+
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python -
26+
echo "$HOME/.poetry/bin" >> $GITHUB_PATH
27+
- name: Poetry Version
28+
run: |
29+
ls -la
30+
poetry --version
31+
- name: Poetry Install Dependencies
32+
run: |
33+
poetry install --no-interaction
34+
- name: Test with pytest
35+
run: |
36+
poetry run pytest
37+
- name: Lint with flake8
38+
run: |
39+
poetry run flake8 --show-source --exit-zero --statistics --config setup.cfg

cndctl/Dreamkast.py

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
import logging
2-
3-
logger = logging.getLogger(__name__)
41
import datetime
52
import json
3+
import logging
64
import os
75
import sys
86

@@ -11,6 +9,8 @@
119

1210
from .Cli import Cli
1311

12+
logger = logging.getLogger(__name__)
13+
1414

1515
class Dreamkast:
1616
def __init__(
@@ -88,15 +88,15 @@ def update(self):
8888
def talks(self):
8989
logger.debug("dreamkast_update()")
9090

91-
def put_upload_url(talkid, upload_url, token):
91+
def put_upload_url(self, talkid, upload_url, token):
9292
req_url = "https://event.cloudnativedays.jp/api/v1/talks/{}/video_registration".format(
9393
talkid
9494
)
9595
headers = {"Authorization": "Bearer {}".format(token)}
9696
data = {"url": ""}
9797
data["url"] = upload_url
9898

99-
res = requests.put(req_url, headers=headers, data=json.dumps(data))
99+
requests.put(req_url, headers=headers, data=json.dumps(data))
100100

101101
def set_video_registration(self, talkid: int, video_drop_url: str) -> bool:
102102
"""talkごとのアップロードURLをセットします
@@ -133,7 +133,7 @@ def __request_dk_api(
133133
dict: レスポンスボディを返します
134134
"""
135135
if not self.__check_dk_env(env_file_path=".dk.env"):
136-
logging.error(f"failed check env file. Please type 'dk update'")
136+
logging.error("failed check env file. Please type 'dk update'")
137137
return {}
138138

139139
token = self.__read_token(env_file_path=".dk.env")
@@ -177,12 +177,14 @@ def get_track_talks(self, track_name: str, event_date: str) -> list:
177177
talks = self.get_talks_in_track_and_event_date(track_name, event_date)
178178
for talk in talks:
179179
talk["start_at"] = datetime.datetime.fromisoformat(
180-
talk["actualStartTime"]).time()
180+
talk["actualStartTime"]
181+
).time()
181182
talk["end_at"] = datetime.datetime.fromisoformat(
182-
talk["actualEndTime"]).time()
183+
talk["actualEndTime"]
184+
).time()
183185
talk["duration"] = datetime.datetime.fromisoformat(
184-
talk["actualEndTime"]) - datetime.datetime.fromisoformat(
185-
talk["actualStartTime"])
186+
talk["actualEndTime"]
187+
) - datetime.datetime.fromisoformat(talk["actualStartTime"])
186188

187189
return sorted(talks, key=lambda x: x["start_at"])
188190

@@ -202,7 +204,7 @@ def get_track_talks_cmd(self, track_name: str, event_date: str) -> None:
202204

203205
def onair_next_cmd(self, track_name: str, event_date: str):
204206
if event_date == "":
205-
event_date = datetime.datetime.now().strftime('%Y-%m-%d')
207+
event_date = datetime.datetime.now().strftime("%Y-%m-%d")
206208

207209
if self.onair_next(track_name, event_date):
208210
sys.exit(0)
@@ -211,11 +213,15 @@ def onair_next_cmd(self, track_name: str, event_date: str):
211213

212214
def onair_next(self, track_name: str, event_date: str):
213215
if event_date == "":
214-
event_date = datetime.datetime.now().strftime('%Y-%m-%d')
216+
event_date = datetime.datetime.now().strftime("%Y-%m-%d")
215217

216218
talks = self.get_talks_in_track_and_event_date(track_name, event_date)
217219
if not talks:
218-
logging.error("Could not get Talks. Request config: DATE='%s', TRACK='%s'", event_date, track_name)
220+
logging.error(
221+
"Could not get Talks. Request config: DATE='%s', TRACK='%s'",
222+
event_date,
223+
track_name,
224+
)
219225
sys.exit()
220226

221227
for talk in talks:
@@ -234,7 +240,9 @@ def onair_next(self, track_name: str, event_date: str):
234240
current_onair_talk_id = self.get_current_onair_talk(track_id)["id"]
235241
# 現在OnAirなTalkが存在しない
236242
if current_onair_talk_id == 0:
237-
logging.error("There is no on-air talk. Please make a talk on-air and then execute it.")
243+
logging.error(
244+
"There is no on-air talk. Please make a talk on-air and then execute it."
245+
)
238246
return False
239247

240248
sorted_talks = sorted(talks, key=lambda x: x["start_at"])
@@ -246,7 +254,10 @@ def onair_next(self, track_name: str, event_date: str):
246254
return True
247255

248256
# OnAirなTalkは存在するが対象の event_date と track に存在しない
249-
logging.warning("There is no OnAir Talk for the specified `event_date` and `track` combination. The currently OnAir Talks are: %s", self.get_talk(current_onair_talk_id))
257+
logging.warning(
258+
"There is no OnAir Talk for the specified `event_date` and `track` combination. The currently OnAir Talks are: %s",
259+
self.get_talk(current_onair_talk_id),
260+
)
250261
return False
251262

252263
def onair(self, dk_talk_id):
@@ -274,7 +285,7 @@ def onair(self, dk_talk_id):
274285
path = f"/talks/{dk_talk_id}"
275286
data = {"on_air": True}
276287

277-
print(self.__request_dk_api(path, "put", data)["message"])
288+
print(self.__request_dk_api(path, "put", data))
278289

279290
def get_track(self):
280291
logger.debug("get_track_name()")
@@ -432,7 +443,7 @@ def get_talks_in_track_and_event_date(
432443
day_id_this_day = 0
433444
for day_id in day_ids:
434445
if day_id["date"] == event_date:
435-
day_id_this_day = day_id['id']
446+
day_id_this_day = day_id["id"]
436447

437448
talks = self.get_talks(day_id_this_day)
438449
tracks = self.get_track()
@@ -441,9 +452,7 @@ def get_talks_in_track_and_event_date(
441452
if track["name"] == track_name:
442453
track_id = track["id"]
443454

444-
talks_for_track = [
445-
talk for talk in talks if talk["trackId"] == track_id
446-
]
455+
talks_for_track = [talk for talk in talks if talk["trackId"] == track_id]
447456
return talks_for_track
448457

449458
def get_track_id(self, want_track_name: str, tracks: list) -> int:

cndctl/MediaSource.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import logging
2-
3-
logger = logging.getLogger(__name__)
41
import datetime
2+
import logging
53

64
import simpleobsws
75

6+
logger = logging.getLogger(__name__)
7+
88

99
class MediaSource:
1010
def __init__(self, ws) -> None:

cndctl/Nextcloud.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
import logging
2-
3-
logger = logging.getLogger(__name__)
4-
51
import csv
62
import json
3+
import logging
74
import os
85
import sys
96

107
import requests
118
import urllib3
9+
from nextcloud import NextCloud
10+
11+
logger = logging.getLogger(__name__)
12+
1213

1314
urllib3.disable_warnings()
14-
from nextcloud import NextCloud
1515

1616

1717
class Nextcloud:
@@ -41,7 +41,7 @@ def put_upload_url(talkid, upload_url, token):
4141
data = {"url": ""}
4242
data["url"] = upload_url
4343

44-
res = requests.put(req_url, headers=headers, data=json.dumps(data))
44+
requests.put(req_url, headers=headers, data=json.dumps(data))
4545

4646
def dirsync(self):
4747
print("uploader dirsync command can not use!")
@@ -67,7 +67,7 @@ def dirsync(self):
6767
session_kwargs={"verify": False},
6868
) as nxc:
6969
nxc_ping = nxc.get_connection_issues()
70-
if not nxc_ping is None:
70+
if nxc_ping is not None:
7171
logging.error("Nextcloud connection failed! msg: %s", nxc_ping)
7272
sys.exit()
7373

cndctl/Operator.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import datetime
22
import sys
33

4+
45
class Operator:
56
def __init__(self, dreamkast, loop, scene):
67
self.dk = dreamkast
@@ -9,7 +10,7 @@ def __init__(self, dreamkast, loop, scene):
910

1011
def next_cmd(self, track_name: str, event_date: str):
1112
if event_date == "":
12-
event_date = datetime.datetime.now().strftime('%Y-%m-%d')
13+
event_date = datetime.datetime.now().strftime("%Y-%m-%d")
1314

1415
print("\n||| CURRENT SWICHER SCENES |||")
1516
self.loop.run_until_complete(self.scene.get())
@@ -19,20 +20,20 @@ def next_cmd(self, track_name: str, event_date: str):
1920

2021
print("||| CURRENT TRACK TALKS |||")
2122
self.dk.get_track_talks_cmd(track_name, event_date)
22-
23+
2324
print("\n")
2425
if not self.dk.onair_next(track_name, event_date):
2526
sys.exit(1)
2627

2728
def now_cmd(self, track_name: str, event_date: str):
2829
if event_date == "":
29-
event_date = datetime.datetime.now().strftime('%Y-%m-%d')
30+
event_date = datetime.datetime.now().strftime("%Y-%m-%d")
3031

3132
tracks = self.dk.get_track()
3233
for track in tracks:
33-
if track['name'] == track_name:
34-
track_id = track['id']
34+
if track["name"] == track_name:
35+
track_id = track["id"]
3536
current_talk = self.dk.get_current_onair_talk(track_id)
3637
current_scene = self.loop.run_until_complete(self.scene.current())
3738
print(f"talk : {current_talk['id']}_{current_talk['title']}")
38-
print(f"scene : {current_scene}")
39+
print(f"scene : {current_scene}")

cndctl/Scene.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import logging
2-
3-
logger = logging.getLogger(__name__)
42
import sys
53

64
import simpleobsws
75

86
from .Cli import Cli
97

8+
logger = logging.getLogger(__name__)
9+
1010

1111
class Scene:
1212
def __init__(self, ws) -> None:
@@ -46,7 +46,7 @@ async def current(self):
4646
logger.error("Request error. Request:%s Response:%s", request, ret)
4747
sys.exit()
4848

49-
return ret.responseData['currentProgramSceneName']
49+
return ret.responseData["currentProgramSceneName"]
5050

5151
# cndctl scene next
5252
async def next(self):

cndctl/Switcher.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import datetime
12
import json
23
import logging
34

@@ -6,10 +7,7 @@
67
from .Dreamkast import Dreamkast
78

89
logger = logging.getLogger(__name__)
9-
import datetime
10-
import logging
1110

12-
logger = logging.getLogger(__name__)
1311
logging.basicConfig(
1412
level=logging.DEBUG, format="%(asctime)s [%(levelname)s] [%(name)s] %(message)s"
1513
)

cndctl/__init__.py

Lines changed: 0 additions & 1 deletion
This file was deleted.

cndctl/__main__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
if __name__ == '__main__':
1+
if __name__ == "__main__":
22
from .cndctl import run
33

4-
run()
4+
run()

cndctl/cndctl.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
1-
import logging
2-
3-
logger = logging.getLogger(__name__)
4-
logging.basicConfig(
5-
level=logging.WARNING, format="%(asctime)s [%(levelname)s] %(message)s"
6-
)
7-
81
import argparse
92
import asyncio
103
import json
4+
import logging
115
import os
126
import sys
137

@@ -16,10 +10,15 @@
1610
from .Dreamkast import Dreamkast
1711
from .MediaSource import MediaSource
1812
from .Nextcloud import Nextcloud
13+
from .Operator import Operator
1914
from .Scene import Scene
2015
from .Source import Source
2116
from .Switcher import Switcher
22-
from .Operator import Operator
17+
18+
logger = logging.getLogger(__name__)
19+
logging.basicConfig(
20+
level=logging.WARNING, format="%(asctime)s [%(levelname)s] %(message)s"
21+
)
2322

2423
parser = argparse.ArgumentParser(description="obs remote controll cli tool")
2524
parser.add_argument("object")
@@ -47,7 +46,7 @@
4746
OBS_HOST = ""
4847
OBS_PORT = ""
4948
OBS_PASS = ""
50-
JSON_FILE_PATH =""
49+
JSON_FILE_PATH = ""
5150
DK_URL = ""
5251
DK_CLIENT_ID = ""
5352
DK_CLIENT_SECRETS = ""
@@ -306,8 +305,7 @@ def run():
306305
sys.exit()
307306
op.now_cmd(EVENT_TRACK, EVENT_DATE)
308307
sys.exit()
309-
310308

311309
else:
312310
print(f"undefined command: {args}")
313-
sys.exit(1)
311+
sys.exit(1)

0 commit comments

Comments
 (0)