diff --git a/tests/parser.py b/tests/parser.py
index <HASH>..<HASH> 100644
--- a/tests/parser.py
+++ b/tests/parser.py
@@ -33,6 +33,12 @@ class WebVTTParserTestCase(unittest.TestCase):
             64
         )
 
+    def test_total_length_no_parser(self):
+        self.assertEqual(
+            self.webvtt.total_length,
+            0
+        )
+
     def test_parser_empty_file(self):
         self.assertRaises(
             MalformedFileError,
diff --git a/webvtt/webvtt.py b/webvtt/webvtt.py
index <HASH>..<HASH> 100644
--- a/webvtt/webvtt.py
+++ b/webvtt/webvtt.py
@@ -28,8 +28,8 @@ class WebVTT:
 
     def _set_reader(self, name, format_, parser_class):
         def f(self, file):
-            self.parser = parser_class()
-            return self.parser.read(file)
+            self.parser = parser_class().read(file)
+            return self
 
         f.__name__ = name
         if format_ == 'webvtt':
@@ -51,4 +51,6 @@ class WebVTT:
     @property
     def total_length(self):
         """Returns the total length of the captions."""
+        if not self.captions:
+            return 0
         return int(self.captions[-1].end) - int(self.captions[0].start)
\ No newline at end of file
Total length to return 0 if there are no captions