From f60aaade7f6264bdd1c97780e8e8c5778438eecf Mon Sep 17 00:00:00 2001 From: wakamezake Date: Sat, 14 Nov 2020 18:04:49 +0900 Subject: [PATCH 1/7] init --- .github/workflows/run_test.yml | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/run_test.yml diff --git a/.github/workflows/run_test.yml b/.github/workflows/run_test.yml new file mode 100644 index 0000000..2a65cb9 --- /dev/null +++ b/.github/workflows/run_test.yml @@ -0,0 +1,36 @@ +name: Run All UnitTest + +on: [push, pull_request] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + max-parallel: 4 + matrix: + python-version: [3.7, 3.8] + + steps: + - uses: actions/checkout@v1 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + - uses: actions/cache@v1 + with: + path: ~/.cache/pip + key: > + ${{ runner.os }}-pip- + ${{ hashFiles('**/requirements.txt') }}- + ${{ hashFiles('**/requirements-test.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt -r requirements-test.txt + - name: Test with pytest + run: | + export PYTHONPATH=./ + pytest --verbose --color=yes \ No newline at end of file From a03d43b0812daf0378ceb7dae050162d9ad85fb2 Mon Sep 17 00:00:00 2001 From: wakamezake Date: Sat, 14 Nov 2020 18:07:30 +0900 Subject: [PATCH 2/7] version up --- .github/workflows/run_test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run_test.yml b/.github/workflows/run_test.yml index 2a65cb9..9288bec 100644 --- a/.github/workflows/run_test.yml +++ b/.github/workflows/run_test.yml @@ -12,9 +12,9 @@ jobs: python-version: [3.7, 3.8] steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - uses: actions/cache@v1 From de41341d84f788d118f69fa2e04a08d2cd5008f2 Mon Sep 17 00:00:00 2001 From: wakamezake Date: Sat, 14 Nov 2020 18:08:41 +0900 Subject: [PATCH 3/7] typo --- .github/workflows/run_test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run_test.yml b/.github/workflows/run_test.yml index 9288bec..e6ebbd8 100644 --- a/.github/workflows/run_test.yml +++ b/.github/workflows/run_test.yml @@ -23,13 +23,13 @@ jobs: key: > ${{ runner.os }}-pip- ${{ hashFiles('**/requirements.txt') }}- - ${{ hashFiles('**/requirements-test.txt') }} + ${{ hashFiles('**/requirements_test.txt') }} restore-keys: | ${{ runner.os }}-pip- - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -r requirements.txt -r requirements-test.txt + pip install -r requirements.txt -r requirements_test.txt - name: Test with pytest run: | export PYTHONPATH=./ From b1b70a4e7684543a27e6027fdff595c9a0ab6c95 Mon Sep 17 00:00:00 2001 From: wakamezake Date: Sun, 15 Nov 2020 10:50:14 +0900 Subject: [PATCH 4/7] delete cache --- .github/workflows/run_test.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/workflows/run_test.yml b/.github/workflows/run_test.yml index e6ebbd8..eb8cf62 100644 --- a/.github/workflows/run_test.yml +++ b/.github/workflows/run_test.yml @@ -17,15 +17,6 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - - uses: actions/cache@v1 - with: - path: ~/.cache/pip - key: > - ${{ runner.os }}-pip- - ${{ hashFiles('**/requirements.txt') }}- - ${{ hashFiles('**/requirements_test.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - name: Install dependencies run: | python -m pip install --upgrade pip From 3027bc057992f903207e4b1facfb92be0f90619c Mon Sep 17 00:00:00 2001 From: wakamezake Date: Sun, 15 Nov 2020 11:29:12 +0900 Subject: [PATCH 5/7] change timezone utc to jst --- pytchat/processors/default/renderer/base.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pytchat/processors/default/renderer/base.py b/pytchat/processors/default/renderer/base.py index d6826c9..3c99951 100644 --- a/pytchat/processors/default/renderer/base.py +++ b/pytchat/processors/default/renderer/base.py @@ -1,4 +1,4 @@ -from datetime import datetime +from datetime import datetime, timedelta, timezone class Author: @@ -90,7 +90,8 @@ class BaseRenderer: self.chat.author.badgeUrl = badge["liveChatAuthorBadgeRenderer"]["customThumbnail"]["thumbnails"][0]["url"] def get_datetime(self, timestamp): - dt = datetime.fromtimestamp(timestamp / 1000000) + jst = timezone(timedelta(hours=9)) + dt = datetime.fromtimestamp(timestamp / 1000000, jst) return dt.strftime('%Y-%m-%d %H:%M:%S') def get_chatobj(self): From 99fcab83c8ef919f44a32a5668785c53b305a602 Mon Sep 17 00:00:00 2001 From: taizan-hokouto <55448286+taizan-hokuto@users.noreply.github.com> Date: Sun, 15 Nov 2020 15:49:39 +0900 Subject: [PATCH 6/7] Revert --- pytchat/processors/default/renderer/base.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pytchat/processors/default/renderer/base.py b/pytchat/processors/default/renderer/base.py index 3c99951..d6826c9 100644 --- a/pytchat/processors/default/renderer/base.py +++ b/pytchat/processors/default/renderer/base.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import datetime class Author: @@ -90,8 +90,7 @@ class BaseRenderer: self.chat.author.badgeUrl = badge["liveChatAuthorBadgeRenderer"]["customThumbnail"]["thumbnails"][0]["url"] def get_datetime(self, timestamp): - jst = timezone(timedelta(hours=9)) - dt = datetime.fromtimestamp(timestamp / 1000000, jst) + dt = datetime.fromtimestamp(timestamp / 1000000) return dt.strftime('%Y-%m-%d %H:%M:%S') def get_chatobj(self): From 8d7874096ebb38828cff3ad8ecc863091235f690 Mon Sep 17 00:00:00 2001 From: taizan-hokouto <55448286+taizan-hokuto@users.noreply.github.com> Date: Sun, 15 Nov 2020 15:59:28 +0900 Subject: [PATCH 7/7] Fix datetime tests --- tests/test_default_processor.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/tests/test_default_processor.py b/tests/test_default_processor.py index 7ed3ec3..c0fc5b9 100644 --- a/tests/test_default_processor.py +++ b/tests/test_default_processor.py @@ -1,8 +1,17 @@ import json +from datetime import datetime from pytchat.parser.live import Parser from pytchat.processors.default.processor import DefaultProcessor +TEST_TIMETSTAMP = 1570678496000000 + + +def get_local_datetime(timestamp): + dt = datetime.fromtimestamp(timestamp / 1000000) + return dt.strftime('%Y-%m-%d %H:%M:%S') + + def test_textmessage(mocker): '''text message''' processor = DefaultProcessor() @@ -20,7 +29,7 @@ def test_textmessage(mocker): assert ret.id == "dummy_id" assert ret.message == "dummy_message" assert ret.timestamp == 1570678496000 - assert ret.datetime == "2019-10-10 12:34:56" + assert ret.datetime == get_local_datetime(TEST_TIMETSTAMP) assert ret.author.name == "author_name" assert ret.author.channelId == "author_channel_id" assert ret.author.channelUrl == "http://www.youtube.com/channel/author_channel_id" @@ -51,7 +60,7 @@ def test_textmessage_replay_member(mocker): assert ret.message == "dummy_message" assert ret.messageEx == ["dummy_message"] assert ret.timestamp == 1570678496000 - assert ret.datetime == "2019-10-10 12:34:56" + assert ret.datetime == get_local_datetime(TEST_TIMETSTAMP) assert ret.elapsedTime == "1:23:45" assert ret.author.name == "author_name" assert ret.author.channelId == "author_channel_id" @@ -83,7 +92,7 @@ def test_superchat(mocker): assert ret.message == "dummy_message" assert ret.messageEx == ["dummy_message"] assert ret.timestamp == 1570678496000 - assert ret.datetime == "2019-10-10 12:34:56" + assert ret.datetime == get_local_datetime(TEST_TIMETSTAMP) assert ret.elapsedTime == "" assert ret.amountValue == 800 assert ret.amountString == "¥800" @@ -125,7 +134,7 @@ def test_supersticker(mocker): assert ret.message == "" assert ret.messageEx == [] assert ret.timestamp == 1570678496000 - assert ret.datetime == "2019-10-10 12:34:56" + assert ret.datetime == get_local_datetime(TEST_TIMETSTAMP) assert ret.elapsedTime == "" assert ret.amountValue == 200 assert ret.amountString == "¥200" @@ -166,7 +175,7 @@ def test_sponsor(mocker): assert ret.message == "新規メンバー" assert ret.messageEx == ["新規メンバー"] assert ret.timestamp == 1570678496000 - assert ret.datetime == "2019-10-10 12:34:56" + assert ret.datetime == get_local_datetime(TEST_TIMETSTAMP) assert ret.elapsedTime == "" assert ret.bgColor == 0 assert ret.author.name == "author_name" @@ -199,7 +208,7 @@ def test_sponsor_legacy(mocker): assert ret.message == "新規メンバー / ようこそ、author_name!" assert ret.messageEx == ["新規メンバー / ようこそ、author_name!"] assert ret.timestamp == 1570678496000 - assert ret.datetime == "2019-10-10 12:34:56" + assert ret.datetime == get_local_datetime(TEST_TIMETSTAMP) assert ret.elapsedTime == "" assert ret.bgColor == 0 assert ret.author.name == "author_name"