Merge tag 'cli_handle_live' into develop

v0.1.4
This commit is contained in:
taizan-hokuto
2020-08-21 22:25:48 +09:00
5 changed files with 15 additions and 7 deletions

View File

@@ -2,7 +2,7 @@
pytchat is a lightweight python library to browse youtube livechat without Selenium or BeautifulSoup.
"""
__copyright__ = 'Copyright (C) 2019 taizan-hokuto'
__version__ = '0.1.3'
__version__ = '0.1.4'
__license__ = 'MIT'
__author__ = 'taizan-hokuto'
__author_email__ = '55448286+taizan-hokuto@users.noreply.github.com'

View File

@@ -3,7 +3,7 @@ import os
from pathlib import Path
from pytchat.util.extract_video_id import extract_video_id
from .arguments import Arguments
from .. exceptions import InvalidVideoIdException, NoContents
from .. exceptions import InvalidVideoIdException, NoContents, VideoInfoParseException
from .. processors.html_archiver import HTMLArchiver
from .. tool.extract.extractor import Extractor
from .. tool.videoinfo import VideoInfo
@@ -40,11 +40,11 @@ def main():
if '[' in video_id:
video_id = video_id.replace('[', '').replace(']', '')
try:
video_id = extract_video_id(video_id)
if os.path.exists(Arguments().output):
path = Path(Arguments().output + video_id + '.html')
else:
raise FileNotFoundError
video_id = extract_video_id(video_id)
info = VideoInfo(video_id)
print(f"Extracting...\n"
f" video_id: {video_id}\n"
@@ -63,7 +63,9 @@ def main():
except (TypeError, NoContents) as e:
print(e)
except FileNotFoundError:
print("The specified directory does not exist.:{}".format(Arguments().output ))
print("The specified directory does not exist.:{}".format(Arguments().output))
except VideoInfoParseException:
print("Cannot parse video information.:{}".format(video_id))
return
parser.print_help()

View File

@@ -62,3 +62,9 @@ class ReceivedUnknownContinuation(ChatParseException):
class FailedExtractContinuation(ChatDataFinished):
pass
class VideoInfoParseException(Exception):
'''
thrown when failed to parse video info
'''

View File

@@ -79,7 +79,7 @@ class Extractor:
def extract(self):
if self.duration == 0:
print("video is not archived.")
print("\nCannot extract chat data:\n The specified video has not yet been archived.")
return []
data = self._execute_extract_operations()
if self.processor is None:

View File

@@ -7,7 +7,7 @@ from ..util.extract_video_id import extract_video_id
headers = config.headers
pattern = re.compile(r"yt\.setConfig\({'PLAYER_CONFIG': ({.*})}\);")
pattern = re.compile(r"'PLAYER_CONFIG': ({.*}}})")
item_channel_id = [
"videoDetails",
@@ -91,7 +91,7 @@ class VideoInfo:
def _parse(self, text):
result = re.search(pattern, text)
res = json.loads(result.group(1))
res = json.loads(result.group(1)[:-1])
response = self._get_item(res, item_response)
if response is None:
self._check_video_is_private(res.get("args"))