Add: t/$host.t: NO_INTERNET variable support (closes issue #24).
[clive.git] / CHANGES
bloba35a893cac29d402e1fb68c27c24e313da05debc
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
14 Version 2.2.1
15 (June 21, 2009)
17  User-visible changes:
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
25   * Add: t/12error.t
28 Version 2.2.0
29 (June 14, 2009)
31 FOREWORD
32 --------
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
71 their introduction.
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.
82 SUMMARY of CHANGES
83 ------------------
85  User-visible changes:
87   * License change
88     1. ISC -> GPLv3
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
98     Example:
99     -----------------------------------------------
100         # Config::Tiny: clive 2.0 - 2.1
101         cat >> ~/.config/clive/config
102         [http]
103             proxy = "http://foo:1234"
104         [output]
105             savedir = "/home/user/videos"
107         # Getopt::ArgvFile: clive 2.2
108         cat >> ~/.cliverc
109         --proxy="http://foo:1234"
110         --savedir="/home/user/videos"
111     -----------------------------------------------
113   * Fix: Redtube video title parsing
115   * Cache changes
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 '#'
123     8. New field order
125   * File path changes
126     1. ~/.config/clive/config -> ~/.cliverc
127     2. ~/.config/clive/recall -> ~/.clivelast
128     3. ~/.config/clive/cache -> ~/.clivecache
130   * --format changes
131     1. Add: --format=best support (closes  issue #15 )
132     2. Rename: mp4 -> fmt18 (Youtube)
133     3. Rename: Dailymotion ID spark -> flv
135   * Bugfixes
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
142   * New options:
143     1. --home-dir
144     2. --recall-file
145     3. --cache-file
146     4. --no-cclass
147     5. --raw
148     6. --stop-after (closes issue #18)
150   * --emit-csv: changes to CSV fields (cleanup, print only the necessary fields)
151     1. clive 2.0 - 2.1:
152         page_link,          video_link,     filename,   file_length_mb,
153         file_length_bytes,  video_id,       time_stamp, page_title,
154         initial_length,     remaining_bytes
155     2. clive 2.2:
156         base_filename, file_length, video_link
158   * Remove options:
159     1. --savebatch
160     2. --renew (now obsolete)
161     3. --youtube-user (broken since 2.1)
162     4. --youtube-pass (...)
163     5. --no-login (...)
164     6. --clivepass (...)
165     7. --emit-xml
166     8. --background
167     9. --progress
168     10. --output
169     11. --append
170     12. --paste
171     13. --format=fmt6 
173   * Other changes:
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:
182   * OO Perl5 style
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
190     2. New prerequisites
191         o Class::Singleton
192         o Getopt::ArgvFile 
193     3. Removed prerequisites
194         o Config::Tiny
195         o IO::Pager
196         o Expect
197         o Clipboard 
198     4. Optional modules (no changes from 2.1.14)
199         o BerkeleyDB
200         o Term::ReadKey
202   * Change: use decode_utf8 returned html only if html is valid utf8
204   * Installation changes
205     1. Makefile.PL (ExtUtils::MakeMaker) [see README]
207   * Remove files:
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
217 Version 2.1.14
218 (May 25, 2009)
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
225     ** mp4_hd -> fmt22
226     ** 3gpp -> fmt17
227     ** xflv -> fmt6
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
234   * Update: INSTALL
236  Other:
237   * 2.2.0 is under development, read more here:
238     http://code.google.com/p/clive/wiki/WhatsNew_2_2_0
241 Version 2.1.13
242 (May 16, 2009)
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)
251 Version 2.1.12
252 (May 9, 2009)
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
262 Version 2.1.11
263 (April 29, 2009)
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"} ..."
269   * Add new options:
270     ** --connect-timeout
271     ** --connect-timeout-socks
272   * Cleanup: manual page
274  Developer-visible changes:
275   * Rename: auth_youtube subroutine -> loginto_youtube
277  Known-issues:
278   * Youtube login does not work (throw an error, patches welcome!)
281 Version 2.1.10
282 (April 4, 2009)
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
287 for clive.
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
297   * Add new options
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
318 Version 2.1.9
319 (March 27, 2009)
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'
331   * Fix Break support
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
340 Version 2.1.8
341 (March 24, 2009)
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:
354   * Makefile 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
359     - Cosmetic changes
360     - Add [output]:format to configrc
361   * Add tests/dmotion.url
364 Version 2.1.7
365 (March 15, 2009)
367  User-visible changes:
368   * Add --output-video option
369   * Add option groups to --help output
370   * Add --stream-exec and --stream options
371     - Ported from cclive
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
384     - Use regex instead
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
392   * Clean up regex
394  Other changes:
395   * Buried clive-list, grew weary of fighting spam with bare fists
396     - email the author directly or use the issue tracker, thanks
399 Version 2.1.6
400 (February 19, 2009)
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
414     - use --exec instead
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:
420   * Makefile changes
421     - additional INSTALL variables
422     - added WITH_CHECK
423     - can be used to disable module checks
424     - removed "man" from "all"
425     - removed "clean" (useless)
428 Version 2.1.5
429 (February 6, 2009)
431  User-visible changes:
432   * Fixed sevenload support
435 Version 2.1.4
436 (February 1, 2009)
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
447   * Updated INSTALL
448   * removed genman script (obsoleted by "make man")
449   * Added a rudimentary (GNU) Makefile
450   * Cleaned up translate_embed subroutine
452  Other changes:
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
462 Version 2.1.3
463 (January 9, 2009)
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
472   * Added LICENSE file
473   * Cleaned up FreeBSD details (INSTALL)
476 Version 2.1.2
477 (December 29, 2008)
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
490 Version 2.1.1
491 (December 19, 2008)
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
497     with the above error
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:
505   * Updated INSTALL
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
511 Version 2.1.0
512 (December 10, 2008)
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
525   * Removed COPYING
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)
530   * Updated INSTALL
531   * Made Expect module optional
534 Version 2.0.0
535 (December 2, 2008)
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
547 Version 2.0beta4
548 (November 22, 2008)
550  Notes:
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:
563    * Added TODO file
564    * New prerequisite module: Expect
565    * Updated FreeBSD + Ubuntu details (INSTALL)
566    * Cleaned up some code
567    * Rewrote embed URL translation
569  Known issues:
570    * Metacafe support broken (http/404)
573 version 2.0beta3
574 (November 1, 2008)
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
605 Version 2.0beta2
606 (October 15, 2008)
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
624 Version 2.0beta1
625 (September 23, 2008)
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:
644   * Python => Perl
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
654  Other:
655   * Project: moved
656     - 2.x+ at http://googlecode.com/p/clive/
657     - 1.x remains at http://gna.org/projects/clive
658   * Tarballs: moved
659     - 2.x+ at http://googlecode.com/p/clive/
660     - 1.x remain at http://dl.gna.org/clive
661   * Website: moved
662     - http://clive.sf.net/
663     - http://home.gna.org/clive redirects to the above
664   * SCM: SVN => Git
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.