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