pycaption 2.2.2__tar.gz → 2.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. {pycaption-2.2.2/pycaption.egg-info → pycaption-2.2.4}/PKG-INFO +1 -1
  2. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/scc/__init__.py +1 -1
  3. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/scc/constants.py +56 -56
  4. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/scc/specialized_collections.py +5 -6
  5. {pycaption-2.2.2 → pycaption-2.2.4/pycaption.egg-info}/PKG-INFO +1 -1
  6. {pycaption-2.2.2 → pycaption-2.2.4}/setup.py +1 -1
  7. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_scc.py +1 -1
  8. {pycaption-2.2.2 → pycaption-2.2.4}/LICENSE +0 -0
  9. {pycaption-2.2.2 → pycaption-2.2.4}/MANIFEST.in +0 -0
  10. {pycaption-2.2.2 → pycaption-2.2.4}/README.rst +0 -0
  11. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/__init__.py +0 -0
  12. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/base.py +0 -0
  13. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/dfxp/__init__.py +0 -0
  14. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/dfxp/base.py +0 -0
  15. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/dfxp/extras.py +0 -0
  16. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/english.pickle +0 -0
  17. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/exceptions.py +0 -0
  18. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/geometry.py +0 -0
  19. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/microdvd.py +0 -0
  20. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/sami.py +0 -0
  21. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/scc/state_machines.py +0 -0
  22. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/scc/translator.py +0 -0
  23. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/srt.py +0 -0
  24. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/transcript.py +0 -0
  25. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/utils.py +0 -0
  26. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption/webvtt.py +0 -0
  27. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption.egg-info/SOURCES.txt +0 -0
  28. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption.egg-info/dependency_links.txt +0 -0
  29. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption.egg-info/requires.txt +0 -0
  30. {pycaption-2.2.2 → pycaption-2.2.4}/pycaption.egg-info/top_level.txt +0 -0
  31. {pycaption-2.2.2 → pycaption-2.2.4}/setup.cfg +0 -0
  32. {pycaption-2.2.2 → pycaption-2.2.4}/tests/__init__.py +0 -0
  33. {pycaption-2.2.2 → pycaption-2.2.4}/tests/conftest.py +0 -0
  34. {pycaption-2.2.2 → pycaption-2.2.4}/tests/fixtures/__init__.py +0 -0
  35. {pycaption-2.2.2 → pycaption-2.2.4}/tests/fixtures/dfxp.py +0 -0
  36. {pycaption-2.2.2 → pycaption-2.2.4}/tests/fixtures/microdvd.py +0 -0
  37. {pycaption-2.2.2 → pycaption-2.2.4}/tests/fixtures/sami.py +0 -0
  38. {pycaption-2.2.2 → pycaption-2.2.4}/tests/fixtures/scc.py +0 -0
  39. {pycaption-2.2.2 → pycaption-2.2.4}/tests/fixtures/srt.py +0 -0
  40. {pycaption-2.2.2 → pycaption-2.2.4}/tests/fixtures/translated_scc.py +0 -0
  41. {pycaption-2.2.2 → pycaption-2.2.4}/tests/fixtures/webvtt.py +0 -0
  42. {pycaption-2.2.2 → pycaption-2.2.4}/tests/mixins.py +0 -0
  43. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_base.py +0 -0
  44. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_dfxp.py +0 -0
  45. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_dfxp_conversion.py +0 -0
  46. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_dfxp_extras.py +0 -0
  47. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_functions.py +0 -0
  48. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_geometry.py +0 -0
  49. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_microdvd.py +0 -0
  50. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_microdvd_conversion.py +0 -0
  51. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_sami.py +0 -0
  52. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_sami_conversion.py +0 -0
  53. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_scc_conversion.py +0 -0
  54. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_scc_translator.py +0 -0
  55. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_srt.py +0 -0
  56. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_srt_conversion.py +0 -0
  57. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_webvtt.py +0 -0
  58. {pycaption-2.2.2 → pycaption-2.2.4}/tests/test_webvtt_conversion.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycaption
3
- Version: 2.2.2
3
+ Version: 2.2.4
4
4
  Summary: Closed caption converter
5
5
  Author: Joe Norton
6
6
  Author-email: joey@nortoncrew.com
@@ -339,7 +339,7 @@ class SCCReader(BaseReader):
339
339
  # same as the first.
340
340
  # Also like codes, Special Characters are always doubled up,
341
341
  # with only one member of each pair being displayed.
342
- if word in COMMANDS or _is_pac_command(word) or word in SPECIAL_CHARS:
342
+ if word in COMMANDS or _is_pac_command(word) or word in SPECIAL_CHARS or word in EXTENDED_CHARS:
343
343
  if word == self.last_command:
344
344
  self.last_command = ''
345
345
  return True
@@ -990,60 +990,60 @@ HEADER = 'Scenarist_SCC V1.0'
990
990
  # taken from
991
991
  # http://www.theneitherworld.com/mcpoodle/SCC_TOOLS/DOCS/CC_CHARS.HTML
992
992
  INCONVERTIBLE_TO_ASCII_EXTENDED_CHARS_ASSOCIATION = {
993
- '¡': "!", # inverted exclamation mark
994
- '¤': "C", # currency
995
- '¥': "Y", # yen
996
- '¦': "-", # broken bar
997
- '©': "c", # copyright sign
998
- '«': '"', # left pointing double angle quotation mark
999
- '»': '"', # right pointing double angle quotation mark
1000
- 'À': "A",
1001
- 'Á': "A",
1002
- 'Â': "A",
1003
- 'Ã': "A",
1004
- 'Ä': "A",
1005
- 'Å': "A",
1006
- 'Ç': "C",
1007
- 'È': "E",
1008
- 'É': "E",
1009
- 'Ê': "E",
1010
- 'Ë': "E",
1011
- 'Ì': "I",
1012
- 'Í': "I",
1013
- 'Î': "I",
1014
- 'Ï': "I",
1015
- 'Ò': "O",
1016
- 'Ó': "O",
1017
- 'Ô': ")",
1018
- 'Õ': "O",
1019
- 'Ö': "O",
1020
- 'Ø': "O",
1021
- 'Ù': "U",
1022
- 'Ú': "U",
1023
- 'Û': "U",
1024
- 'Ü': "U",
1025
- 'ß': "s",
1026
- 'ã': "a",
1027
- 'ä': "a",
1028
- 'å': "a",
1029
- 'ë': "e",
1030
- 'ì': "i",
1031
- 'ï': "i",
1032
- 'ò': "o",
1033
- 'õ': "o",
1034
- 'ö': "o",
1035
- 'ø': "o",
1036
- 'ù': "u",
1037
- 'ü': "u",
1038
- '—': "-", # em dash
1039
- '‘': "'",
1040
- '’': "'",
1041
- '“': '"',
1042
- '”': '"',
1043
- '•': ".",
1044
- '℠': "s",
1045
- '┌': "+",
1046
- '┐': "+",
1047
- '└': "+",
1048
- '┘': "+"
993
+ '¡': ["!", "i"], # inverted exclamation mark
994
+ '¤': ["C"], # currency
995
+ '¥': ["Y"], # yen
996
+ '¦': ["-"], # broken bar
997
+ '©': ["c"], # copyright sign
998
+ '«': ['"'], # left pointing double angle quotation mark
999
+ '»': ['"'], # right pointing double angle quotation mark
1000
+ 'À': ["A"],
1001
+ 'Á': ["A"],
1002
+ 'Â': ["A"],
1003
+ 'Ã': ["A"],
1004
+ 'Ä': ["A"],
1005
+ 'Å': ["A"],
1006
+ 'Ç': ["C"],
1007
+ 'È': ["E"],
1008
+ 'É': ["E"],
1009
+ 'Ê': ["E"],
1010
+ 'Ë': ["E"],
1011
+ 'Ì': ["I"],
1012
+ 'Í': ["I"],
1013
+ 'Î': ["I"],
1014
+ 'Ï': ["I"],
1015
+ 'Ò': ["O"],
1016
+ 'Ó': ["O"],
1017
+ 'Ô': [")"],
1018
+ 'Õ': ["O"],
1019
+ 'Ö': ["O"],
1020
+ 'Ø': ["O"],
1021
+ 'Ù': ["U"],
1022
+ 'Ú': ["U"],
1023
+ 'Û': ["U"],
1024
+ 'Ü': ["U"],
1025
+ 'ß': ["s"],
1026
+ 'ã': ["a"],
1027
+ 'ä': ["a"],
1028
+ 'å': ["a"],
1029
+ 'ë': ["e"],
1030
+ 'ì': ["i"],
1031
+ 'ï': ["i"],
1032
+ 'ò': ["o"],
1033
+ 'õ': ["o"],
1034
+ 'ö': ["o"],
1035
+ 'ø': ["o"],
1036
+ 'ù': ["u"],
1037
+ 'ü': ["u"],
1038
+ '—': ["-"], # em dash
1039
+ '‘': ["'"],
1040
+ '’': ["'"],
1041
+ '“': ['"'],
1042
+ '”': ['"'],
1043
+ '•': ["."],
1044
+ '℠': ["s"],
1045
+ '┌': ["+"],
1046
+ '┐': ["+"],
1047
+ '└': ["+"],
1048
+ '┘': ["+"]
1049
1049
  }
@@ -430,18 +430,17 @@ class InstructionNodeCreator:
430
430
  )
431
431
  if is_text_node:
432
432
  try:
433
- ascii_char = unicodedata.normalize('NFD', accented_character) \
433
+ ascii_char = [
434
+ unicodedata.normalize('NFD', accented_character)
434
435
  .encode('ascii', 'strict').decode("utf-8")
435
- except (UnicodeEncodeError, UnicodeDecodeError):
436
- ascii_char = INCONVERTIBLE_TO_ASCII_EXTENDED_CHARS_ASSOCIATION[
437
- accented_character
438
436
  ]
437
+ except (UnicodeEncodeError, UnicodeDecodeError):
438
+ ascii_char = INCONVERTIBLE_TO_ASCII_EXTENDED_CHARS_ASSOCIATION.get(accented_character)
439
439
 
440
- if ascii_char and self._collection[-1].text[-1] == ascii_char:
440
+ if ascii_char and self._collection[-1].text[-1] in ascii_char:
441
441
  self._collection[-1].text = self._collection[-1].text[:-1]
442
442
 
443
443
 
444
-
445
444
  def _get_layout_from_tuple(position_tuple):
446
445
  """Create a Layout object from the positioning information given
447
446
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycaption
3
- Version: 2.2.2
3
+ Version: 2.2.4
4
4
  Summary: Closed caption converter
5
5
  Author: Joe Norton
6
6
  Author-email: joey@nortoncrew.com
@@ -24,7 +24,7 @@ transcript_dependencies = [
24
24
 
25
25
  setup(
26
26
  name='pycaption',
27
- version='2.2.2',
27
+ version='2.2.4',
28
28
  description='Closed caption converter',
29
29
  long_description=open(README_PATH).read(),
30
30
  author='Joe Norton',
@@ -279,7 +279,7 @@ class TestCoverageOnly:
279
279
  'WE SERVE.',
280
280
  '®°½',
281
281
  'ABû',
282
- 'ÁÁÉÓ¡',
282
+ 'ÁÉÓ¡',
283
283
  "WHERE YOU'RE STANDING NOW,",
284
284
  "LOOKING OUT THERE, THAT'S AL",
285
285
  'THE CROWD.',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes