Manual: add an example for -r.
[clive.git] / CHANGES
blobe2d5b6d5fb7dcdce7404d5473c0422bbeaa1dad7
1 Version 2.2.0
3 FOREWORD
5 This release is a major overhaul aimed to fix the previous design flaws
6 and clean up the codebase. Note that 2.2.0 will break compatibility with
7 the earlier versions, see the summary of changes further below for the
8 details. For most users most of these changes are transparent but those
9 who have used clive for anything else than "clive URL" should read the
10 changes carefully.
12 2.2.0 changes the license from ISC back to GPLv3.
14 The changes made to the core elements of the project in 2.2.0 are
15 reflecting the need to stabilize these seemingly ever-changing parts
16 of clive. The config file format which was last changed in 2.0.0 is one
17 of such parts. 2.2.0 tries to correct this by using Getopt::ArgvFile
18 which allows defining the command line options in the config file (example
19 further below). This should eliminate the need to remember confusing
20 config file variable names and ease the transition as new features are
21 implemented.
23 2.2.0 makes some radical changes to the use of cache which was previously
24 enabled by default to reuse the video details if a video was re-extracted
25 again. With this release, clive no longer attempts to reuse the cache
26 details by default -- instead the users are expected to invoke the
27 --cache-read option.
29 The cache, while arguably useful in some cases, has turned out to be the
30 most controversial feature of clive. Majority of the issues that people
31 have reported have been about the infamous HTTP 404 error with Youtube.
32 Most of those issues could be linked to expired Youtube video links
33 that clive used from the cache records.
35 clive still saves the parsed video details to the cache (if BerkeleyDB
36 module is installed) by default but even this can be disabled with
37 --no-cache.
39 There are significant changes to the --emit-csv output. Only those
40 fields are now printed that are known to be any real use to anyone.
41 If there is need for additional fields, please contact the author.
43 Other changes made in 2.2.0 include removing a number of less useful
44 features that have lingered in the project since 1.x. In some ways,
45 upgrading to 2.2.0 could be compared to upgrading from 1.x to 2.x.
47 From the developer point of view there are mainly two notable changes:
48 Getopt::ArgvFile and new the OO design. Getopt::ArgvFile allowed to
49 remove a chunk of code from clive that was encumbering the codebase,
50 and the new OO design should make clive more adaptable to anyone who
51 is looking to take a hack at it.
53 Package and port maintainers will want to read the README file. The
54 previously used GNU Makefile is now gone clive uses ExtUtils::MakeMaker
55 instead which should be a welcome change to those familiar with Perl.
57 SUMMARY of CHANGES
59  User-visible changes:
61   * License change
62     1. ISC -> GPLv3
63     2. Last changed in 2.1.0
65   * Slight improvements to program startup time
67   * Config file format changes (Config::Tiny -> Getopt::ArgvFile)
68     1. Command line options can now be used in config file
69     2. Breaks compatibility with previous versions 
70     3. Cleaner and new format allows using cmdline options in configs
71     4. Format was last changed in 2.0.0
72     Example:
73     -----------------------------------------------
74         # Config::Tiny: clive 2.0 - 2.1
75         cat >> ~/.config/clive/config
76         [http]
77             proxy = "http://foo:1234"
78         [output]
79             savedir = "/home/user/videos"
81         # Getopt::ArgvFile: clive 2.2
82         cat >> ~/.cliverc
83         --proxy="http://foo:1234"
84         --savedir="/home/user/videos"
85     -----------------------------------------------
87   * Cache changes
88     1. Cache is now passive (read:no, write:yes)
89     2. Add: --cache- option prefix
90     3. New option: --cache-read, --no-cache
91     5. Rename: misc. options (e.g. --show -> --cache-dump)
92     6. Record field changes
93         o Breaks compatibility with previous versions 
94     7. New field delimiter '#'
95     8. New field order
97   * File path changes
98     1. ~/.config/clive/config -> ~/.cliverc
99     2. ~/.config/clive/recall -> ~/.clivelast
100     3. ~/.config/clive/cache -> ~/.clivecache
102   * --format changes
103     1. Add: --format=best support (closes  issue #15 )
104     2. Rename: mp4 -> fmt18 (Youtube)
105     3. Rename: Dailymotion ID spark -> flv
107   * Bugfixes
108     1. cURL error handling
109     2. Google mp4 support
110     3. Do not strip link params (closes debian bug #530659)
111     4. --format=fmt6 (no longer supported by Youtube?) 
112     5. Dailymotion ID parsing
114   * New options:
115     1. --home-dir
116     2. --recall-file
117     3. --cache-file
119   * --emit-csv: changes to CSV fields (cleanup, print only the necessary fields)
120     1. clive 2.0 - 2.1:
121         page_link,          video_link,     filename,   file_length_mb,
122         file_length_bytes,  video_id,       time_stamp, page_title,
123         initial_length,     remaining_bytes
124     2. clive 2.2:
125         base_filename, file_length, video_link
127   * Remove options:
128     1. --savebatch
129     2. --renew (now obsolete)
130     3. --youtube-user (broken since 2.1)
131     4. --youtube-pass (...)
132     5. --no-login (...)
133     6. --clivepass (...)
134     7. --emit-xml
135     8. --background
136     9. --progress
137     10. --output
138     11. --append
139     12. --paste
140     13. --format=fmt6 
142   * Other changes:
143     1. Long options: aliases (e.g. --output_file | --output-file | --outputfile)
144     2. --filename-format: new specifiers, rename some of the old ones
145     3. --format: exit with an error if id is not recognized by clive
146     4. Rename: -r -> -l (--recall) 
147     5. Many short options have been removed (or reused)
149  Developer-visible changes:
151   * OO Perl5 style
153   * Prerequisite changes
154     1. Written for Perl 5.10.0
155         o 5.8 probably OK although unverified
156     2. New prerequisites
157         o Class::Singleton
158         o Getopt::ArgvFile 
159     3. Removed prerequisites
160         o Config::Tiny
161         o IO::Pager
162         o Expect
163         o Clipboard 
164     4. Optional modules (no changes from 2.1.14)
165         o BerkeleyDB
166         o Term::ReadKey
168   * Installation changes
169     1. Makefile.PL (ExtUtils::MakeMaker) [see README]
171   * Remove files:
172     1. Makefile (obsoleted by Makefile.PL)
173     2. clive.pod (merged into bin/clive)
174     3. clive.1 (generated from bin/clive)
177 Version 2.1.14
178 (May 25, 2009)
180  User-visible changes:
181   * Add: support for youtube-nocookie.com (closes issue #12)
182   * Add: fmt35 format ID for Youtube [closes issue #10 (and #13)]
183   * Fix: liveleak id parsing
184   * Rename: --format IDs for Youtube
185     ** mp4_hd -> fmt22
186     ** 3gpp -> fmt17
187     ** xflv -> fmt6
188   * Rename: --output-video -> --output-file
189   * Rename: output:file -> output:filename_format (config file)
190   * Remove: --overwrite option (use --output-file instead)
192  Developer-visible changes:
193   * Add: tests/ytube-nocookies.url
194   * Update: INSTALL
196  Other:
197   * 2.2.0 is under development, read more here:
198     http://code.google.com/p/clive/wiki/WhatsNew_2_2_0
201 Version 2.1.13
202 (May 16, 2009)
204  Developer-visible changes:
205   * Change: use perltidy defaults for style
206   * Change: BerkeleyDB and File::Path modules are now optional
207     ** Cache features depend on these modules
208   * Moved opted_mods initilization to init_opted_mods (-> loop)
211 Version 2.1.12
212 (May 9, 2009)
214  User-visible changes:
215   * Change: --connect-timeout, --connect-timeout-socks default -> 30s
216   * Fix: timeout after file transfer starts
217   * Fix: title parsing with custom character class (closes issue #8)
218   * Add: redtube support; thanks to anonprn2@gmail.com (closes issue #11)
219   * Fix: typo in --emit-xml --help string
222 Version 2.1.11
223 (April 29, 2009)
225  User-visible changes:
226   * Change: --youtube-pass: prompt for password if left undefined
227   * Change: --filename-format: default -> "%t.%s"
228   * Fix: "Use of uninitialized value $opts{"ytpass"} ..."
229   * Add new options:
230     ** --connect-timeout
231     ** --connect-timeout-socks
232   * Cleanup: manual page
234  Developer-visible changes:
235   * Rename: auth_youtube subroutine -> loginto_youtube
237  Known-issues:
238   * Youtube login does not work (throw an error, patches welcome!)
241 Version 2.1.10
242 (April 4, 2009)
244 NOTE: This release changes the clive status messages. This will likely
245 break compatibility with utilities that depend on these messages.
246 The changes were made to enable using abby (0.2.0+) as a front-end
247 for clive.
249  User-visible changes:
250   * Add abby (front-end) compatibility
251     - Change output similar to cclive
252     - http://code.google.com/p/abby/
253   * Add Youtube HD support (--format=mp4_hd)
254     - Thanks to bf for the patch (via FreeBSD ports)
255   * Add tv.cctv.com support [issue #6]
256     - Thanks to suntong001 for data mining
257   * Add new options
258     - --limit-rate (config: [http]:limit_rate)
259     - --hosts (print supported hosts to stdout)
260     - --stderr (redirect all output to stderr instead of stdout)
261   * Improve file suffix parsing from content-type
262     - Rewrite the content-type handling block in query_video_length
263     - Use whatever is found after slash in the content-type string
264     - Use "flv" for exceptions (e.g. octet-*, x-flv, etc.)
265   * Replace dashes in video IDs with underscores before using them in fnames
266   * Change --version output
267   * Fix reading from stdin (closes Debian #522422)
268     - Assume reading from stdin only if queue and argv arrays are empty
269   * Fix exit with status code
270     - Exit 0 on success, and >0 if an error occurs
272  Developer-visible changes:
273   * Update examples/config with limit_rate
274   * Rename: configrc -> examples/config
275   * Replace the monstrous if-elsif-$host code block with a loop
278 Version 2.1.9
279 (March 27, 2009)
281  User-visible changes:
282   * Fix GoogleVideo "id not found" handling
283     - Symptom: exit after "process page..." message
284     - Cause: no check for undefined id value
285   * Fix GoogleVideo support
286     - Symptom: see above fix
287     - Cause: HTML changes to the video pages
288   * Fix URI::Escape import for GoogleVideo redirects
289     - Symptom: crash with "Undefined subroutine &URI::Escape::uri_unescape"
290     - Cause: recent script start optimizations; a missing 'require'
291   * Fix Break support
292     - Symptom: "expected different content-type"
293     - Cause: website content-type changes
295  Developer-visible changes:
296   * Cleanup code (style-wise)
297     - perltidy -gnu -l=72
300 Version 2.1.8
301 (March 24, 2009)
303  User-visible changes:
304   * Keep URL queue order
305     - Remove duplicate URL checking
306   * Remove --modver, change --version output
307   * Update manual page (clive.1, clive.pod)
308     - Rewrite EXAMPLES section
309     - Cleanup other sections
310   * Config file: add support for [output]:format (--format)
311   * Port dailymotion support from cclive
313  Developer-visible changes:
314   * Makefile changes:
315     - Replace Perl module checking with for-loops (incl. optional)
316   * Optimize script start time
317     - Replace "use $module" with "require $module" where possible
318   * Update LICENSE, configrc
319     - Cosmetic changes
320     - Add [output]:format to configrc
321   * Add tests/dmotion.url
324 Version 2.1.7
325 (March 15, 2009)
327  User-visible changes:
328   * Add --output-video option
329   * Add option groups to --help output
330   * Add --stream-exec and --stream options
331     - Ported from cclive
332   * Config file: add support for
333     - [commands]:exec (--exec)
334     - [commands]:stream (--stream-exec)
335     - See configrc for an example
336   * Fix --exec; should no longer spew out "not found" shell errors
337   * Change default filename format to "%t_%d_%i.%s"
338   * Change to use "file is already fully retrieved" error message
339   * Port resizing progressbar from cclive
341  Developer-visible changes:
342   * Add tests/lastfm.url and tests/multi.lst
343   * Remove XML::Simple dependency
344     - Use regex instead
345   * Implement SIGWINCH handling
346     - Resize progressbar to match terminal width
347     - Progressbar width defaults to 80 (chars)
348     - OS must support SIGWINCH
349     - Requires Term::ReadKey module
350       - clive works without the module but will ignore any SIGWINCH events
351   * Touch cclive.1, cclive.pod, INSTALL and Makefile files
352   * Clean up regex
354  Other changes:
355   * Buried clive-list, grew weary of fighting spam with bare fists
356     - email the author directly or use the issue tracker, thanks
359 Version 2.1.6
360 (February 19, 2009)
362  User-visible changes:
363   * Renamed the following options
364     - --noproxy => --no-proxy
365     - --noextract => --no-extract
366     - --nologin => --no-login
367   * Butchered --help output
368     - much less verbose now
369     - relocated manual page data to clive.pod
370   * Removed --manual option
371   * Obsoleted "play" and "rencode" config keys in "commands" section
372   * Added --exec option which resembles cclive's --exec command
373   * Removed --play, --noplay, --rencode and --norencode options
374     - use --exec instead
375   * Changed --paste short option from '-x' to '-p'
376   * Removed wmv format (breakcom)
377     - persistant HTTP/404 (not found) error
379  Developer-visible changes:
380   * Makefile changes
381     - additional INSTALL variables
382     - added WITH_CHECK
383     - can be used to disable module checks
384     - removed "man" from "all"
385     - removed "clean" (useless)
388 Version 2.1.5
389 (February 6, 2009)
391  User-visible changes:
392   * Fixed sevenload support
395 Version 2.1.4
396 (February 1, 2009)
398  User-visible changes:
399   * Fixed Youtube login which sometimes reported failed attempts as OK
400     - Youtube defaults web interface language based on users ip
401     - clive looks for English words in the post-login page to confirm login
402   * Tweaked --version output
404  Developer-visible changes:
405   * Removed metacafe remnants
406   * Fixed bug in time2str subroutine which caused incorrect calculations
407   * Updated INSTALL
408   * removed genman script (obsoleted by "make man")
409   * Added a rudimentary (GNU) Makefile
410   * Cleaned up translate_embed subroutine
412  Other changes:
413   * Removed the clive-announce and clive-users mailing lists
414     - New release announcements will be posted via Freshmeat alone from now on
415     - Subscribe to the project at http://freshmeat.net/projects/clive
416   * Created the clive-list@googlegroups.com mailing-list
417     - For support questions, patches and bug reports
418     - Issue tracker will remain for tracking bugs
419     - Send an email to clive-list-subscribe@googlegroups.com to subscribe
422 Version 2.1.3
423 (January 9, 2009)
425  User-visible changes:
426   * Documented missing "%t" (--filename-format) in manual page
427   * Tweaked "localfile_length == remotefile_length" message
428   * Renamed CLIVE_CONFIGDIR environment variable to CLIVE_HOME
430  Developer-visible changes:
431   * Cleaned up manual page
432   * Added LICENSE file
433   * Cleaned up FreeBSD details (INSTALL)
436 Version 2.1.2
437 (December 29, 2008)
439  User-visible changes:
440   * Removed "See --manual" from --version output
441   * Added support for evisortv
442     - http://code.google.com/p/clive/issues/detail?id=4
443   * Fixed: reused incorrectly last http error code for remaining urls in queue
444   * Fixed: progressbar reported 100% even if error had occurred (e.g. http/403)
446  Developer-visible changes:
447   * Cleaned up subroutines
450 Version 2.1.1
451 (December 19, 2008)
453  User-visible changes:
454   * Fixed "Requested range was not delivered by the server (http/33)" w/ -c
455     - this would occur with a batch of URLs while using the --continue option,
456     e.g. if the first file was continued, the following page fetches exited
457     with the above error
458   * Added --savebatch option
459   * Added --overwrite option
460   * Replaced the buggy progressbar with a "lazy man's progressbar"
461   * Fixed "print() on closed filehandle STDOUT" with --grep+delete
462   * Fixed progressbar display with --continue
464  Developer-visible changes:
465   * Updated INSTALL
466   * Started to bundle src tarball with clive.1 manual page
467   * Added genman script which wraps pod2man with common options
468   * Fixed a potential div by zero bug in calc_progress
471 Version 2.1.0
472 (December 10, 2008)
474  NOTE: Changed license GPL3 => ISC/OpenBSD.
476  User-visible changes:
477   * Added --modversion option
478   * Replaced Term::Progressbar with a built-in thermometer progressbar
479   * Removed --progress=bar:nominor support due to above changes
480   * Added liveleakcom support
481     - http://code.google.com/p/clive/issues/detail?id=3
483  Developer-visible changes:
484   * Made IO::Pager module optional
485   * Removed COPYING
486   * Cleaned up --progress option description
487   * Changed to require WWW::Curl 4.05+
488   * Removed Term::Progress module dependency
489   * Fixed a potential bug in calc_progress (improper $rate init)
490   * Updated INSTALL
491   * Made Expect module optional
494 Version 2.0.0
495 (December 2, 2008)
497  User-visible changes:
498    * Fixed gvideo/mp4 support (http/404 even if the extraction link existed)
499    * Changed "found redirect" message
500    * Changed --play, --rencode status messages to use file basename
502  Developer-visible changes:
503    * decode_utf8($page): removes extra steps, works better with HTML::TokeParser
504    * Added missing Expect module version to INSTALL
507 Version 2.0beta4
508 (November 22, 2008)
510  Notes:
511    This aims to be the last beta before the release of 2.0 in December 2008.
512    Please report any remaining bugs to the issue tracker at:
513      http://code.google.com/p/clive/issues/list
515  User-visible changes:
516    * Removed metacafe support until fixed (see known issues)
517    * Changed Youtube login to report if there were "too many login failures"
518    * Fixed Youtube login support: reported failures incorrectly as OK
519    * Added support clivepass(1) utility (http://code.google.com/p/clive-utils)
520    * Added support for metacafe and sevenload embed URL translation
522  Developer-visible changes:
523    * Added TODO file
524    * New prerequisite module: Expect
525    * Updated FreeBSD + Ubuntu details (INSTALL)
526    * Cleaned up some code
527    * Rewrote embed URL translation
529  Known issues:
530    * Metacafe support broken (http/404)
533 version 2.0beta3
534 (November 1, 2008)
536  User-visible changes:
537   * Fixed pasting from clipboard containing multiple URLs
538   * Fixed page fetch progress glitch that occured with 1+ batches
539   * Added --agent option
540   * Added --proxy option
541   * Added --savedir option
542   * Added --cclass option
543   * Added --filename-format option
544   * Added --show-format option
545   * Added --youtube-user and --youtube-pass options
546   * Added --emit-xml option
547   * Added --progress=[none|bar|dot]
548   * Replaced --noprogress with --progress=none
549   * Added avg. transfer rate notification
550   * Fixed filename printing for existing output files (e.g. output.flv.1)
551   * Added --play option
552   * Fixed metacafe support (error: failed to extract videoCDNURL)
553   * Added --rencode option
555  Developer-visible changes:
556   * Ported --emit-csv option from 1.x with minor changes
557     - Backwards compatible with 1.x
558     - Prints additional video details
559         - $length, $video_id, $time_stamp, $page_title, $cont_from, $remaining
560   * Changed to prefer 'dot' bar if the output is not a TTY
561   * Replaced progress bar with Term::ProgressBar (new module prerequisite)
562   * Cleaned up queue processing subroutine
565 Version 2.0beta2
566 (October 15, 2008)
568  User-visible changes:
569   * clive now ignores input lines that start with the '#' character
570   * Added support for CLIVE_CONFIGDIR environment variable
571   * Ported lastfm video support from 1.x
572   * --version now displays XML::Simple
573   * Changed "= Play:" to "=> Playing ..."
574   * Playing occurs now subsequently after going over the URL batch
576  Developer-visible changes:
577   * Removed a google video redirect (commented out, see code)
578   * Added the AUTHORS file
579   * XML::Simple was missing as a prerequisite in INSTALL
580   * Made minor syntactic tweaks to the source code
581   * Fixed missing --quiet check with the "=> Play" message
584 Version 2.0beta1
585 (September 23, 2008)
587 A complete overhaul and rewrite of 1.x.
589  User-visible changes:
590   * Users are expected to use the --continue/-c option to resume transfers
591   * Configuration file format (=> INI), path was changed (=> ~/.config/clive)
592   * All extractions now assume flv as the default download format
593   * Users are expected to understand when/how use the --format/-f option
594   * Reading input from multiple sources is possible (e.g. % clive -x URL URL)
595   * Added: --grep: used to grep and recall cached URL entries
596   * Added: --background and --output=logfile, --append=logfile options
597   * Many old cmdline and config options were removed due to new design
598   * Improved GoogleVideo support: handles redirects to other hosts
599   * Pager is used where needed (e.g. --show/-s)
600   * Changed default output file naming format to "%n-(%i)-[%d].%s"
601   * Removed: guba (deadweight), myvideo (borked), dmotion (bitches @ anon users)
603  Developer-visible changes:
604   * Python => Perl
605     - See the INSTALL file for prerequisites
606   * No installation: all-in-one script (excl. the 3rd party modules)
607   * Cache is now an integral part of clive, see CACHE in the manual page
608   * Embedded the --manual page (Pod)
609   * Improved Youtube login: removed is_adult HTTP get (done manually now)
610   * Grab the file suffix from the Content-Type header
611   * Improved GoogleVideo support: mp4 detection no more relies on English words
612   * Improved Metacafe support: removed unnecessary "familyfilter" HTTP get
614  Other:
615   * Project: moved
616     - 2.x+ at http://googlecode.com/p/clive/
617     - 1.x remains at http://gna.org/projects/clive
618   * Tarballs: moved
619     - 2.x+ at http://googlecode.com/p/clive/
620     - 1.x remain at http://dl.gna.org/clive
621   * Website: moved
622     - http://clive.sf.net/
623     - http://home.gna.org/clive redirects to the above
624   * SCM: SVN => Git
625     - 2.x+ at git://repo.or.cz/clive.git
626     - 1.x remains at svn://svn.gna.org/svn/clive
627   * Issue tracking: Moved
628     - 2.x+ at http://googlecode.com/p/clive/issues/
629     - 1.x bug tracker remains at http://gna.org/projects/clive
630   * Created http://googlegroups.com/group/clive-announce/
632 NOTE: See http://dl.gna.org/clive/CHANGES for 1.x.