Terminal giving “Unknown option on the command line: -gf” error with YouTube video streaming script using youtube-dl and mplayer

I have made a bash script where I can stream a YouTube video with youtube-dl and play it with mplayer. I based it on this terminal command:

$ mplayer -ontop -cookies -cookies-file ./cookie.txt $(youtube-dl -gf 34 --cookies ./cookie.txt "https://www.youtube.com/watch?v=<VIDEO ID>")

Found here:

http://curious-developer.blogspot.com/2012/10/how-to-use-youtube-dl-mplayer-to-stream.html

Manually inputting the video resolution and URL options for youtube-dl work fine. However I wanted to make a script that would make input easier so I would not have to remember the entire command every time I wanted to play a video.

The script:

#!/bin/bash
echo "Input YouTube ID (the string that follows 'http://www.youtube.com/watch?v='):"
echo ""
read video_id
echo ""
echo "Input Video Resolution (17=144, 5=240, 18=360, 35=480, 22=720, or 37=1080):"
echo ""
read resolution
first_string='mplayer -ontop -cookies -cookies-file ./cookie.txt $(youtube-dl -gf res    --cookies ./cookie.txt "https://www.youtube.com/watch?v=VIDEO-ID")'
second_string="${first_string/VIDEO-ID/$video_id}"
last_string="${second_string/res/$resolution}"
$last_string

I have gotten the youtube-dl options to work fine with the string replacements I have set up. The problem happens when the Terminal tries to read the options related to youtube-dl giving me the output:

Unknown option on the command line: -gf
Error parsing option on the command line: -gf
MPlayer svn r34540 (Ubuntu), built with gcc-4.6 (C) 2000-2012 MPlayer Team

Removing -gf does not do much to help either, giving me the output:

Unknown option on the command line: --cookies
Error parsing option on the command line: --cookies
MPlayer svn r34540 (Ubuntu), built with gcc-4.6 (C) 2000-2012 MPlayer Team

I'm not sure why manually typing/copy-pasting the command works just fine with -gf and --cookies, but does not work well with a bash script. I am using Elementary OS 0.2 Luna 64 bit (based on Ubuntu 12.04 LTS), with Linux kernel 3.2.057-generic, and Bash 4.2.25. Any insight would be greatly appreciated.

Answers


The problem is with the definition of first_string. Single quotes prevent parameter expansion which will stop the youtube-dl command running in a subshell.

Rather than constructing a string for the shell to execute, it would be a better idea to run the desired command with the correct parameters. Immediately after reading from the prompts:

mplayer -ontop -cookies -cookies-file ./cookie.txt $(youtube-dl -gf "$resolution"    --cookies ./cookie.txt "https://www.youtube.com/watch?v=${video_id}")

Need Your Help

Select Option javascript is not working

javascript html css option

I am trying to implement the Select - Option found here.

logging apache2 to mongodb: apache hook? something out there?

apache logging apache2 hook mongodb

i just found a great blog posting on http://simonwillison.net/2009/Aug/26/logging/ stating the following

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.