|  | @@ -529,51 +529,51 @@ youtube-dl makes the best effort to be a good command-line program, and thus sho
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  From a Python program, you can embed youtube-dl in a more powerful fashion, like this:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    ```python
 | 
	
		
			
				|  |  | -    import youtube_dl
 | 
	
		
			
				|  |  | +```python
 | 
	
		
			
				|  |  | +import youtube_dl
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    ydl_opts = {}
 | 
	
		
			
				|  |  | -    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
 | 
	
		
			
				|  |  | -        ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
 | 
	
		
			
				|  |  | -    ```
 | 
	
		
			
				|  |  | +ydl_opts = {}
 | 
	
		
			
				|  |  | +with youtube_dl.YoutubeDL(ydl_opts) as ydl:
 | 
	
		
			
				|  |  | +    ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  Most likely, you'll want to use various options. For a list of what can be done, have a look at [youtube_dl/YoutubeDL.py](https://github.com/rg3/youtube-dl/blob/master/youtube_dl/YoutubeDL.py#L69). For a start, if you want to intercept youtube-dl's output, set a `logger` object.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  Here's a more complete example of a program that outputs only errors (and a short message after the download is finished), and downloads/converts the video to an mp3 file:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    ```python
 | 
	
		
			
				|  |  | -    import youtube_dl
 | 
	
		
			
				|  |  | +```python
 | 
	
		
			
				|  |  | +import youtube_dl
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    class MyLogger(object):
 | 
	
		
			
				|  |  | -        def debug(self, msg):
 | 
	
		
			
				|  |  | -            pass
 | 
	
		
			
				|  |  | +class MyLogger(object):
 | 
	
		
			
				|  |  | +    def debug(self, msg):
 | 
	
		
			
				|  |  | +        pass
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        def warning(self, msg):
 | 
	
		
			
				|  |  | -            pass
 | 
	
		
			
				|  |  | +    def warning(self, msg):
 | 
	
		
			
				|  |  | +        pass
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        def error(self, msg):
 | 
	
		
			
				|  |  | -            print(msg)
 | 
	
		
			
				|  |  | +    def error(self, msg):
 | 
	
		
			
				|  |  | +        print(msg)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    def my_hook(d):
 | 
	
		
			
				|  |  | -        if d['status'] == 'finished':
 | 
	
		
			
				|  |  | -            print('Done downloading, now converting ...')
 | 
	
		
			
				|  |  | +def my_hook(d):
 | 
	
		
			
				|  |  | +    if d['status'] == 'finished':
 | 
	
		
			
				|  |  | +        print('Done downloading, now converting ...')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    ydl_opts = {
 | 
	
		
			
				|  |  | -        'format': 'bestaudio/best',
 | 
	
		
			
				|  |  | -        'postprocessors': [{
 | 
	
		
			
				|  |  | -            'key': 'FFmpegExtractAudio',
 | 
	
		
			
				|  |  | -            'preferredcodec': 'mp3',
 | 
	
		
			
				|  |  | -            'preferredquality': '192',
 | 
	
		
			
				|  |  | -        }],
 | 
	
		
			
				|  |  | -        'logger': MyLogger(),
 | 
	
		
			
				|  |  | -        'progress_hooks': [my_hook],
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
 | 
	
		
			
				|  |  | -        ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
 | 
	
		
			
				|  |  | -    ```
 | 
	
		
			
				|  |  | +ydl_opts = {
 | 
	
		
			
				|  |  | +    'format': 'bestaudio/best',
 | 
	
		
			
				|  |  | +    'postprocessors': [{
 | 
	
		
			
				|  |  | +        'key': 'FFmpegExtractAudio',
 | 
	
		
			
				|  |  | +        'preferredcodec': 'mp3',
 | 
	
		
			
				|  |  | +        'preferredquality': '192',
 | 
	
		
			
				|  |  | +    }],
 | 
	
		
			
				|  |  | +    'logger': MyLogger(),
 | 
	
		
			
				|  |  | +    'progress_hooks': [my_hook],
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +with youtube_dl.YoutubeDL(ydl_opts) as ydl:
 | 
	
		
			
				|  |  | +    ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # BUGS
 | 
	
		
			
				|  |  |  
 |