|  | @@ -5,6 +5,7 @@ import re
 | 
	
		
			
				|  |  |  import time
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  from .common import InfoExtractor
 | 
	
		
			
				|  |  | +from ..compat import compat_kwargs
 | 
	
		
			
				|  |  |  from ..utils import (
 | 
	
		
			
				|  |  |      determine_ext,
 | 
	
		
			
				|  |  |      ExtractorError,
 | 
	
	
		
			
				|  | @@ -75,6 +76,27 @@ class Vbox7IE(InfoExtractor):
 | 
	
		
			
				|  |  |          if mobj:
 | 
	
		
			
				|  |  |              return mobj.group('url')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    # transform_source=None, fatal=True
 | 
	
		
			
				|  |  | +    def _parse_json(self, json_string, video_id, *args, **kwargs):
 | 
	
		
			
				|  |  | +        if '"@context"' in json_string[:30]:
 | 
	
		
			
				|  |  | +            # this is ld+json, or that's the way to bet
 | 
	
		
			
				|  |  | +            transform_source = args[0] if len(args) > 0 else kwargs.get('transform_source')
 | 
	
		
			
				|  |  | +            if not transform_source:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                def fix_chars(src):
 | 
	
		
			
				|  |  | +                    # fix malformed ld+json: replace raw CRLFs with escaped LFs
 | 
	
		
			
				|  |  | +                    return re.sub(
 | 
	
		
			
				|  |  | +                        r'"[^"]+"', lambda m: re.sub(r'\r?\n', r'\\n', m.group(0)), src)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if len(args) > 0:
 | 
	
		
			
				|  |  | +                    args = (fix_chars,) + args[1:]
 | 
	
		
			
				|  |  | +                else:
 | 
	
		
			
				|  |  | +                    kwargs['transform_source'] = fix_chars
 | 
	
		
			
				|  |  | +                    kwargs = compat_kwargs(kwargs)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return super(Vbox7IE, self)._parse_json(
 | 
	
		
			
				|  |  | +            json_string, video_id, *args, **kwargs)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      def _real_extract(self, url):
 | 
	
		
			
				|  |  |          video_id = self._match_id(url)
 | 
	
		
			
				|  |  |          url = 'https://vbox7.com/play:%s' % (video_id,)
 |