Add: return codes for each error case.
[clive.git] / CHANGES
blob8492f9e0ccef75491e56bee1fcafef90a40f6cd6
1 Version 2.2.1
3  User-visible changes:
4   * Add: support for Vimeo (closes issue #19)
5   * Add: return codes for each error case (closes issue #22)
6   * Fix: return code is always 0 (closes issue #20)
8  Developer-visible changes:
9   * Change: Cctv, Dailymotion, Liveleak -> use clive::Utils::matchRegExps
10   * Add: t/12error.t
13 Version 2.2.0
14 (June 14, 2009)
16 FOREWORD
17 --------
19 This release is a major overhaul aimed to fix the previous design flaws
20 and clean up the codebase. Note that 2.2.0 breaks compatibility with
21 the earlier versions of clive.
23 Most users will not notice much differences after upgrading to 2.2.0
24 but those users who have used clive for anything more than "clive URL"
25 should read the changes carefully. The summary of changes section
26 includes more detailed changes that is recommended reading for all
27 users and maintainers.
29 2.2.0 changes the license from ISC to GPLv3. The license was last
30 changed in 2.1.0 to ISC but has now been reverted back to GPLv3 after
31 some further consideration.
33 Config::Tiny has been replaced with Getopt::ArgvFile. The latter had
34 some advantages over Config::Tiny that lead to the switch. For example,
35 instead of trying to memorize the (often confusing) config variable
36 names, users can now use command line options in the config file.
38 This also means that everytime a new feature is added to the program,
39 we are no longer required to modify the code responsible for parsing
40 the config file. Using Getopt::ArgvFile also required adding only one
41 line of code to the project whereas Config::Tiny required several.
43 cache no longer reads by default. This means that --cache-read option
44 must be invoked for clive to read previously stored video records
45 from the cache. The change was made after seeing how most users found
46 the reading from cache too confusing and frequently reported expired
47 link errors such as HTTP 403 as bugs even though the behaviour was
48 documented in the manual page. DAERTM?
50 --emit-csv now outputs very few details about the videos. Only those
51 fields that are known to be any use are printed out.
53 2.2.0 also removes a number of less used features that have lingered
54 in the project since the 1.x. Most of these features were never
55 requested and have only been burdening the program codebase since
56 their introduction.
58 Part time hackers and/or developers will notice that clive now follows
59 a new OO design -- as well as Perl5 allows it. While there are still
60 some considerations regarding the design and limitations that could not
61 quite be ported from C++ used in cclive, WYSIWYG.
63 Package/port maintainers will want to read the README file. The previously
64 used GNU Makefile is no longer used and clive installation now depends on
65 ExtUtils::MakeMaker instead.
67 SUMMARY of CHANGES
68 ------------------
70  User-visible changes:
72   * License change
73     1. ISC -> GPLv3
74     2. Last changed in 2.1.0 (-> ISC)
76   * Slight improvements to program startup time
78   * Config file format changes (Config::Tiny -> Getopt::ArgvFile)
79     1. Command line options can now be used in config file
80     2. Breaks compatibility with previous versions 
81     3. Cleaner and new format allows using cmdline options in configs
82     4. Format was last changed in 2.0.0
83     Example:
84     -----------------------------------------------
85         # Config::Tiny: clive 2.0 - 2.1
86         cat >> ~/.config/clive/config
87         [http]
88             proxy = "http://foo:1234"
89         [output]
90             savedir = "/home/user/videos"
92         # Getopt::ArgvFile: clive 2.2
93         cat >> ~/.cliverc
94         --proxy="http://foo:1234"
95         --savedir="/home/user/videos"
96     -----------------------------------------------
98   * Fix: Redtube video title parsing
100   * Cache changes
101     1. Cache is now passive (read:no, write:yes)
102     2. Add: --cache- option prefix
103     3. New option: --cache-read, --no-cache
104     5. Rename: misc. options (e.g. --show -> --cache-dump)
105     6. Record field changes
106         o Breaks compatibility with previous versions 
107     7. New field delimiter '#'
108     8. New field order
110   * File path changes
111     1. ~/.config/clive/config -> ~/.cliverc
112     2. ~/.config/clive/recall -> ~/.clivelast
113     3. ~/.config/clive/cache -> ~/.clivecache
115   * --format changes
116     1. Add: --format=best support (closes  issue #15 )
117     2. Rename: mp4 -> fmt18 (Youtube)
118     3. Rename: Dailymotion ID spark -> flv
120   * Bugfixes
121     1. cURL error handling
122     2. Google mp4 support
123     3. Do not strip link params (closes debian bug #530659)
124     4. --format=fmt6 (no longer supported by Youtube?) 
125     5. Dailymotion ID parsing
127   * New options:
128     1. --home-dir
129     2. --recall-file
130     3. --cache-file
131     4. --no-cclass
132     5. --raw
133     6. --stop-after (closes issue #18)
135   * --emit-csv: changes to CSV fields (cleanup, print only the necessary fields)
136     1. clive 2.0 - 2.1:
137         page_link,          video_link,     filename,   file_length_mb,
138         file_length_bytes,  video_id,       time_stamp, page_title,
139         initial_length,     remaining_bytes
140     2. clive 2.2:
141         base_filename, file_length, video_link
143   * Remove options:
144     1. --savebatch
145     2. --renew (now obsolete)
146     3. --youtube-user (broken since 2.1)
147     4. --youtube-pass (...)
148     5. --no-login (...)
149     6. --clivepass (...)
150     7. --emit-xml
151     8. --background
152     9. --progress
153     10. --output
154     11. --append
155     12. --paste
156     13. --format=fmt6 
158   * Other changes:
159     1. Long options: aliases (e.g. --output_file | --output-file | --outputfile)
160     2. --filename-format: new specifiers, rename some of the old ones
161     3. --format: exit with an error if id is not recognized by clive
162     4. Rename: -r -> -l (--recall) 
163     5. Many short options have been removed (or reused)
165  Developer-visible changes:
167   * OO Perl5 style
169   * Change: use a custom perltidyrc (closes issue #17)
170     - Thanks to Tong Sun <suntong001@gmail.com>
172   * Prerequisite changes
173     1. Written for Perl 5.10.0
174         o 5.8 probably OK although unverified
175     2. New prerequisites
176         o Class::Singleton
177         o Getopt::ArgvFile 
178     3. Removed prerequisites
179         o Config::Tiny
180         o IO::Pager
181         o Expect
182         o Clipboard 
183     4. Optional modules (no changes from 2.1.14)
184         o BerkeleyDB
185         o Term::ReadKey
187   * Change: use decode_utf8 returned html only if html is valid utf8
189   * Installation changes
190     1. Makefile.PL (ExtUtils::MakeMaker) [see README]
192   * Remove files:
193     1. Makefile (obsoleted by Makefile.PL)
194     2. clive.pod (merged into bin/clive)
195     3. clive.1 (generated from bin/clive)
197   * Remove: binmode STDOUT, ":utf8"
199   * Remove: extra decode_utf8
202 Version 2.1.14
203 (May 25, 2009)
205  User-visible changes:
206   * Add: support for youtube-nocookie.com (closes issue #12)
207   * Add: fmt35 format ID for Youtube [closes issue #10 (and #13)]
208   * Fix: liveleak id parsing
209   * Rename: --format IDs for Youtube
210     ** mp4_hd -> fmt22
211     ** 3gpp -> fmt17
212     ** xflv -> fmt6
213   * Rename: --output-video -> --output-file
214   * Rename: output:file -> output:filename_format (config file)
215   * Remove: --overwrite option (use --output-file instead)
217  Developer-visible changes:
218   * Add: tests/ytube-nocookies.url
219   * Update: INSTALL
221  Other:
222   * 2.2.0 is under development, read more here:
223     http://code.google.com/p/clive/wiki/WhatsNew_2_2_0
226 Version 2.1.13
227 (May 16, 2009)
229  Developer-visible changes:
230   * Change: use perltidy defaults for style
231   * Change: BerkeleyDB and File::Path modules are now optional
232     ** Cache features depend on these modules
233   * Moved opted_mods initilization to init_opted_mods (-> loop)
236 Version 2.1.12
237 (May 9, 2009)
239  User-visible changes:
240   * Change: --connect-timeout, --connect-timeout-socks default -> 30s
241   * Fix: timeout after file transfer starts
242   * Fix: title parsing with custom character class (closes issue #8)
243   * Add: redtube support; thanks to anonprn2@gmail.com (closes issue #11)
244   * Fix: typo in --emit-xml --help string
247 Version 2.1.11
248 (April 29, 2009)
250  User-visible changes:
251   * Change: --youtube-pass: prompt for password if left undefined
252   * Change: --filename-format: default -> "%t.%s"
253   * Fix: "Use of uninitialized value $opts{"ytpass"} ..."
254   * Add new options:
255     ** --connect-timeout
256     ** --connect-timeout-socks
257   * Cleanup: manual page
259  Developer-visible changes:
260   * Rename: auth_youtube subroutine -> loginto_youtube
262  Known-issues:
263   * Youtube login does not work (throw an error, patches welcome!)
266 Version 2.1.10
267 (April 4, 2009)
269 NOTE: This release changes the clive status messages. This will likely
270 break compatibility with utilities that depend on these messages.
271 The changes were made to enable using abby (0.2.0+) as a front-end
272 for clive.
274  User-visible changes:
275   * Add abby (front-end) compatibility
276     - Change output similar to cclive
277     - http://code.google.com/p/abby/
278   * Add Youtube HD support (--format=mp4_hd)
279     - Thanks to bf for the patch (via FreeBSD ports)
280   * Add tv.cctv.com support [issue #6]
281     - Thanks to suntong001 for data mining
282   * Add new options
283     - --limit-rate (config: [http]:limit_rate)
284     - --hosts (print supported hosts to stdout)
285     - --stderr (redirect all output to stderr instead of stdout)
286   * Improve file suffix parsing from content-type
287     - Rewrite the content-type handling block in query_video_length
288     - Use whatever is found after slash in the content-type string
289     - Use "flv" for exceptions (e.g. octet-*, x-flv, etc.)
290   * Replace dashes in video IDs with underscores before using them in fnames
291   * Change --version output
292   * Fix reading from stdin (closes Debian #522422)
293     - Assume reading from stdin only if queue and argv arrays are empty
294   * Fix exit with status code
295     - Exit 0 on success, and >0 if an error occurs
297  Developer-visible changes:
298   * Update examples/config with limit_rate
299   * Rename: configrc -> examples/config
300   * Replace the monstrous if-elsif-$host code block with a loop
303 Version 2.1.9
304 (March 27, 2009)
306  User-visible changes:
307   * Fix GoogleVideo "id not found" handling
308     - Symptom: exit after "process page..." message
309     - Cause: no check for undefined id value
310   * Fix GoogleVideo support
311     - Symptom: see above fix
312     - Cause: HTML changes to the video pages
313   * Fix URI::Escape import for GoogleVideo redirects
314     - Symptom: crash with "Undefined subroutine &URI::Escape::uri_unescape"
315     - Cause: recent script start optimizations; a missing 'require'
316   * Fix Break support
317     - Symptom: "expected different content-type"
318     - Cause: website content-type changes
320  Developer-visible changes:
321   * Cleanup code (style-wise)
322     - perltidy -gnu -l=72
325 Version 2.1.8
326 (March 24, 2009)
328  User-visible changes:
329   * Keep URL queue order
330     - Remove duplicate URL checking
331   * Remove --modver, change --version output
332   * Update manual page (clive.1, clive.pod)
333     - Rewrite EXAMPLES section
334     - Cleanup other sections
335   * Config file: add support for [output]:format (--format)
336   * Port dailymotion support from cclive
338  Developer-visible changes:
339   * Makefile changes:
340     - Replace Perl module checking with for-loops (incl. optional)
341   * Optimize script start time
342     - Replace "use $module" with "require $module" where possible
343   * Update LICENSE, configrc
344     - Cosmetic changes
345     - Add [output]:format to configrc
346   * Add tests/dmotion.url
349 Version 2.1.7
350 (March 15, 2009)
352  User-visible changes:
353   * Add --output-video option
354   * Add option groups to --help output
355   * Add --stream-exec and --stream options
356     - Ported from cclive
357   * Config file: add support for
358     - [commands]:exec (--exec)
359     - [commands]:stream (--stream-exec)
360     - See configrc for an example
361   * Fix --exec; should no longer spew out "not found" shell errors
362   * Change default filename format to "%t_%d_%i.%s"
363   * Change to use "file is already fully retrieved" error message
364   * Port resizing progressbar from cclive
366  Developer-visible changes:
367   * Add tests/lastfm.url and tests/multi.lst
368   * Remove XML::Simple dependency
369     - Use regex instead
370   * Implement SIGWINCH handling
371     - Resize progressbar to match terminal width
372     - Progressbar width defaults to 80 (chars)
373     - OS must support SIGWINCH
374     - Requires Term::ReadKey module
375       - clive works without the module but will ignore any SIGWINCH events
376   * Touch cclive.1, cclive.pod, INSTALL and Makefile files
377   * Clean up regex
379  Other changes:
380   * Buried clive-list, grew weary of fighting spam with bare fists
381     - email the author directly or use the issue tracker, thanks
384 Version 2.1.6
385 (February 19, 2009)
387  User-visible changes:
388   * Renamed the following options
389     - --noproxy => --no-proxy
390     - --noextract => --no-extract
391     - --nologin => --no-login
392   * Butchered --help output
393     - much less verbose now
394     - relocated manual page data to clive.pod
395   * Removed --manual option
396   * Obsoleted "play" and "rencode" config keys in "commands" section
397   * Added --exec option which resembles cclive's --exec command
398   * Removed --play, --noplay, --rencode and --norencode options
399     - use --exec instead
400   * Changed --paste short option from '-x' to '-p'
401   * Removed wmv format (breakcom)
402     - persistant HTTP/404 (not found) error
404  Developer-visible changes:
405   * Makefile changes
406     - additional INSTALL variables
407     - added WITH_CHECK
408     - can be used to disable module checks
409     - removed "man" from "all"
410     - removed "clean" (useless)
413 Version 2.1.5
414 (February 6, 2009)
416  User-visible changes:
417   * Fixed sevenload support
420 Version 2.1.4
421 (February 1, 2009)
423  User-visible changes:
424   * Fixed Youtube login which sometimes reported failed attempts as OK
425     - Youtube defaults web interface language based on users ip
426     - clive looks for English words in the post-login page to confirm login
427   * Tweaked --version output
429  Developer-visible changes:
430   * Removed metacafe remnants
431   * Fixed bug in time2str subroutine which caused incorrect calculations
432   * Updated INSTALL
433   * removed genman script (obsoleted by "make man")
434   * Added a rudimentary (GNU) Makefile
435   * Cleaned up translate_embed subroutine
437  Other changes:
438   * Removed the clive-announce and clive-users mailing lists
439     - New release announcements will be posted via Freshmeat alone from now on
440     - Subscribe to the project at http://freshmeat.net/projects/clive
441   * Created the clive-list@googlegroups.com mailing-list
442     - For support questions, patches and bug reports
443     - Issue tracker will remain for tracking bugs
444     - Send an email to clive-list-subscribe@googlegroups.com to subscribe
447 Version 2.1.3
448 (January 9, 2009)
450  User-visible changes:
451   * Documented missing "%t" (--filename-format) in manual page
452   * Tweaked "localfile_length == remotefile_length" message
453   * Renamed CLIVE_CONFIGDIR environment variable to CLIVE_HOME
455  Developer-visible changes:
456   * Cleaned up manual page
457   * Added LICENSE file
458   * Cleaned up FreeBSD details (INSTALL)
461 Version 2.1.2
462 (December 29, 2008)
464  User-visible changes:
465   * Removed "See --manual" from --version output
466   * Added support for evisortv
467     - http://code.google.com/p/clive/issues/detail?id=4
468   * Fixed: reused incorrectly last http error code for remaining urls in queue
469   * Fixed: progressbar reported 100% even if error had occurred (e.g. http/403)
471  Developer-visible changes:
472   * Cleaned up subroutines
475 Version 2.1.1
476 (December 19, 2008)
478  User-visible changes:
479   * Fixed "Requested range was not delivered by the server (http/33)" w/ -c
480     - this would occur with a batch of URLs while using the --continue option,
481     e.g. if the first file was continued, the following page fetches exited
482     with the above error
483   * Added --savebatch option
484   * Added --overwrite option
485   * Replaced the buggy progressbar with a "lazy man's progressbar"
486   * Fixed "print() on closed filehandle STDOUT" with --grep+delete
487   * Fixed progressbar display with --continue
489  Developer-visible changes:
490   * Updated INSTALL
491   * Started to bundle src tarball with clive.1 manual page
492   * Added genman script which wraps pod2man with common options
493   * Fixed a potential div by zero bug in calc_progress
496 Version 2.1.0
497 (December 10, 2008)
499  NOTE: Changed license GPL3 => ISC/OpenBSD.
501  User-visible changes:
502   * Added --modversion option
503   * Replaced Term::Progressbar with a built-in thermometer progressbar
504   * Removed --progress=bar:nominor support due to above changes
505   * Added liveleakcom support
506     - http://code.google.com/p/clive/issues/detail?id=3
508  Developer-visible changes:
509   * Made IO::Pager module optional
510   * Removed COPYING
511   * Cleaned up --progress option description
512   * Changed to require WWW::Curl 4.05+
513   * Removed Term::Progress module dependency
514   * Fixed a potential bug in calc_progress (improper $rate init)
515   * Updated INSTALL
516   * Made Expect module optional
519 Version 2.0.0
520 (December 2, 2008)
522  User-visible changes:
523    * Fixed gvideo/mp4 support (http/404 even if the extraction link existed)
524    * Changed "found redirect" message
525    * Changed --play, --rencode status messages to use file basename
527  Developer-visible changes:
528    * decode_utf8($page): removes extra steps, works better with HTML::TokeParser
529    * Added missing Expect module version to INSTALL
532 Version 2.0beta4
533 (November 22, 2008)
535  Notes:
536    This aims to be the last beta before the release of 2.0 in December 2008.
537    Please report any remaining bugs to the issue tracker at:
538      http://code.google.com/p/clive/issues/list
540  User-visible changes:
541    * Removed metacafe support until fixed (see known issues)
542    * Changed Youtube login to report if there were "too many login failures"
543    * Fixed Youtube login support: reported failures incorrectly as OK
544    * Added support clivepass(1) utility (http://code.google.com/p/clive-utils)
545    * Added support for metacafe and sevenload embed URL translation
547  Developer-visible changes:
548    * Added TODO file
549    * New prerequisite module: Expect
550    * Updated FreeBSD + Ubuntu details (INSTALL)
551    * Cleaned up some code
552    * Rewrote embed URL translation
554  Known issues:
555    * Metacafe support broken (http/404)
558 version 2.0beta3
559 (November 1, 2008)
561  User-visible changes:
562   * Fixed pasting from clipboard containing multiple URLs
563   * Fixed page fetch progress glitch that occured with 1+ batches
564   * Added --agent option
565   * Added --proxy option
566   * Added --savedir option
567   * Added --cclass option
568   * Added --filename-format option
569   * Added --show-format option
570   * Added --youtube-user and --youtube-pass options
571   * Added --emit-xml option
572   * Added --progress=[none|bar|dot]
573   * Replaced --noprogress with --progress=none
574   * Added avg. transfer rate notification
575   * Fixed filename printing for existing output files (e.g. output.flv.1)
576   * Added --play option
577   * Fixed metacafe support (error: failed to extract videoCDNURL)
578   * Added --rencode option
580  Developer-visible changes:
581   * Ported --emit-csv option from 1.x with minor changes
582     - Backwards compatible with 1.x
583     - Prints additional video details
584         - $length, $video_id, $time_stamp, $page_title, $cont_from, $remaining
585   * Changed to prefer 'dot' bar if the output is not a TTY
586   * Replaced progress bar with Term::ProgressBar (new module prerequisite)
587   * Cleaned up queue processing subroutine
590 Version 2.0beta2
591 (October 15, 2008)
593  User-visible changes:
594   * clive now ignores input lines that start with the '#' character
595   * Added support for CLIVE_CONFIGDIR environment variable
596   * Ported lastfm video support from 1.x
597   * --version now displays XML::Simple
598   * Changed "= Play:" to "=> Playing ..."
599   * Playing occurs now subsequently after going over the URL batch
601  Developer-visible changes:
602   * Removed a google video redirect (commented out, see code)
603   * Added the AUTHORS file
604   * XML::Simple was missing as a prerequisite in INSTALL
605   * Made minor syntactic tweaks to the source code
606   * Fixed missing --quiet check with the "=> Play" message
609 Version 2.0beta1
610 (September 23, 2008)
612 A complete overhaul and rewrite of 1.x.
614  User-visible changes:
615   * Users are expected to use the --continue/-c option to resume transfers
616   * Configuration file format (=> INI), path was changed (=> ~/.config/clive)
617   * All extractions now assume flv as the default download format
618   * Users are expected to understand when/how use the --format/-f option
619   * Reading input from multiple sources is possible (e.g. % clive -x URL URL)
620   * Added: --grep: used to grep and recall cached URL entries
621   * Added: --background and --output=logfile, --append=logfile options
622   * Many old cmdline and config options were removed due to new design
623   * Improved GoogleVideo support: handles redirects to other hosts
624   * Pager is used where needed (e.g. --show/-s)
625   * Changed default output file naming format to "%n-(%i)-[%d].%s"
626   * Removed: guba (deadweight), myvideo (borked), dmotion (bitches @ anon users)
628  Developer-visible changes:
629   * Python => Perl
630     - See the INSTALL file for prerequisites
631   * No installation: all-in-one script (excl. the 3rd party modules)
632   * Cache is now an integral part of clive, see CACHE in the manual page
633   * Embedded the --manual page (Pod)
634   * Improved Youtube login: removed is_adult HTTP get (done manually now)
635   * Grab the file suffix from the Content-Type header
636   * Improved GoogleVideo support: mp4 detection no more relies on English words
637   * Improved Metacafe support: removed unnecessary "familyfilter" HTTP get
639  Other:
640   * Project: moved
641     - 2.x+ at http://googlecode.com/p/clive/
642     - 1.x remains at http://gna.org/projects/clive
643   * Tarballs: moved
644     - 2.x+ at http://googlecode.com/p/clive/
645     - 1.x remain at http://dl.gna.org/clive
646   * Website: moved
647     - http://clive.sf.net/
648     - http://home.gna.org/clive redirects to the above
649   * SCM: SVN => Git
650     - 2.x+ at git://repo.or.cz/clive.git
651     - 1.x remains at svn://svn.gna.org/svn/clive
652   * Issue tracking: Moved
653     - 2.x+ at http://googlecode.com/p/clive/issues/
654     - 1.x bug tracker remains at http://gna.org/projects/clive
655   * Created http://googlegroups.com/group/clive-announce/
657 NOTE: See http://dl.gna.org/clive/CHANGES for 1.x.