Skip to content
This repository has been archived by the owner on Jan 25, 2022. It is now read-only.

Commit

Permalink
Merge branch 'hotfix/cli_handle_live'
Browse files Browse the repository at this point in the history
  • Loading branch information
taizan-hokuto committed Aug 21, 2020
2 parents 78373bf + 6b924a8 commit f9480ea
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 7 deletions.
2 changes: 1 addition & 1 deletion pytchat/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
8 changes: 5 additions & 3 deletions pytchat/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
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
Expand Down Expand Up @@ -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"
Expand All @@ -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()

Expand Down
6 changes: 6 additions & 0 deletions pytchat/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,9 @@ class ReceivedUnknownContinuation(ChatParseException):

class FailedExtractContinuation(ChatDataFinished):
pass


class VideoInfoParseException(Exception):
'''
thrown when failed to parse video info
'''
2 changes: 1 addition & 1 deletion pytchat/tool/extract/extractor.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ def _execute_extract_operations(self):

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:
Expand Down
4 changes: 2 additions & 2 deletions pytchat/tool/videoinfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

headers = config.headers

pattern = re.compile(r"yt\.setConfig\({'PLAYER_CONFIG': ({.*})}\);")
pattern = re.compile(r"'PLAYER_CONFIG': ({.*}}})")

item_channel_id = [
"videoDetails",
Expand Down Expand Up @@ -91,7 +91,7 @@ def _get_page_text(self, video_id):

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"))
Expand Down

0 comments on commit f9480ea

Please sign in to comment.