Initial import.

This commit is contained in:
Dan Helfman 2021-09-11 09:35:38 -07:00
commit 457fd858e7
1 changed files with 73 additions and 0 deletions

73
novel-stats.py Executable file
View File

@ -0,0 +1,73 @@
#!/usr/bin/python
import os
import string
import sys
CHAPTER_MARKER = '## '
FIRST_CHAPTER_TO_ACT = {
1: 1,
11: 2,
28: 3,
}
DEV_EDITED_CHAPTERS = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 31}
def count_words(line):
count = 0
for word in line.strip().split(' '):
if not word.strip() or word == '*' or word.startswith('#'):
continue
#print('{} '.format(word), end='')
count += 1
#print('-> {}'.format(count))
return count
def main(arguments):
filename = arguments[0]
chapter_number = None
chapter_word_count = 0
act_number = None
act_word_count = 0
total_word_count = 0
dev_edited_word_count = 0
for line in open(filename).readlines():
if line.startswith(CHAPTER_MARKER):
dev_edited = bool(chapter_number in DEV_EDITED_CHAPTERS)
if chapter_number:
print('chapter {}: {} words{}'.format(chapter_number, chapter_word_count, ' (dev edited)' if dev_edited else ''))
chapter_number = int(line[len(CHAPTER_MARKER):])
act_word_count += chapter_word_count
total_word_count += chapter_word_count
if dev_edited:
dev_edited_word_count += chapter_word_count
chapter_word_count = 1 # Start at one, because the chapter number itself counts as a word.
if chapter_number in FIRST_CHAPTER_TO_ACT:
if act_number:
print('act {}: {} words'.format(act_number, act_word_count))
act_number = FIRST_CHAPTER_TO_ACT[chapter_number]
act_word_count = 1
else:
chapter_word_count += count_words(line)
print('chapter {}: {} words'.format(chapter_number, chapter_word_count))
print('act {}: {} words'.format(act_number, act_word_count))
total_word_count += chapter_word_count
print('dev edited: {} words'.format(dev_edited_word_count))
print('total: {} words'.format(total_word_count))
if __name__ == '__main__':
main(sys.argv[1:])