Add docs
This commit is contained in:
parent
779d13d291
commit
7e5091e28c
@ -59,6 +59,36 @@ def ProbeCommentFormat(f):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# ReadComments**** protocol
|
||||||
|
#
|
||||||
|
# Input:
|
||||||
|
# f: Input file
|
||||||
|
# fontsize: Default font size
|
||||||
|
#
|
||||||
|
# Output:
|
||||||
|
# yield a tuple:
|
||||||
|
# (timeline, timestamp, no, comment, pos, color, size, height, width)
|
||||||
|
# timeline: The position when the comment is replayed
|
||||||
|
# timestamp: The UNIX timestamp when the comment is submitted
|
||||||
|
# no: A sequence of 1, 2, 3, ..., used for sorting
|
||||||
|
# comment: The content of the comment
|
||||||
|
# pos: 0 for regular moving comment,
|
||||||
|
# 1 for bottom centered comment,
|
||||||
|
# 2 for top centered comment
|
||||||
|
# color: Font color represented in 0xRRGGBB,
|
||||||
|
# e.g. 0xffffff for white
|
||||||
|
# size: Font size
|
||||||
|
# height: The estimated height in pixels
|
||||||
|
# i.e. (comment.count('\n')+1)*size
|
||||||
|
# width: The estimated width in pixels
|
||||||
|
# i.e. CalculateLength(comment)*size
|
||||||
|
#
|
||||||
|
# After implementing ReadComments****, make sure to update ProbeCommentFormat
|
||||||
|
# and CommentFormatMap.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
NiconicoColorMap = {'red': 0xff0000, 'pink': 0xff8080, 'orange': 0xffc000, 'yellow': 0xffff00, 'green': 0x00ff00, 'cyan': 0x00ffff, 'blue': 0x0000ff, 'purple': 0xc000ff, 'black': 0x000000}
|
NiconicoColorMap = {'red': 0xff0000, 'pink': 0xff8080, 'orange': 0xffc000, 'yellow': 0xffff00, 'green': 0x00ff00, 'cyan': 0x00ffff, 'blue': 0x0000ff, 'purple': 0xc000ff, 'black': 0x000000}
|
||||||
|
|
||||||
|
|
||||||
@ -164,6 +194,9 @@ def ReadCommentsSH5V(f, fontsize):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
CommentFormatMap = {None: None, 'Niconico': ReadCommentsNiconico, 'Acfun': ReadCommentsAcfun, 'Bilibili': ReadCommentsBilibili, 'Tudou': ReadCommentsTudou, 'sH5V': ReadCommentsSH5V}
|
||||||
|
|
||||||
|
|
||||||
def ProcessComments(comments, f, width, height, bottomReserved, fontface, fontsize, alpha, lifetime, reduced):
|
def ProcessComments(comments, f, width, height, bottomReserved, fontface, fontsize, alpha, lifetime, reduced):
|
||||||
WriteASSHead(f, width, height, fontface, fontsize, alpha)
|
WriteASSHead(f, width, height, fontface, fontsize, alpha)
|
||||||
rows = [[None]*(height-bottomReserved), [None]*(height-bottomReserved), [None]*(height-bottomReserved)]
|
rows = [[None]*(height-bottomReserved), [None]*(height-bottomReserved), [None]*(height-bottomReserved)]
|
||||||
@ -255,7 +288,7 @@ def WriteComment(f, c, row, width, height, bottomReserved, fontsize, lifetime):
|
|||||||
|
|
||||||
|
|
||||||
def CalculateLength(s):
|
def CalculateLength(s):
|
||||||
return max(map(len, s.split('\n')))
|
return max(map(len, s.split('\n'))) # May not be accurate
|
||||||
|
|
||||||
|
|
||||||
def ConvertTimestamp(timestamp):
|
def ConvertTimestamp(timestamp):
|
||||||
@ -295,7 +328,7 @@ def main():
|
|||||||
comments = []
|
comments = []
|
||||||
for i in args.file:
|
for i in args.file:
|
||||||
with open(i, 'r', encoding='utf-8') as f:
|
with open(i, 'r', encoding='utf-8') as f:
|
||||||
CommentProcesser = {None: None, 'Niconico': ReadCommentsNiconico, 'Acfun': ReadCommentsAcfun, 'Bilibili': ReadCommentsBilibili, 'Tudou': ReadCommentsTudou, 'sH5V': ReadCommentsSH5V}[ProbeCommentFormat(f)]
|
CommentProcesser = CommentFormatMap[ProbeCommentFormat(f)]
|
||||||
if not CommentProcesser:
|
if not CommentProcesser:
|
||||||
raise ValueError(_('Unknown comment file format: %s') % i)
|
raise ValueError(_('Unknown comment file format: %s') % i)
|
||||||
for comment in CommentProcesser(f, args.fontsize):
|
for comment in CommentProcesser(f, args.fontsize):
|
||||||
|
Loading…
Reference in New Issue
Block a user