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