Simple Youtube Downloader

By FordLawnmower on Jan 05, 2012

The idea for this script came from mentok.
mentok , Thank You for this idea and your help testing.

Description:
Simple Youtube Downloader will download a youtube video based on the link that you enter and place it in the folder you select. The default download location is $mircdirYoutube. //run $mircdirYoutube to see them.

Options:
You can select Audio Only, Video Only or Both.
Audio only will download the video, convert it to audio and remove the video file.
Video only will download the video file.
Both will make two files, one for audio and one for video.
Image
After clicking download you will have a second set of options.
Medium mpg seems to be the fastest to me but select whatever you like.
This should have no effect on the audio track. Just select one of the lower ones if you are doing audio only.
Again, medium mpg seems to download the fastest.
Image

After the selection you will see the download progress for the video.
Image

If you have selected Audio only or Both you will now see the Audio Quality selection screen.
160 will probably give you the best balance of size and quality but feel free to adjust this to your liking.
This setting will have on effect on the downloaded video, just the audio.
Image

You will now see the final conversion dialog.
Image

How it works:

  • Downloads the video page using a vbscript through com.
  • Reads the video page into &binvar and parses the title and video links.
  • Downloads the video from youtube using wget : http://gnuwin32.sourceforge.net/packages/wget.htm
  • Converts the video to audio using ffmpeg: http://ffmpeg.org/
    Note This script will download all the needed files on it's own. There is no need to download anything to use this.
    Special thanks to all the folks who have contributed code to both the ffmpeg and wget projects.
    Two awesome command line apps.

If you have any issues running this code, try this version: http://pastebin.com/06CrHNsm
Thanks to Abcdefmonkey & Fuzionx for their input on this edit.

;Youtube Simple Downloader by Ford_Lawnmower irc.Geekshed.net #Script-Help
menu channel,status,menubar {
  Youtube Simple Downloader: dialog $iif(!$dialog(YTSimpleDownloader),-m YTSimpleDownloader,-v) YTSimpleDownloader
}
alias -l DSleep {
  return $WshRunitSilent(choice /c "10" /n /d "1" /t $1)
}
alias -l WshRunitSilent {
  var %comname $+(WshRunSilent,$ticks)
  .comopen %comname WScript.Shell
  if ($com(%comname)) {
    if (!$com(%comname,run,3,bstr,$1-,uint,0,string,true)) {
      echo -st *error* WshRunSilent $com(%comname).error
      var %return 0
    }
    else var %return 1
    .comclose %comname
    return %return
  }
}
;VideoToAudio2 ffmpeg.exeDirectory;infile;outfile;cleanup command here
alias -l VideoToAudio2 {
  tokenize 59 $1-
  var %start $ctime, %dname $replace($+(YTVideoToAudio,$mkfn($3)),$chr(32),_), %cleanup $4, %temp $+($wshgetvar(temp),\,$nopath($3))
  var %quality $input(Please select an audio quality,omr,Quality Settings Needed,160,64,128,160,192,224,256,320)
  if (%quality) {
    run $1 -i $qt($2) -vstats_file $+($mircdirffmpeg\,%dname,.txt) -vn -ar 44100 -ac 2 -ab $+(%quality,k) -f mp3 $qt($3)
    if ($exists($qt($3))) .remove $qt($3) 
  }
}
;VideoToAudio ffmpeg.exeDirectory;infile;outfile;cleanup command here
alias -l VideoToAudio {
  tokenize 59 $1-
  var %start $ctime, %dname $replace($+(YTVideoToAudio,$mkfn($3)),$chr(32),_), %cleanup $4, %temp $+($wshgetvar(temp),\,$nopath($3))
  var %quality $input(Please select an audio quality,omr,Quality Settings Needed,160,64,128,160,192,224,256,320)
  if (%quality) {
    dialog $iif($dialog(%dname),-v,-md) %dname YTVideoToAudio
    dcheck did -a %dname 8 $nopath($2) 
    dcheck did -a %dname 9 $nopath($3)
    dcheck did -a %dname 11 Conversion in progress......
    ShowProgress %dname
    .timer $+ %dname 0 5 ShowProgress %dname    
    if ($exists($qt($3))) .remove $qt($3) 
    if ($WshRunitSilent($1 -i $qt($2) -vn -ar 44100 -ac 2 -ab $+(%quality,k) -f mp3 $qt(%temp))) {
      dcheck did -a %dname 11 Conversion Complete in $duration($calc($ctime - %start))
      .timer $+ %dname off
      .copy $qt(%temp) $qt($3)
      .remove $qt(%temp)
      %cleanup
    }
    else dcheck did -a %dname Conversion Failed!
  }
}
alias -l ShowProgress {
  var %count $iif($calc($gettok($nopath($did($1,1)),1,46) + 1) > 8,1,$calc($gettok($nopath($did($1,1)),1,46) + 1))
  dcheck did -g $1 1-7 $+(FFmpeg\,%count,.ico)
  dcheck did -a $1 11 Conversion in progress $str(.,%count)
  return
}
alias -l dcheck {
  if ($dialog($3)) $1-
}
dialog -l YTVideoToAudio {
  title "Video to Audio Conversion"
  size -1 -1 132 56
  option dbu
  icon 1, 2 24 17 19
  icon 2, 20 24 17 19
  icon 3, 38 24 17 19
  icon 4, 56 24 17 19
  icon 5, 74 24 17 19
  icon 6, 92 24 17 19
  icon 7, 110 24 17 19
  text "", 8, 0 1 132 8, center
  text "", 9, -2 16 134 8, center
  text "TO", 10, 51 8 25 8, center
  text "", 11, 0 46 132 8, center
  text "", 12, 0 0 0 0
}
dialog -l YTSimpleDownloader {
  title "Youtube Downloader"
  size -1 -1 202 51
  option dbu
  text "Link:", 1, 0 4 25 8, right
  text "Save to:", 2, 0 15 25 8, right
  edit "", 3, 26 3 175 10
  edit "", 4, 26 14 151 10
  button "Browse", 5, 179 14 22 10
  radio "Audio Only", 6, 8 38 42 10
  radio "Video Only", 7, 54 38 38 10
  button "Download", 8, 163 37 37 12
  text "", 9, 0 27 201 8
  radio "Both", 10, 97 38 31 10
}
on *:dialog:YTSimpleDownloader:Sclick:5,8: {
  getwget
  if ($did == 5) did -ra $dname 4 $sdir($mircdir,Select a Directory)
  else {
    tokenize 32 $did(3) $did(4) $iif($did(6).state,Audio,$iif($did(8).state,Both,Video)) $did(4)
    if ($regex($1,/v=([\S]{11})/Si)) { 
      YTGetDownloadLinks $regml(1) $regml(1)
    }
  }
}
;$bintween by Ford_Lawnmower Syntax = $bintween(&binvar,starttext,endtext,matchnum)
alias -l bintween {
  var %count = 1, %mark = 0, %mark2 = 0
  while (%count <= $4) {
    if ($bfind($1, %mark2, $2).text) {
      %mark = $calc($bfind($1, %mark2, $2).text + $len($2))
      if ($bfind($1, %mark, $3).text) {
        %mark2 = $bfind($1, %mark, $3).text
      }
      else { return 0 } 
    }
    else { return 0 }
    inc %count
  }
  return $bvar($1, $iif(%mark > 0,%mark,1), $calc(%mark2 - %mark)).text
}
alias -l DecodeUri return $replace($regsubex($1-,/\%([0-9a-f]{2})/gi,$chr($base(\t,16,10))),\u0026,&)
alias -l WshVbscriptDownload {
  var %comname $+(WshVbscriptDownload,$ticks,$r(1,1000))
  .comopen %comname MSScriptControl.ScriptControl
  if ($com(%comname)) {
    var %Success $com(%comname,language,4,string,vbscript)
    inc %Success $Execute(%comname,Set MicrosoftXmlhttp = CreateObject("Microsoft.Xmlhttp"))
    inc %Success $Execute(%comname,$+(MicrosoftXmlhttp.Open "GET",$chr(44),$qt($1),$chr(44),False))
    inc %Success $Execute(%comname,MicrosoftXmlhttp.Send)
    if ($evaluate(%comname,MicrosoftXmlhttp.Status)) {
      inc %Success $Execute(%comname,set AdodbStream = CreateObject("Adodb.Stream"))
      inc %Success $Execute(%comname,AdodbStream.type = 1)
      inc %Success $Execute(%comname,AdodbStream.open)
      inc %Success $Execute(%comname,AdodbStream.write MicrosoftXmlhttp.responseBody)
      inc %Success $Execute(%comname,AdodbStream.savetofile $+($qt($2),$chr(44),2))
      inc %Success $Execute(%comname,AdodbStream.close)
      if (%Success != 10) echo -st *error* WshVbscriptDownload Download Failed!
      else {
        $iif(!$isid,echo 09 -sat Download $1 Complete)
        var %return 1
      }
    }
    .comclose %comname
    return %return
  }
}
alias -l Execute return $com($1,executestatement,3,bstr,$2-)
alias -l Evaluate {
  noop $com($1,eval,3,bstr,$2-)
  return $com($1).result
}
On *:start: {
  if (!$exists(wget\wget.exe)) getwget
}
On *:dialog:YT_GetDownloadLinks~*:close:*: if ($hget($dname)) hfree $dname
On *:dialog:YT_GetDownloadLinks~*:Sclick:1-16: {
  $iif(!$isdir(Youtube),mkdir Youtube)
  $iif(!$isdir(wget),mkdir wget)
  if ((!$exists(wget\wget.exe)) || (!$exists($ffmpeg)))  {
    echo -gat I am missing some of the files needed to download your video.
    echo -gat Please try your download after I gather the missing files.
    getwget
  }
  else {
    var %fn $mkfn($did(18)), %ext $gettok($did($did),1,32), %id $gettok($dname,2,126), %idext $+(%id,%ext), %type $gettok($did($did),1,32)
    var %dir $did(19)
    var %selection $did(20)
    run -n wget\wget.exe -bo $qt($+($wshgetvar(temp),\,%id,%ext)) -O $qt($+(%dir,%fn,.,%type)) $qt($hget($dname,$did))
    dialog $iif($dialog(%idext),-v,-md) %idext YTDownloadProgress
    did -a %idext 1 %fn
    did -a %idext 10 %selection
    did -a %idext 11 %dir
    did -a %idext 12 %ext
    .timer 1 2 YTProgressCheck %idext
    dialog -x $dname
  }
}
alias -l YTProgressCheck {
  var %file $+($wshgetvar(temp),\,$1), %dname $1, %data $remove($read(%file,$calc($lines(%file) - 1)),..)
  if ($dialog(%dname)) {
    tokenize 32 %data
    if (!$5) {
      did -a %dname 2 $bytes($calc($remove($1,k) * 1000)).suf
      did -a %dname 3 $2
      did -a %dname 4 $3
      did -a %dname 5 $4
      .timer $+ %dname 1 1 YTProgressCheck %dname
    }
    else {
      did -a %dname 2,3,5 Complete
      did -a %dname 4 $3-4
      .remove $qt(%file)
      if ($did(%dname,10) != Video) {
        var %sel $did(%dname,10), %dir $did(%dname,11), %ext $did(%dname,12), %fn $did(%dname,1)
        var %command $iif($did(%dname,10) == Audio,.remove $qt($+(%dir,%fn,.,%ext)))
        var %fn2 $iif($exists($qt($+(%dir,$did(%dname,1),.mp3))), $input($did(%dname,1) already exists.$&
          $crlf Please enter a new file name.,eoq,FileName Conflict,$did(%dname,1),),$did(%dname,1))
        if (%fn) VideoToAudio $+($qt($ffmpeg),;,$qt($+(%dir,%fn,.,%ext)),;,$qt($+(%dir,%fn2,.,mp3)),;,%command)
      }
      dialog -x %dname
    }
  }
}
alias FixWget {
  if (!$isdir(wget)) {
    if ($input(You must download some files to continue. $crlf Dowload them now ?,yq,Youtube Simple DownloaderMissing Files,,)) {
      mkdir wget
    }
    else halt
  }
  DownloadTransfer http://mircforum.net/wget/wget.exe wget wget.exe
  DownloadTransfer http://mircforum.net/wget/libssl32 wget libssl32.dll
  DownloadTransfer http://mircforum.net/wget/libintl3 wget libintl3.dll
  DownloadTransfer http://mircforum.net/wget/libiconv2 wget libiconv2.dll
  DownloadTransfer http://mircforum.net/wget/libeay32 wget libeay32.dll
  FixFFmpeg
}
alias FixFFmpeg {
  $iif(!$isdir(FFmpeg),mkdir FFmpeg)
  DownloadTransfer http://mircforum.net/ffmpeg/ffmpeg.exe ffmpeg ffmpeg.exe
  var %count 1
  while (%count <= 8) {
    DownloadTransfer $+(http://mircforum.net/ffmpeg/,%count,.ico) ffmpeg $+(%count,.ico)
    inc %count
  }
}
alias -l GetWget {
  if (!$isdir(wget)) {
    if ($input(You must download some files to continue. $crlf Dowload them now ?,yq,Youtube Simple DownloaderMissing Files,,)) {
      mkdir wget
    }
    else halt
  }
  if (!$exists(wget/wget.exe)) DownloadTransfer http://mircforum.net/wget/wget.exe wget.exe wget
  if (!$exists(wget/libssl32.dll)) DownloadTransfer http://mircforum.net/wget/libssl32 wget libssl32.dll
  if (!$exists(wget/libintl3.dll)) DownloadTransfer http://mircforum.net/wget/libintl3 wget libintl3.dll
  if (!$exists(wget/libiconv2.dll)) DownloadTransfer http://mircforum.net/wget/libiconv2 wget libiconv2.dll
  if (!$exists(wget/libeay32.dll)) DownloadTransfer http://mircforum.net/wget/libeay32 wget libeay32.dll
  GetFFmpeg
}
alias -l GetDownload {
  if ($isfile($qt($+($3,\,$4)))) { .remove $qt($+($3,\,$4)) }
  var %sockname $+(GetDownload,$ticks,$r(1,$ticks))
  if (!$isdir($qt($3))) { mkdir $qt($3) }
  sockopen %sockname $1 80
  sockmark %sockname $1-
}
On *:sockopen:GetDownload*:{
  echo 04 -ga *Downloading $gettok($sock($sockname).mark,4,32) to $+($mircdir,$gettok($sock($sockname).mark,3,32),.......)
  sockwrite -nt $sockname GET $gettok($sock($sockname).mark,2,32) HTTP/1.0
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname Host: $gettok($sock($sockname).mark,1,32) $+ $crlf $+ $crlf
}
On *:sockread:GetDownload*:{
  if (!$gettok($sock($sockname).mark,5,32)) {
    var %GetDownload | sockread %GetDownload
    if (!%GetDownload) { sockmark $sockname $addtok($sock($sockname).mark,1,32) }
  }
  else {
    sockread &GetDownload
    bwrite -s $qt($+($gettok($sock($sockname).mark,3,32),\,$gettok($sock($sockname).mark,4,32))) -1 -1 &GetDownload
  }
}
On *:sockclose:GetDownload*: echo 09 -ga *Download of $gettok($sock($sockname).mark,4,32) to $+($mircdir,$gettok($sock($sockname).mark,3,32)) Complete!
alias -l DownloadTransfer {
  var %tempfile $+($wshgetvar(temp),/,$3), %destfile $+($2,/,$3)
  if (!$isdir($2)) mkdir $2
  if ($isfile($qt($+($2,\,$3)))) { .remove $qt($+($2,\,$3)) }
  if ($WshVbscriptDownload($1, %tempfile)) {
    .copy %tempfile %destfile
    .remove %tempfile
    echo 04 -ga Transfer of %destfile complete.
  }
}
alias -l GetFFmpeg {
  $iif(!$isdir(FFmpeg),mkdir FFmpeg)
  if (!$exists($ffmpeg)) DownloadTransfer http://mircforum.net/ffmpeg/ffmpeg.exe ffmpeg ffmpeg.exe
  var %count 1
  while (%count <= 8) {
    if (!$exists($+(ffmpeg/,%count,.ico))) DownloadTransfer $+(http://mircforum.net/ffmpeg/,%count,.ico) ffmpeg $+(%count,.ico)
    inc %count
  }
}
alias -l FFmpeg return $mircdirFFmpeg\ffmpeg.exe
alias -l WshGetVar {
  var %comname $+(WinGetVar,$ticks)
  .comopen %comname Wscript.Shell
  if ($com(%comname)) {
    if (!$com(%comname,ExpandEnvironmentStrings,3,bstr,$+(%,$1,%))) {
      echo -st *error* WinGetVar $com(%comname).error
    }
    var %return $com(%comname).result
    .comclose %comname
    return %return
  }
}
alias -l fix&# { 
  return $regsubex($replace($regsubex($1-,/\&\#([0-9]{1,});/g,$utf8(\t)),&quot;,",&amp;,&,&gt;,>,&lt;,<,&#39;,',$chr(9),$chr(32)),$&
    /([$\|%\[\]\}\{][^\s]*)/g,$+($chr(2),$chr(2),\t))
}
alias -l UTF8 {
  if ($version >= 7) return $chr($1)
  elseif ($1 < 255) { return $chr($1) }
  elseif ($1 >= 256) && ($1 < 2048) { return $+($chr($calc(192 + $div($1,64))),$chr($calc(128 + $mod($1,64)))) }
  elseif ($1 >= 2048) && ($1 < 65536) { return $+($chr($calc(224 + $div($1,4096))),$chr($calc(128 + $mod($div($1,64),64))),$chr($calc(128 + $mod($1,64)))) }
  elseif ($1 >= 65536) && ($1 < 2097152) {
    return $+($chr($calc(240 + $div($1,262144))),$chr($calc(128 + $mod($div($1,4096),64))),$chr($calc(128 + $mod($div($1,64),64))),$&
      $chr($calc(128 + $mod($1,64))))
  }
}
alias -l div { return $int($calc($1 / $2)) }
alias -l mod {
  var %int $int($calc($1 / $2))
  return $calc($1 - (%int * $2))
}
alias -l H2U { return $utf8($base($1,16,10)) }
dialog YT_Download_Selector {
  title "Youtube Download Selector"
  size -1 -1 159 70
  option dbu
  button "", 1, 2 4 37 12, hide disable
  button "", 2, 41 4 37 12, hide disable
  button "", 3, 80 4 37 12, hide disable
  button "", 4, 119 4 37 12, hide disable
  button "", 5, 2 17 37 12, hide disable
  button "", 6, 41 17 37 12, hide disable
  button "", 7, 80 17 37 12, hide disable
  button "", 8, 119 17 37 12, hide disable
  button "", 9, 2 30 37 12, hide disable
  button "", 10, 41 30 37 12, hide disable
  button "", 11, 80 30 37 12, hide disable
  button "", 12, 119 30 37 12, hide disable
  text "", 18, 2 59 154 8, center
  button "", 13, 2 44 37 12, hide disable
  button "", 14, 41 44 37 12, hide disable
  button "", 15, 80 44 37 12, hide disable
  button "", 16, 119 44 37 12, hide disable
  text "", 19, 0 0 0 0
  text "", 20, 0 0 0 0
}
dialog -l YTDownloadProgress {
  title "Youtube Downloads"
  size -1 -1 98 54
  option dbu
  text "", 1, 1 2 96 8, center
  text "", 2, 37 15 58 8
  text "", 3, 37 24 59 8
  text "", 4, 37 33 59 8
  text "", 5, 37 42 59 8
  text "Size:", 6, 2 15 32 8, right
  text "Complete:", 7, 2 24 32 8, right
  text "Speed:", 8, 2 33 32 8, right
  text "Remaining:", 9, 2 42 32 8, right
  text "", 10, 1 10 0 6, center
  text "", 11, 1 10 0 6, center
  text "", 12, 1 10 0 6, center
}
alias -l YTGetDownloadLinks {
  var %sockname $+(YtGetDownLoadLinks,$network,$2,$ticks)
  sockopen %sockname www.youtube.com 80
  svar %sockname url $+(/watch?v=,$1)
  svar %sockname dname $+(YT_GetDownloadLinks,~,$1)
  svar %sockname filename $2-
  svar %sockname file $+($1,.text)
}
On *:sockopen:YtGetDownLoadLinks*: {
  if (!$sockerr) {
    sockwrite -nt $sockname GET $svar($sockname,url) HTTP/1.0
    sockwrite -n $sockname Host: www.youtube.com
    sockwrite -n $sockname $crlf
  }
  else { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
}
On *:sockread:YtGetDownLoadLinks*: {
  if ($sockerr) { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
  else {
    sockread -f  &YtGetDownLoadLinks
    if ($bintween(&YtGetDownLoadLinks,<title>,</title>,1)) svar $sockname filename $v1
    var %YtGetDownLoadLinks $decodeuri($bvar(&YtGetDownLoadLinks,1-).text)
    write -n $svar($sockname,file) %YtGetDownLoadLinks
  }
}
On *:sockclose:YtGetDownLoadLinks*: {
  var %file $svar($sockname,file), %count 1, %dname $svar($sockname,dname)
  dialog $iif($dialog(%dname),-v,-m) %dname YT_Download_Selector
  did -a %dname 18 $svar($sockname,filename) 
  did -a %dname 19 $iif($isdir($did(YTSimpleDownloader,4)),$did(YTSimpleDownloader,4),$mircdirYoutube\)
  did -a %dname 20 $iif($did(YTSimpleDownloader,6).state,Audio,$iif($did(YTSimpleDownloader,10).state,Both,Video))
  dialog -x YTSimpleDownloader
  bread  $svar($sockname,file) 1 $file(%file).size &parse
  var %start $calc($bfind(&parse, 1, "url_encoded_fmt_stream_map") + 28), %end $bfind(&parse, %start, $+(</script>)), %dif $calc(%end - %start)
  bcopy  &file 1 &parse %start %dif
  while (%count < 17 && $bintween(&file,signature=,&,%count))  {
    var %signature $+(&signature=,$gettok($v1,1,44))
    if ($bintween(&file,url=,$chr(44),%count)) { 
      var %url $v1
      noop $regex(%url,/itag=(\d+)/i)
      var %itag $+(&itag=,$regml(1)), %videotype $YoutubeGetQuality($regml(1))
      var %url $regsubex($replace($gettok(%url,1,34),sig=,signature=),/(\&itag=\d+)/gi,$null)
      hadd -m %dname %count $+(%url,$iif(signature= !isin %url,%signature),$iif(itag= !isin %url,%itag))
      if ($dialog(%dname) && $hget(%dname,%count).data) { did -eva %dname %count %videotype }
    }
    inc %count
  }
  .remove $svar($sockname,file)
}
alias -l YoutubeGetQuality {
  var %key 5,6,13,17,18,22,34,35,36,37,38,43,44,45,46,82,83,84,85,100,101,102,120, $&
    133,134,135,136,137,138,139,140,141,160,171,172,242,243,244,245,246,247,248,264
  var %itag FLV 240p,FLV 270p,3GP n/a,3GP 144p,MP4 360p, $&
    MP4 720p,FLV 360p,FLV 480p,3GP 240p,MP4 1080p, $&
    MP4 3072p,WebM 360p,WebM 480p,WebM 720p,$&
    WebM 1080p,MP4 360p,MP4 240p,MP4 720p,MP4 520p, $&
    WebM 360p,WebM 360p,WebM 720p,FLV 720p, $&
    MP4 320p,MP4 480p,MP4 640x480,MP4 1280x720,MP4 1920x1080,MP4 Low, $&
    MP4 Med,MP4 Hi,MP4 256x144,WebM Med,WebM Hi, $&
    WebM 320x240,WebM 480x360,WebM 640x480,WebM 640x480,WebM 640x480,WebM 1280x720, $&
    WebM 1920x1080,WebM 1920x1080
  if ($findtok($remove(%key,$chr(32)),$1,44)) return $gettok(%itag,$v1,44)
}
alias -l Svar {
  var %sockname $1, %item $2
  if ($isid) {
    if ($regex($sock(%sockname).mark,/ $+ %item $+ \x01([^\x01]*)/i)) return $regml(1)
  }
  elseif ($3)  {
    var %value $3-
    if (!$regex($sock(%sockname).mark,/ $+ %item $+ \x01/i)) { sockmark %sockname $+($sock(%sockname).mark,$chr(1),%item,$chr(1),%value) }
    else { sockmark %sockname $regsubex($sock(%sockname).mark,/( $+ %item $+ \x01[^\x01]*)/i,$+(%item,$chr(1),%value)) }
  }
}

Comments

Sign in to comment.
spankylishus   -  Jan 30, 2016

mirc 7.29

  • Invalid parameters: $bfind (line 109, youtubedownloader.mrc)

2nd screen where u pick quality is blank with random # letter string at bottom
and get the error above in status window

 Respond  
^WeSt   -  May 08, 2014

There are some errors on 7.32:

Transfer of wget/wget.exe complete.
Transfer of wget/libssl32.dll complete.
Transfer of wget/libintl3.dll complete.
Transfer of wget/libiconv2.dll complete.
Transfer of wget/libeay32.dll complete.
Transfer of ffmpeg/ffmpeg.exe complete.
Transfer of ffmpeg/1.ico complete.
Transfer of ffmpeg/2.ico complete.
Transfer of ffmpeg/3.ico complete.
Transfer of ffmpeg/4.ico complete.
Transfer of ffmpeg/5.ico complete.
Transfer of ffmpeg/6.ico complete.
Transfer of ffmpeg/7.ico complete.
Transfer of ffmpeg/8.ico complete.

  • /run: unable to open file 'wget\wget.exe' (line 157, script1.mrc)

the filesize of wget.exe is 2KB saved after download and all the DLLS that are in wget folder.

i think the problem is while downloading and saving the extra files.

FordLawnmower  -  May 10, 2014

@^WeSt There was a problem with the site hosting the files.
It's fixed now in the new code.
Just load the new code and type /fixwget

^WeSt  -  May 11, 2014

Working but does not converting to audio only downloading the .mp4 file and .mp3 file does not exist, i have select Both option from the dialog, also i try to use only Audio Only option and still only have .mp4 and not .mp3 file.

Also why not adding support for download and http://youtu.be/* links too?

  • Thanks!
Sign in to comment

FordLawnmower   -  May 06, 2014

Updated

 Respond  
FordLawnmower   -  Apr 16, 2013

Updated and working again.

atropine  -  Jul 04, 2013

This doesn't work. I get the error

[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!
[13:55] error WshVbscriptDownload Download Failed!

Sign in to comment

FordLawnmower   -  Oct 01, 2012

Updated and working again.

 Respond  
amokka   -  Mar 08, 2012

Been using your great tool awhile now, not i think they (youtube) changed something or there might be a bug in the script, cuz once in awhile i get this "* /return: line too long (line 141, remote.ini)" any iders?

 Respond  
Stewie1k94   -  Feb 21, 2012

I sorted it now any way, it opened mIRC, but it says "End" and "Continue" in a dialog box, and keeps putting it into a "not responding state".

 Respond  
FordLawnmower   -  Feb 21, 2012

I don't see any reason why a script would prevent you from opening mIRC toclafane1, but the solution would be to edit mirc.ini.
Just open the mirc.ini, scroll down to [rfiles] and remove the line with the problem script.
After saving mirc.ini, this will be the same as unloading the script from within mirc, except any on unload events will not get triggered.
This will only work if mIRC is closed.

 Respond  
Stewie1k94   -  Feb 20, 2012

Great, I load it, and now I can't open my mIRC, any way to fix this?

 Respond  
Annaiidziithaa   -  Jan 22, 2012

fantastic :P

 Respond  
IllogicTC   -  Jan 16, 2012

Why won't it let me like it more than once nor rate it higher than 10 ;.;

 Respond  
sagargulati   -  Jan 16, 2012

<3
Its good

 Respond  
IllogicTC   -  Jan 11, 2012

"$30 for JUST THAT!? Man, at that rate, you may as well think you're missing some zeros there, Movie Company. In fact, I think you're missing some zeros, too. As in, $00 HELLO TORRENT!"

I don't actually torrent, that is just how I imagine torrenters going about their business.

 Respond  
Abcdefmonkey   -  Jan 10, 2012

Yeah. Music companies can't stop people from sharing, burning, ripping, etc. The average computer nerd is smarter than anyone who produces such restrictions. There's always going to be a way around it. Much like copy-protection on DVDs. xD shh

 Respond  
IllogicTC   -  Jan 10, 2012

Sounds like how I had to strip DRM from some songs by giving it a go through Audacity to be able to burn them to CD. I bought the songs from Amazon, digital copies of course, and wanted to make my own physical copy of it. TRY TO STOP ME, WILL YOU!? loads up Audacity

 Respond  
Abcdefmonkey   -  Jan 08, 2012

Weird then. They won't play on my phone nor ipod... and I have the faintest clue.. seeing as when they're converted they're in .mp3 format. I get unsupported format errors on my phone. I just re-convert them and they work fine. Oh well. Doesn't matter. Takes less than a minute to do a handful of songs. :p

 Respond  
  -  Jan 08, 2012

odd as I am playing them on my phone just fine. and I didnt need to do any thing extra

 Respond  
Abcdefmonkey   -  Jan 08, 2012

I would like to note that if you're converting to audio only.. the converted files won't play on phones/iPods. I added a few songs I downloaded using this (audio only) and attempted to put them on my phone and even though it was .mp3 format (as it should be) my phone returned an error stating it couldn't play the type of file. I tried on my iPod and it wouldn't work either. I'm using an Android OS phone.. However, I was just pointing this out to others. It can easily still be played on mobiles by re-converting it into the .mp3 format using another source. I use dbPowerAmp Music Converter. :P

 Respond  
blackvenomm666   -  Jan 08, 2012

nicely done ford

 Respond  
FordLawnmower   -  Jan 07, 2012

Thanks everyone :)
@FelicianoX a Java downloader would be cool. You should make it.

 Respond  
FelicianoX   -  Jan 07, 2012

Really nice script, I wanted to make something like this in Java a few months ago. Nice job

 Respond  
Fuzionx   -  Jan 07, 2012

Thanks, works perfectly now! Like + 10/10

Glad I could help ^^

 Respond  
Abcdefmonkey   -  Jan 07, 2012

@FordLawnmower After 6 trial tests it only returned the error once but that was due to me closing the conversion dialog before it finished on accident. I just tried it a couple of more times and returned no error whatsoever. The temp file is deleted as it should and the file is converted properly. Also, thanks for the bit for the conversion dialog to close it automatically when it finishes. No problem with helping you, as it seemed I wasn't the only one with the problem, so this just helps other people in the future if they have an issue :) Keep up the good work :)

 Respond  
FordLawnmower   -  Jan 07, 2012

@Abcdefmonkey That is the wget logfile that is used to follow the download progress of the video file. The script could be trying to delete it while it's still in use. Try this edit and see if that issue is fixed. http://paste.kde.org/183302/raw/

@Fuzionx I'm glad it's working for you now.
The last dialog is not scripted to close but you can add that line if you want it that way.
Just add a line under this one:

dcheck did -a %dname 11 Conversion Complete in $duration($calc($ctime - %start))

I have this at line 35.
Just add this line under it:

dcheck dialog -x %dname

Thanks for your time and patience Abcdefmonkey & Fuzionx .
I really appreciate it :)

 Respond  
Fuzionx   -  Jan 07, 2012

Works good now, except the convert dialog which isn't updating and not closing after the conversion has been completed.

 Respond  
Abcdefmonkey   -  Jan 07, 2012

@FordLawnmower Ahh, I see. The file conversion dialog doesn't animate but with the new snippet the conversion completes successfully even though the dialog doesn't say complete. The only problem I have with it is removing the video file it downloads once conversion is complete. I tested the new snippet on 4 different videos and it happened 2 out of the 4 times. I get this error when it doesn't remove the source file.

Despite the not removing the source file here and there (which I can do manually) 10/10 +1 like. :) Good work, as usual

* /remove: unable to remove 'C:\Users\Blunt\AppData\Local\Temp\M7BvDqlFMoU' (line 119, YouTube Downloader.ini)

@Fuzionx The new snippet works with the high quality option without a problem now.

 Respond  
FordLawnmower   -  Jan 07, 2012

@Fuzionx I was aware of the issue with the icons not animating during audio conversion.
For some reason mIRC won't initiate the timers until after the conversion com has returned a result. This is strange because if I do a simple file to file conversion , outside of the script, it works fine. This is a known bug and I will resolve it soon.
As for the $read error. This is probably just caused by the script trying to read the log file before it's created. Your computer is probably much more responsive than mine, as I mistreat mine with 130+ processes :P
Try this edit and let me know if you still get that error: http://paste.kde.org/183224/raw/

@Abcdefmonkey Try this edit and let me know if you still get an error: http://paste.kde.org/183224/raw/

 Respond  
Fuzionx   -  Jan 07, 2012

Download only works with the lower quality types, the higher ones give the $read() error. The conversion does work but the dialog with the remaining time and icons doesn't work.

 Respond  
Abcdefmonkey   -  Jan 06, 2012

Sadly, it's doing the same thing. Also, when I try a new video, when I enter the link I get this on each new link

$read: error opening C:\Users\Blunt\AppData\Local\Temp\DpS7nCweYZImp4 (line 202, YouTube Downloader.ini)
 Respond  
FordLawnmower   -  Jan 06, 2012

Try this edit Abcdefmonkey : http://paste.kde.org/182888/raw/

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.