4 * Change: Google: --format=mp4/best
5 1. Default to flv if mp4 is not available
6 2. Fix --format=best support
8 Developer-visible changes:
9 * Add: t/$host.t: NO_INTERNET variable support (closes issue #24)
10 * Change: t/02youtube.t test link
18 * Add: support for Vimeo (closes issue #19)
19 * Add: return codes for each error case (closes issue #22)
20 * Fix: return code is always 0 (closes issue #20)
21 * Change: --hosts output now matches cclive output
23 Developer-visible changes:
24 * Change: Cctv, Dailymotion, Liveleak -> use clive::Utils::matchRegExps
34 This release is a major overhaul aimed to fix the previous design flaws
35 and clean up the codebase. Note that 2.2.0 breaks compatibility with
36 the earlier versions of clive.
38 Most users will not notice much differences after upgrading to 2.2.0
39 but those users who have used clive for anything more than "clive URL"
40 should read the changes carefully. The summary of changes section
41 includes more detailed changes that is recommended reading for all
42 users and maintainers.
44 2.2.0 changes the license from ISC to GPLv3. The license was last
45 changed in 2.1.0 to ISC but has now been reverted back to GPLv3 after
46 some further consideration.
48 Config::Tiny has been replaced with Getopt::ArgvFile. The latter had
49 some advantages over Config::Tiny that lead to the switch. For example,
50 instead of trying to memorize the (often confusing) config variable
51 names, users can now use command line options in the config file.
53 This also means that everytime a new feature is added to the program,
54 we are no longer required to modify the code responsible for parsing
55 the config file. Using Getopt::ArgvFile also required adding only one
56 line of code to the project whereas Config::Tiny required several.
58 cache no longer reads by default. This means that --cache-read option
59 must be invoked for clive to read previously stored video records
60 from the cache. The change was made after seeing how most users found
61 the reading from cache too confusing and frequently reported expired
62 link errors such as HTTP 403 as bugs even though the behaviour was
63 documented in the manual page. DAERTM?
65 --emit-csv now outputs very few details about the videos. Only those
66 fields that are known to be any use are printed out.
68 2.2.0 also removes a number of less used features that have lingered
69 in the project since the 1.x. Most of these features were never
70 requested and have only been burdening the program codebase since
73 Part time hackers and/or developers will notice that clive now follows
74 a new OO design -- as well as Perl5 allows it. While there are still
75 some considerations regarding the design and limitations that could not
76 quite be ported from C++ used in cclive, WYSIWYG.
78 Package/port maintainers will want to read the README file. The previously
79 used GNU Makefile is no longer used and clive installation now depends on
80 ExtUtils::MakeMaker instead.
89 2. Last changed in 2.1.0 (-> ISC)
91 * Slight improvements to program startup time
93 * Config file format changes (Config::Tiny -> Getopt::ArgvFile)
94 1. Command line options can now be used in config file
95 2. Breaks compatibility with previous versions
96 3. Cleaner and new format allows using cmdline options in configs
97 4. Format was last changed in 2.0.0
99 -----------------------------------------------
100 # Config::Tiny: clive 2.0 - 2.1
101 cat >> ~/.config/clive/config
103 proxy = "http://foo:1234"
105 savedir = "/home/user/videos"
107 # Getopt::ArgvFile: clive 2.2
109 --proxy="http://foo:1234"
110 --savedir="/home/user/videos"
111 -----------------------------------------------
113 * Fix: Redtube video title parsing
116 1. Cache is now passive (read:no, write:yes)
117 2. Add: --cache- option prefix
118 3. New option: --cache-read, --no-cache
119 5. Rename: misc. options (e.g. --show -> --cache-dump)
120 6. Record field changes
121 o Breaks compatibility with previous versions
122 7. New field delimiter '#'
126 1. ~/.config/clive/config -> ~/.cliverc
127 2. ~/.config/clive/recall -> ~/.clivelast
128 3. ~/.config/clive/cache -> ~/.clivecache
131 1. Add: --format=best support (closes issue #15 )
132 2. Rename: mp4 -> fmt18 (Youtube)
133 3. Rename: Dailymotion ID spark -> flv
136 1. cURL error handling
137 2. Google mp4 support
138 3. Do not strip link params (closes debian bug #530659)
139 4. --format=fmt6 (no longer supported by Youtube?)
140 5. Dailymotion ID parsing
148 6. --stop-after (closes issue #18)
150 * --emit-csv: changes to CSV fields (cleanup, print only the necessary fields)
152 page_link, video_link, filename, file_length_mb,
153 file_length_bytes, video_id, time_stamp, page_title,
154 initial_length, remaining_bytes
156 base_filename, file_length, video_link
160 2. --renew (now obsolete)
161 3. --youtube-user (broken since 2.1)
162 4. --youtube-pass (...)
174 1. Long options: aliases (e.g. --output_file | --output-file | --outputfile)
175 2. --filename-format: new specifiers, rename some of the old ones
176 3. --format: exit with an error if id is not recognized by clive
177 4. Rename: -r -> -l (--recall)
178 5. Many short options have been removed (or reused)
180 Developer-visible changes:
184 * Change: use a custom perltidyrc (closes issue #17)
185 - Thanks to Tong Sun <suntong001@gmail.com>
187 * Prerequisite changes
188 1. Written for Perl 5.10.0
189 o 5.8 probably OK although unverified
193 3. Removed prerequisites
198 4. Optional modules (no changes from 2.1.14)
202 * Change: use decode_utf8 returned html only if html is valid utf8
204 * Installation changes
205 1. Makefile.PL (ExtUtils::MakeMaker) [see README]
208 1. Makefile (obsoleted by Makefile.PL)
209 2. clive.pod (merged into bin/clive)
210 3. clive.1 (generated from bin/clive)
212 * Remove: binmode STDOUT, ":utf8"
214 * Remove: extra decode_utf8
220 User-visible changes:
221 * Add: support for youtube-nocookie.com (closes issue #12)
222 * Add: fmt35 format ID for Youtube [closes issue #10 (and #13)]
223 * Fix: liveleak id parsing
224 * Rename: --format IDs for Youtube
228 * Rename: --output-video -> --output-file
229 * Rename: output:file -> output:filename_format (config file)
230 * Remove: --overwrite option (use --output-file instead)
232 Developer-visible changes:
233 * Add: tests/ytube-nocookies.url
237 * 2.2.0 is under development, read more here:
238 http://code.google.com/p/clive/wiki/WhatsNew_2_2_0
244 Developer-visible changes:
245 * Change: use perltidy defaults for style
246 * Change: BerkeleyDB and File::Path modules are now optional
247 ** Cache features depend on these modules
248 * Moved opted_mods initilization to init_opted_mods (-> loop)
254 User-visible changes:
255 * Change: --connect-timeout, --connect-timeout-socks default -> 30s
256 * Fix: timeout after file transfer starts
257 * Fix: title parsing with custom character class (closes issue #8)
258 * Add: redtube support; thanks to anonprn2@gmail.com (closes issue #11)
259 * Fix: typo in --emit-xml --help string
265 User-visible changes:
266 * Change: --youtube-pass: prompt for password if left undefined
267 * Change: --filename-format: default -> "%t.%s"
268 * Fix: "Use of uninitialized value $opts{"ytpass"} ..."
271 ** --connect-timeout-socks
272 * Cleanup: manual page
274 Developer-visible changes:
275 * Rename: auth_youtube subroutine -> loginto_youtube
278 * Youtube login does not work (throw an error, patches welcome!)
284 NOTE: This release changes the clive status messages. This will likely
285 break compatibility with utilities that depend on these messages.
286 The changes were made to enable using abby (0.2.0+) as a front-end
289 User-visible changes:
290 * Add abby (front-end) compatibility
291 - Change output similar to cclive
292 - http://code.google.com/p/abby/
293 * Add Youtube HD support (--format=mp4_hd)
294 - Thanks to bf for the patch (via FreeBSD ports)
295 * Add tv.cctv.com support [issue #6]
296 - Thanks to suntong001 for data mining
298 - --limit-rate (config: [http]:limit_rate)
299 - --hosts (print supported hosts to stdout)
300 - --stderr (redirect all output to stderr instead of stdout)
301 * Improve file suffix parsing from content-type
302 - Rewrite the content-type handling block in query_video_length
303 - Use whatever is found after slash in the content-type string
304 - Use "flv" for exceptions (e.g. octet-*, x-flv, etc.)
305 * Replace dashes in video IDs with underscores before using them in fnames
306 * Change --version output
307 * Fix reading from stdin (closes Debian #522422)
308 - Assume reading from stdin only if queue and argv arrays are empty
309 * Fix exit with status code
310 - Exit 0 on success, and >0 if an error occurs
312 Developer-visible changes:
313 * Update examples/config with limit_rate
314 * Rename: configrc -> examples/config
315 * Replace the monstrous if-elsif-$host code block with a loop
321 User-visible changes:
322 * Fix GoogleVideo "id not found" handling
323 - Symptom: exit after "process page..." message
324 - Cause: no check for undefined id value
325 * Fix GoogleVideo support
326 - Symptom: see above fix
327 - Cause: HTML changes to the video pages
328 * Fix URI::Escape import for GoogleVideo redirects
329 - Symptom: crash with "Undefined subroutine &URI::Escape::uri_unescape"
330 - Cause: recent script start optimizations; a missing 'require'
332 - Symptom: "expected different content-type"
333 - Cause: website content-type changes
335 Developer-visible changes:
336 * Cleanup code (style-wise)
337 - perltidy -gnu -l=72
343 User-visible changes:
344 * Keep URL queue order
345 - Remove duplicate URL checking
346 * Remove --modver, change --version output
347 * Update manual page (clive.1, clive.pod)
348 - Rewrite EXAMPLES section
349 - Cleanup other sections
350 * Config file: add support for [output]:format (--format)
351 * Port dailymotion support from cclive
353 Developer-visible changes:
355 - Replace Perl module checking with for-loops (incl. optional)
356 * Optimize script start time
357 - Replace "use $module" with "require $module" where possible
358 * Update LICENSE, configrc
360 - Add [output]:format to configrc
361 * Add tests/dmotion.url
367 User-visible changes:
368 * Add --output-video option
369 * Add option groups to --help output
370 * Add --stream-exec and --stream options
372 * Config file: add support for
373 - [commands]:exec (--exec)
374 - [commands]:stream (--stream-exec)
375 - See configrc for an example
376 * Fix --exec; should no longer spew out "not found" shell errors
377 * Change default filename format to "%t_%d_%i.%s"
378 * Change to use "file is already fully retrieved" error message
379 * Port resizing progressbar from cclive
381 Developer-visible changes:
382 * Add tests/lastfm.url and tests/multi.lst
383 * Remove XML::Simple dependency
385 * Implement SIGWINCH handling
386 - Resize progressbar to match terminal width
387 - Progressbar width defaults to 80 (chars)
388 - OS must support SIGWINCH
389 - Requires Term::ReadKey module
390 - clive works without the module but will ignore any SIGWINCH events
391 * Touch cclive.1, cclive.pod, INSTALL and Makefile files
395 * Buried clive-list, grew weary of fighting spam with bare fists
396 - email the author directly or use the issue tracker, thanks
402 User-visible changes:
403 * Renamed the following options
404 - --noproxy => --no-proxy
405 - --noextract => --no-extract
406 - --nologin => --no-login
407 * Butchered --help output
408 - much less verbose now
409 - relocated manual page data to clive.pod
410 * Removed --manual option
411 * Obsoleted "play" and "rencode" config keys in "commands" section
412 * Added --exec option which resembles cclive's --exec command
413 * Removed --play, --noplay, --rencode and --norencode options
415 * Changed --paste short option from '-x' to '-p'
416 * Removed wmv format (breakcom)
417 - persistant HTTP/404 (not found) error
419 Developer-visible changes:
421 - additional INSTALL variables
423 - can be used to disable module checks
424 - removed "man" from "all"
425 - removed "clean" (useless)
431 User-visible changes:
432 * Fixed sevenload support
438 User-visible changes:
439 * Fixed Youtube login which sometimes reported failed attempts as OK
440 - Youtube defaults web interface language based on users ip
441 - clive looks for English words in the post-login page to confirm login
442 * Tweaked --version output
444 Developer-visible changes:
445 * Removed metacafe remnants
446 * Fixed bug in time2str subroutine which caused incorrect calculations
448 * removed genman script (obsoleted by "make man")
449 * Added a rudimentary (GNU) Makefile
450 * Cleaned up translate_embed subroutine
453 * Removed the clive-announce and clive-users mailing lists
454 - New release announcements will be posted via Freshmeat alone from now on
455 - Subscribe to the project at http://freshmeat.net/projects/clive
456 * Created the clive-list@googlegroups.com mailing-list
457 - For support questions, patches and bug reports
458 - Issue tracker will remain for tracking bugs
459 - Send an email to clive-list-subscribe@googlegroups.com to subscribe
465 User-visible changes:
466 * Documented missing "%t" (--filename-format) in manual page
467 * Tweaked "localfile_length == remotefile_length" message
468 * Renamed CLIVE_CONFIGDIR environment variable to CLIVE_HOME
470 Developer-visible changes:
471 * Cleaned up manual page
473 * Cleaned up FreeBSD details (INSTALL)
479 User-visible changes:
480 * Removed "See --manual" from --version output
481 * Added support for evisortv
482 - http://code.google.com/p/clive/issues/detail?id=4
483 * Fixed: reused incorrectly last http error code for remaining urls in queue
484 * Fixed: progressbar reported 100% even if error had occurred (e.g. http/403)
486 Developer-visible changes:
487 * Cleaned up subroutines
493 User-visible changes:
494 * Fixed "Requested range was not delivered by the server (http/33)" w/ -c
495 - this would occur with a batch of URLs while using the --continue option,
496 e.g. if the first file was continued, the following page fetches exited
498 * Added --savebatch option
499 * Added --overwrite option
500 * Replaced the buggy progressbar with a "lazy man's progressbar"
501 * Fixed "print() on closed filehandle STDOUT" with --grep+delete
502 * Fixed progressbar display with --continue
504 Developer-visible changes:
506 * Started to bundle src tarball with clive.1 manual page
507 * Added genman script which wraps pod2man with common options
508 * Fixed a potential div by zero bug in calc_progress
514 NOTE: Changed license GPL3 => ISC/OpenBSD.
516 User-visible changes:
517 * Added --modversion option
518 * Replaced Term::Progressbar with a built-in thermometer progressbar
519 * Removed --progress=bar:nominor support due to above changes
520 * Added liveleakcom support
521 - http://code.google.com/p/clive/issues/detail?id=3
523 Developer-visible changes:
524 * Made IO::Pager module optional
526 * Cleaned up --progress option description
527 * Changed to require WWW::Curl 4.05+
528 * Removed Term::Progress module dependency
529 * Fixed a potential bug in calc_progress (improper $rate init)
531 * Made Expect module optional
537 User-visible changes:
538 * Fixed gvideo/mp4 support (http/404 even if the extraction link existed)
539 * Changed "found redirect" message
540 * Changed --play, --rencode status messages to use file basename
542 Developer-visible changes:
543 * decode_utf8($page): removes extra steps, works better with HTML::TokeParser
544 * Added missing Expect module version to INSTALL
551 This aims to be the last beta before the release of 2.0 in December 2008.
552 Please report any remaining bugs to the issue tracker at:
553 http://code.google.com/p/clive/issues/list
555 User-visible changes:
556 * Removed metacafe support until fixed (see known issues)
557 * Changed Youtube login to report if there were "too many login failures"
558 * Fixed Youtube login support: reported failures incorrectly as OK
559 * Added support clivepass(1) utility (http://code.google.com/p/clive-utils)
560 * Added support for metacafe and sevenload embed URL translation
562 Developer-visible changes:
564 * New prerequisite module: Expect
565 * Updated FreeBSD + Ubuntu details (INSTALL)
566 * Cleaned up some code
567 * Rewrote embed URL translation
570 * Metacafe support broken (http/404)
576 User-visible changes:
577 * Fixed pasting from clipboard containing multiple URLs
578 * Fixed page fetch progress glitch that occured with 1+ batches
579 * Added --agent option
580 * Added --proxy option
581 * Added --savedir option
582 * Added --cclass option
583 * Added --filename-format option
584 * Added --show-format option
585 * Added --youtube-user and --youtube-pass options
586 * Added --emit-xml option
587 * Added --progress=[none|bar|dot]
588 * Replaced --noprogress with --progress=none
589 * Added avg. transfer rate notification
590 * Fixed filename printing for existing output files (e.g. output.flv.1)
591 * Added --play option
592 * Fixed metacafe support (error: failed to extract videoCDNURL)
593 * Added --rencode option
595 Developer-visible changes:
596 * Ported --emit-csv option from 1.x with minor changes
597 - Backwards compatible with 1.x
598 - Prints additional video details
599 - $length, $video_id, $time_stamp, $page_title, $cont_from, $remaining
600 * Changed to prefer 'dot' bar if the output is not a TTY
601 * Replaced progress bar with Term::ProgressBar (new module prerequisite)
602 * Cleaned up queue processing subroutine
608 User-visible changes:
609 * clive now ignores input lines that start with the '#' character
610 * Added support for CLIVE_CONFIGDIR environment variable
611 * Ported lastfm video support from 1.x
612 * --version now displays XML::Simple
613 * Changed "= Play:" to "=> Playing ..."
614 * Playing occurs now subsequently after going over the URL batch
616 Developer-visible changes:
617 * Removed a google video redirect (commented out, see code)
618 * Added the AUTHORS file
619 * XML::Simple was missing as a prerequisite in INSTALL
620 * Made minor syntactic tweaks to the source code
621 * Fixed missing --quiet check with the "=> Play" message
627 A complete overhaul and rewrite of 1.x.
629 User-visible changes:
630 * Users are expected to use the --continue/-c option to resume transfers
631 * Configuration file format (=> INI), path was changed (=> ~/.config/clive)
632 * All extractions now assume flv as the default download format
633 * Users are expected to understand when/how use the --format/-f option
634 * Reading input from multiple sources is possible (e.g. % clive -x URL URL)
635 * Added: --grep: used to grep and recall cached URL entries
636 * Added: --background and --output=logfile, --append=logfile options
637 * Many old cmdline and config options were removed due to new design
638 * Improved GoogleVideo support: handles redirects to other hosts
639 * Pager is used where needed (e.g. --show/-s)
640 * Changed default output file naming format to "%n-(%i)-[%d].%s"
641 * Removed: guba (deadweight), myvideo (borked), dmotion (bitches @ anon users)
643 Developer-visible changes:
645 - See the INSTALL file for prerequisites
646 * No installation: all-in-one script (excl. the 3rd party modules)
647 * Cache is now an integral part of clive, see CACHE in the manual page
648 * Embedded the --manual page (Pod)
649 * Improved Youtube login: removed is_adult HTTP get (done manually now)
650 * Grab the file suffix from the Content-Type header
651 * Improved GoogleVideo support: mp4 detection no more relies on English words
652 * Improved Metacafe support: removed unnecessary "familyfilter" HTTP get
656 - 2.x+ at http://googlecode.com/p/clive/
657 - 1.x remains at http://gna.org/projects/clive
659 - 2.x+ at http://googlecode.com/p/clive/
660 - 1.x remain at http://dl.gna.org/clive
662 - http://clive.sf.net/
663 - http://home.gna.org/clive redirects to the above
665 - 2.x+ at git://repo.or.cz/clive.git
666 - 1.x remains at svn://svn.gna.org/svn/clive
667 * Issue tracking: Moved
668 - 2.x+ at http://googlecode.com/p/clive/issues/
669 - 1.x bug tracker remains at http://gna.org/projects/clive
670 * Created http://googlegroups.com/group/clive-announce/
672 NOTE: See http://dl.gna.org/clive/CHANGES for 1.x.