Overview
Submit package home:dnh:branches:Multimedia / clive to package Multimedia / clive
clive.changes
Changed
x
1
2
-------------------------------------------------------------------
3
+Sun Jul 7 2012 - dnh@opensuse.org
4
+
5
+- update to 2.3.3
6
+
7
+-------------------------------------------------------------------
8
+Thu Aug 11 2011 - dnh@opensuse.org
9
+
10
+- update to 2.3.1.1
11
+
12
+-------------------------------------------------------------------
13
+Sat May 14 2011 - dnh@opensuse.org
14
+
15
+- update to 2.3.0.3
16
+
17
+-------------------------------------------------------------------
18
+Sun Mar 6 2011 - dnh@opensuse.org
19
+
20
+- update to 2.2.23
21
+
22
+-------------------------------------------------------------------
23
Thu Jan 20 06:20:19 UTC 2011 - pascal.bleser@opensuse.org
24
25
- update to 2.2.22:
26
clive.spec
Changed
105
1
2
# vim: set sw=4 ts=4 et nu:
3
4
Name: clive
5
-Version: 2.2.22
6
-Release: 0.pm.1
7
+Version: 2.3.3
8
+Release: 1.pm.1
9
Summary: Non-Interactive Video Extraction Utility
10
# http://prdownloads.sourceforge.net/clive/clive-%{version}.tar.gz
11
-Source: clive-%{version}.tar.bz2
12
-# pbleser: don't use explain, as it requires a newer perl(version)
13
-Patch1: clive-backport.patch
14
+Source: clive-%{version}.tar.gz
15
Source99: clive-rpmlintrc
16
URL: http://clive.sourceforge.net/
17
Group: Productivity/Networking/Other
18
License: ISC/OpenBSD
19
BuildRoot: %{_tmppath}/build-%{name}-%{version}
20
BuildRequires: perl
21
-BuildRequires: perl(IO::Pager)
22
-BuildRequires: perl(BerkeleyDB)
23
-BuildRequires: perl(Expect)
24
-BuildRequires: perl(Config::Tiny)
25
-BuildRequires: perl(WWW::Curl)
26
-BuildRequires: perl(Term::ProgressBar)
27
-BuildRequires: perl(Clipboard)
28
BuildRequires: perl(Getopt::ArgvFile)
29
-BuildRequires: perl(Class::Singleton)
30
-BuildRequires: perl(version) >= 0.77
31
+BuildRequires: perl(Test::Pod) >= 1.00
32
+BuildRequires: perl-version >= 0.77
33
+BuildRequires: perl(JSON::XS) >= 2.3
34
+Requires: ffmpeg quvi
35
Requires: perl = %{perl_version}
36
-Requires: ffmpeg
37
-Requires: perl(IO::Pager)
38
-Requires: perl(BerkeleyDB)
39
-Requires: perl(Expect)
40
-Requires: perl(Config::Tiny)
41
-Requires: perl(WWW::Curl)
42
-Requires: perl(Term::ProgressBar)
43
-Requires: perl(Clipboard)
44
+Requires: perl-version >= 0.77
45
+Requires: perl(JSON::XS) >= 2.3
46
Requires: perl(Getopt::ArgvFile)
47
-Requires: perl(Class::Singleton)
48
-%if 0%{?suse_version} >= 1120
49
-BuildRequires: perl(HTML::Parser)
50
-Requires: perl(HTML::Parser)
51
-BuildRequires: perl(URI)
52
-Requires: perl(URI)
53
-%else
54
-BuildRequires: perl-HTML-Parser
55
-Requires: perl-HTML-Parser
56
-BuildRequires: perl-URI
57
-Requires: perl-URI
58
-%endif
59
BuildArch: noarch
60
61
%description
62
63
64
%prep
65
%setup -q
66
-%if 0%{?suse_version} < 1130
67
-%patch1
68
-%endif
69
%__sed -i '/^auto_install/d' Makefile.PL
70
71
%build
72
+export PERL5LIB="%{perl_vendorarch}:%perl_vendorlib:$(perl -V:vendorlib_stem)"
73
%__perl Makefile.PL PREFIX="%{_prefix}"
74
%__make %{?jobs:-j%{jobs}}
75
76
%install
77
%perl_make_install
78
%perl_process_packlist
79
-
80
%__rm -rf "%{buildroot}%{perl_vendorarch}/auto/clive"
81
-
82
-%__rm -f "%{buildroot}/var/adm/perl-modules/%{name}"
83
+%__rm -f "%{buildroot}%{perl_vendorarch}/auto/.packlist"
84
85
%check
86
%if 0%{?opensuse_bs:1}
87
export NO_INTERNET=1
88
%endif
89
-%__make test
90
+%__make PERL5LIB="%{perl_vendorarch}:$PERL5LIB" test
91
92
%clean
93
%{?buildroot:%__rm -rf "%{buildroot}"}
94
95
%doc ChangeLog COPYING README
96
%doc examples
97
%{_bindir}/clive
98
-%{perl_vendorlib}/clive
99
%doc %{_mandir}/man1/clive.1%{ext_man}
100
+%if 0%{?suse_version} < 1140
101
+/var/adm/perl-modules/clive
102
+%endif
103
104
+%changelog
105
clive-backport.patch
Deleted
21
1
2
---- lib/clive/Config.pm.orig 2011-01-20 07:23:47.000000000 +0100
3
-+++ lib/clive/Config.pm 2011-01-20 07:27:33.000000000 +0100
4
-@@ -40,7 +40,7 @@
5
- use clive::Compat;
6
- use clive::Error qw(CLIVE_OK CLIVE_OPTARG);
7
-
8
--use version 0.77 (); our $VERSION = version->declare ("2.2.22");
9
-+use version 0.74 (); our $VERSION = version->new("2.2.22");
10
-
11
- sub init {
12
- my $self = shift;
13
---- t/eval-compile.t.orig 2011-01-20 07:24:08.000000000 +0100
14
-+++ t/eval-compile.t 2011-01-20 07:24:17.000000000 +0100
15
-@@ -6,4 +6,4 @@
16
- my $output = qx(perl -c -I./blib/lib blib/script/clive 2>&1);
17
-
18
- ok( $output =~ /syntax OK$/ )
19
-- or diag explain $output;
20
-+ or die $output;
21
clive-2.2.22.tar.bz2/ChangeLog.pre-gitlog
Deleted
965
1
2
-
3
-2.2.18 Tue Nov 30 2010 legatvs
4
-Changes:
5
- - Change google test URL
6
- - Accept dailymotion swf URLs (related b#3115846)
7
-
8
-
9
-2.2.17 Sat Nov 06 2010 legatvs
10
-Changes:
11
- - toUnits: fix hi-speed issue, thanks to Thomas Klausner for the report
12
- - Makefile.PL: Use VERSION_FROM
13
- - Use 'version' module
14
-
15
-
16
-Version 2.2.16
17
-September 28, 2010
18
-
19
-Changes:
20
- * Add support for webm_480p, webm_720p youtube
21
- * Thanks to Mark Weaver for the patch, <http://is.gd/fmwv5>
22
- * Misc. minor tweaks in manual (e.g. URLs, etc.)
23
- * Migrate issue tracking from Googlecode to Sourceforge, <http://is.gd/fmylF>
24
-
25
-
26
-Version 2.2.15
27
-September 10, 2010
28
-
29
-Changes:
30
- * New Youtube test URL
31
- * --format, "flv" is now called "default"
32
- * Add Youtube 1080p support (#62)
33
- * Update Youtube format IDs to match those used with quvi
34
-
35
-Bugfixes:
36
- * Vimeo support (http/404), thanks to Jonas Smedegaard for the fix (#61)
37
- - <http://bugs.debian.org/595486>
38
-
39
-
40
-Version 2.2.14
41
-September 2, 2010
42
-
43
-Bugfixes:
44
- * Output File path encoding (#60)
45
-
46
-
47
-Version 2.2.13
48
-August 12, 2010
49
-
50
-Changes:
51
- * Add --license option
52
-
53
-
54
-Version 2.2.12
55
-July 25, 2010
56
-
57
-Changes:
58
- * Mark cctv support as broken
59
-
60
-Bugfixes:
61
- * youtube http/404, ported from quvi, fix by Daniel Schaal (quvi #7)
62
- * break.com support, thanks to Werner Elsler for the fix (#57)
63
-
64
-
65
-Version 2.2.11
66
---------------
67
-April 3, 2010
68
-
69
-Bugfixes:
70
- * Youtube, update patterns to reflect website changes
71
-
72
-
73
-Version 2.2.10
74
---------------
75
-March 24, 2010
76
-
77
-Changes:
78
- * Add buzzhumor.com support
79
- * Mark ehrensenf.de support as broken
80
-
81
-Bugfixes:
82
- * Update --hosts format strings
83
- * dailymotion.com
84
- # Change format IDs to reflect website changes (yet again):
85
- * h264-hd -> hd
86
- * h264-hq -> hq
87
- * removed h264 and spark-mini (no longer even listed)
88
- # Parse title from elsewhere
89
- * Title was previously parsed from the title HTML tag
90
- * Which usually contained more than we cared for
91
- # Spew out an error if the video looks like a partner video
92
- * break.com
93
- # Support, thanks to Werner Elsler for the fix
94
- # Title parsing, ported from libquvi
95
-
96
-
97
-Version 2.2.9
98
-(February 13, 2010)
99
-
100
- User-visible changes:
101
- * Fix dailymotion formats
102
- - vp6-hd -> h264-hd
103
- - vp6-hq -> h264-hq
104
- - vp6 -> h264
105
- * Fix vimeo support
106
- # closes issue #49
107
- * Partial fix: cctv: dump multi-segment video links
108
- # single-segment videos are still copied normally
109
- # closes issue #45 (for now)
110
-
111
- Developer-visible changes:
112
- * Rename CHANGES -> ChangeLog
113
- * Add NEWS file
114
- * Remove dead test link:
115
- # tlinks/sload.url
116
- # t/10sevenload.t
117
-
118
-
119
-Version 2.2.8
120
-(December 18, 2009)
121
-
122
- User-visible changes:
123
- * Remove the remains of the redtube support
124
- * Do not replace dashes with underscores in IDs (closes issue #44)
125
- * Sevenload:
126
- # Fix http/401 error
127
- # Cleanup title parsing (use config data instead)
128
- * Croak with an error if BerkeleyDB module is not found
129
- # And either -d or -g options are used
130
-
131
-
132
-Version 2.2.7
133
-(September 29, 2009)
134
-
135
- User-visible changes:
136
- * Fix: dailymotion id parsing
137
- * Youtube:
138
- # Accept -f fmt34
139
- # fmt34 is now treated as yet another (new?) format
140
- # Rewrite youtube section of the FORMATS in the manual
141
- * Fix: --format=best not working with youtube (closes issue #39)
142
- # Thanks to Peter Baranyi for the fix
143
-
144
- Developer-visible changes:
145
- * Disable: t/11redtube.t (broken, see known issues)
146
- * "make test": ADULT_OK env.var. now enables redtube test
147
-
148
- Known issues:
149
- * redtube: broken (verify -> http/404)
150
-
151
-
152
-Version 2.2.6
153
-(September 14, 2009)
154
-
155
- User-visible changes:
156
- * Fix: liveleak: "error: Unsupported protocol (http/1)" (closes #36)
157
- * Fix: vimeo: title parsing (Thanks to Peter Baranyi for the fix, closes #37)
158
- - Fixes title issues with accented chars
159
- * Fix: break: http/403 (Thanks to Werner Elsler for the fix, closes #38)
160
-
161
- Developer-visible changes:
162
- * t/11redtube.t: fix dead link
163
-
164
-
165
-Version 2.2.5
166
-(August 14, 2009)
167
-
168
- User-visible changes:
169
- * Add: --print-fname option
170
- * Fix: dailymotion ID parsing
171
- * Fix: --hosts: dailymotion: spak-mini -> spark-mini
172
- * Zeropad ETA
173
-
174
- Developer-visible changes:
175
- * Correct copyright years and notices in source code
176
- * tlinks/youtube-utf8.url: fix dead link
177
-
178
-
179
-Version 2.2.4
180
-(August 2, 2009)
181
-
182
- User-visible changes:
183
- * Add:
184
- # --stream-pass option (port from cclive)
185
- # funnyhub support
186
- * Port from cclive
187
- # myubo support
188
- * Port from cclive
189
- # clipfish support
190
- * Thanks to Patrick Hoffmann <patrick@sobran.de> for data mining
191
- * Fix:
192
- # Misc. typos in manual
193
- # Redtube support (videoid/title parsing issues)
194
- # Dailymotion: spak-mini -> spark-mini
195
- * Change:
196
- # replace dashes ("-") with underscores ("_") in video ids
197
-
198
- Developer-visible changes:
199
- * Add:
200
- # Host/Clipfish.pm
201
- # Host/Funnyhub.pm
202
- # Host/Myubo.pm
203
- # t/16clipfish.t
204
- # t/17funnyhub.t
205
- # t/18funnyhub.t
206
- # tlinks/clipfish.url
207
- # tlinks/funnyhub.url
208
- # tlinks/myubo.url
209
- * Change:
210
- # t/02youtube.t: test link (dead link)
211
- # tlinks/ytube.url: ditto
212
- # tlinks/multi.url: youtube: ditto
213
- * Remove:
214
- # tlinks/multi.lst
215
-
216
-
217
-Version 2.2.3
218
-(July 25, 2009)
219
-
220
- User-visible changes:
221
- * Add:
222
- 1. Support spiegel.de (closes issue #32) thanks to anon for data
223
- 2. Support golem.de (closes issue #33) thanks to anon for data
224
- 3. ~/.clive/config path support
225
- 4. --cookie-jar option
226
- 5. Support for ehrensenf.de (closes issue #34) thanks to bjoern for data
227
- * Improve: unicode support (related to issue #29)
228
- 1. cctv: no longer requires -C and -R options (obsoletes -R)
229
- 2. --cclass: now works as expected with unicode as well
230
- * Improve: backwards compatibility with clive 2.0, 2.1
231
- 1. Allow --format=(mp4|hd|hq|3gp) (closes Debian bug #535957)
232
- 2. Restore ~/.config/clive/config path support (closes Debian bug #535483)
233
- 3. Add --upgrade-config (2.0/2.1 config to 2.2+ format)
234
- * Change:
235
- 1. --hosts prints now supported formats
236
- 2. Pair --exec with --exec-run, the latter now triggers the former
237
- 2.1. Closes Debian bug #520520
238
- 3. Relocate files
239
- 3.1. ~/.clivelast -> ~/.cache/clive/last
240
- 3.2. ~/.clivecache -> ~/.cache/clive/cache
241
- 4. If HOME environment variable undefined, assume current workdir
242
- 5. --version: print locale etc.
243
- * Fix:
244
- 1. --version: copyright years
245
- 2. File suffix for CCTV (.x-shockwave-flash -> .flv)
246
- 3. Remove "see examples" from pod markup (closes issue #30)
247
- 4. Prevent ".$suffix" output filenames
248
- 4.1. Use $id if !$title && %i was not defined in --filename-format
249
- 4.2. Related to issue #29
250
- 5. --no-proxy: really disable all proxy use (closes issue #25)
251
- 5.1. http_proxy setting was still used
252
- 6. Can't call method "filename" on unblessed reference at Exec.pm line 5x
253
- 6.1. e.g. clive URL --exec="ls;"
254
- 6.2. Closes Debian bug #535459
255
- 7. Dailymotion support (closes issue #35)
256
- 8. Redtube support (error: no match: `(?-xism:videoid=(.*?)')')
257
- * Rename:
258
- 1. --recall, --recall-file -> --last, --last-file
259
- 2. CLIVE_HOME -> CLIVE_CACHE
260
- * Remove:
261
- 1. -R, --raw (obsoleted by improved unicode support)
262
- 2. --home-dir option
263
- 2.1. Missleading name
264
- 2.2. Obsoleted by --cache-file and --last-file
265
- * Manual page:
266
- 1. Add note about numeric suffix (closes issue #28)
267
- 2. Fix a number of typos, use better grammar
268
- 3. Overhaul
269
-
270
- Developer-visible changes:
271
- * Add:
272
- * clive/Compat.pm
273
- * clive/Host/Spiegel.pm
274
- * clive/Host/Golem.pm
275
- * clive/Host/Ehrensenf.pm
276
- * t/06golem.t
277
- * t/14spiegel.t
278
- * t/15ehrensenf.t
279
- * tlinks/golem.url
280
- * tlinks/spiegel.url
281
- * tlinks/ehrensenf.url
282
- * New prerequisite: Config::Tiny
283
- 1. Required by --upgrade-config
284
- * Makefile.PL:
285
- 1. Extract VERSION from lib/clive/Config.pm
286
- 2. Add "use warnings/strct"
287
- 3. chmod +x
288
-
289
-
290
-Version 2.2.2
291
-(July 9, 2009)
292
-
293
- User-visible changes:
294
- * Change: Google: --format=mp4/best
295
- 1. Default to flv if mp4 is not available
296
- 2. Fix --format=best support
297
-
298
- Developer-visible changes:
299
- * Add: t/$host.t: NO_INTERNET variable support (closes issue #24)
300
- * Change: t/02youtube.t test link
301
- 1. Old dropped dead
302
- * Remove: t/06lastfm.t
303
- 1. t/02youtube.t: includes the same test
304
-
305
-
306
-Version 2.2.1
307
-(June 21, 2009)
308
-
309
- User-visible changes:
310
- * Add: support for Vimeo (closes issue #19)
311
- * Add: return codes for each error case (closes issue #22)
312
- * Fix: return code is always 0 (closes issue #20)
313
- * Change: --hosts output now matches cclive output
314
-
315
- Developer-visible changes:
316
- * Change: Cctv, Dailymotion, Liveleak -> use clive::Utils::matchRegExps
317
- * Add: t/12error.t
318
-
319
-
320
-Version 2.2.0
321
-(June 14, 2009)
322
-
323
-FOREWORD
324
---------
325
-
326
-This release is a major overhaul aimed to fix the previous design flaws
327
-and clean up the codebase. Note that 2.2.0 breaks compatibility with
328
-the earlier versions of clive.
329
-
330
-Most users will not notice much differences after upgrading to 2.2.0
331
-but those users who have used clive for anything more than "clive URL"
332
-should read the changes carefully. The summary of changes section
333
-includes more detailed changes that is recommended reading for all
334
-users and maintainers.
335
-
336
-2.2.0 changes the license from ISC to GPLv3. The license was last
337
-changed in 2.1.0 to ISC but has now been reverted back to GPLv3 after
338
-some further consideration.
339
-
340
-Config::Tiny has been replaced with Getopt::ArgvFile. The latter had
341
-some advantages over Config::Tiny that lead to the switch. For example,
342
-instead of trying to memorize the (often confusing) config variable
343
-names, users can now use command line options in the config file.
344
-
345
-This also means that everytime a new feature is added to the program,
346
-we are no longer required to modify the code responsible for parsing
347
-the config file. Using Getopt::ArgvFile also required adding only one
348
-line of code to the project whereas Config::Tiny required several.
349
-
350
-cache no longer reads by default. This means that --cache-read option
351
-must be invoked for clive to read previously stored video records
352
-from the cache. The change was made after seeing how most users found
353
-the reading from cache too confusing and frequently reported expired
354
-link errors such as HTTP 403 as bugs even though the behaviour was
355
-documented in the manual page. DAERTM?
356
-
357
---emit-csv now outputs very few details about the videos. Only those
358
-fields that are known to be any use are printed out.
359
-
360
-2.2.0 also removes a number of less used features that have lingered
361
-in the project since the 1.x. Most of these features were never
362
-requested and have only been burdening the program codebase since
363
-their introduction.
364
-
365
-Part time hackers and/or developers will notice that clive now follows
366
-a new OO design -- as well as Perl5 allows it. While there are still
367
-some considerations regarding the design and limitations that could not
368
-quite be ported from C++ used in cclive, WYSIWYG.
369
-
370
-Package/port maintainers will want to read the README file. The previously
371
-used GNU Makefile is no longer used and clive installation now depends on
372
-ExtUtils::MakeMaker instead.
373
-
374
-SUMMARY of CHANGES
375
-------------------
376
-
377
- User-visible changes:
378
-
379
- * License change
380
- 1. ISC -> GPLv3
381
- 2. Last changed in 2.1.0 (-> ISC)
382
-
383
- * Slight improvements to program startup time
384
-
385
- * Config file format changes (Config::Tiny -> Getopt::ArgvFile)
386
- 1. Command line options can now be used in config file
387
- 2. Breaks compatibility with previous versions
388
- 3. Cleaner and new format allows using cmdline options in configs
389
- 4. Format was last changed in 2.0.0
390
- Example:
391
- -----------------------------------------------
392
- # Config::Tiny: clive 2.0 - 2.1
393
- cat >> ~/.config/clive/config
394
- http
395
- proxy = "http://foo:1234"
396
- output
397
- savedir = "/home/user/videos"
398
-
399
- # Getopt::ArgvFile: clive 2.2
400
- cat >> ~/.cliverc
401
- --proxy="http://foo:1234"
402
- --savedir="/home/user/videos"
403
- -----------------------------------------------
404
-
405
- * Fix: Redtube video title parsing
406
-
407
- * Cache changes
408
- 1. Cache is now passive (read:no, write:yes)
409
- 2. Add: --cache- option prefix
410
- 3. New option: --cache-read, --no-cache
411
- 5. Rename: misc. options (e.g. --show -> --cache-dump)
412
- 6. Record field changes
413
- o Breaks compatibility with previous versions
414
- 7. New field delimiter '#'
415
- 8. New field order
416
-
417
- * File path changes
418
- 1. ~/.config/clive/config -> ~/.cliverc
419
- 2. ~/.config/clive/recall -> ~/.clivelast
420
- 3. ~/.config/clive/cache -> ~/.clivecache
421
-
422
- * --format changes
423
- 1. Add: --format=best support (closes issue #15 )
424
- 2. Rename: mp4 -> fmt18 (Youtube)
425
- 3. Rename: Dailymotion ID spark -> flv
426
-
427
- * Bugfixes
428
- 1. cURL error handling
429
- 2. Google mp4 support
430
- 3. Do not strip link params (closes debian bug #530659)
431
- 4. --format=fmt6 (no longer supported by Youtube?)
432
- 5. Dailymotion ID parsing
433
-
434
- * New options:
435
- 1. --home-dir
436
- 2. --recall-file
437
- 3. --cache-file
438
- 4. --no-cclass
439
- 5. --raw
440
- 6. --stop-after (closes issue #18)
441
-
442
- * --emit-csv: changes to CSV fields (cleanup, print only the necessary fields)
443
- 1. clive 2.0 - 2.1:
444
- page_link, video_link, filename, file_length_mb,
445
- file_length_bytes, video_id, time_stamp, page_title,
446
- initial_length, remaining_bytes
447
- 2. clive 2.2:
448
- base_filename, file_length, video_link
449
-
450
- * Remove options:
451
- 1. --savebatch
452
- 2. --renew (now obsolete)
453
- 3. --youtube-user (broken since 2.1)
454
- 4. --youtube-pass (...)
455
- 5. --no-login (...)
456
- 6. --clivepass (...)
457
- 7. --emit-xml
458
- 8. --background
459
- 9. --progress
460
- 10. --output
461
- 11. --append
462
- 12. --paste
463
- 13. --format=fmt6
464
-
465
- * Other changes:
466
- 1. Long options: aliases (e.g. --output_file | --output-file | --outputfile)
467
- 2. --filename-format: new specifiers, rename some of the old ones
468
- 3. --format: exit with an error if id is not recognized by clive
469
- 4. Rename: -r -> -l (--recall)
470
- 5. Many short options have been removed (or reused)
471
-
472
- Developer-visible changes:
473
-
474
- * OO Perl5 style
475
-
476
- * Change: use a custom perltidyrc (closes issue #17)
477
- - Thanks to Tong Sun <suntong001@gmail.com>
478
-
479
- * Prerequisite changes
480
- 1. Written for Perl 5.10.0
481
- o 5.8 probably OK although unverified
482
- 2. New prerequisites
483
- o Class::Singleton
484
- o Getopt::ArgvFile
485
- 3. Removed prerequisites
486
- o Config::Tiny
487
- o IO::Pager
488
- o Expect
489
- o Clipboard
490
- 4. Optional modules (no changes from 2.1.14)
491
- o BerkeleyDB
492
- o Term::ReadKey
493
-
494
- * Change: use decode_utf8 returned html only if html is valid utf8
495
-
496
- * Installation changes
497
- 1. Makefile.PL (ExtUtils::MakeMaker) see README
498
-
499
- * Remove files:
500
- 1. Makefile (obsoleted by Makefile.PL)
501
- 2. clive.pod (merged into bin/clive)
502
- 3. clive.1 (generated from bin/clive)
503
-
504
- * Remove: binmode STDOUT, ":utf8"
505
-
506
- * Remove: extra decode_utf8
507
-
508
-
509
-Version 2.1.14
510
-(May 25, 2009)
511
-
512
- User-visible changes:
513
- * Add: support for youtube-nocookie.com (closes issue #12)
514
- * Add: fmt35 format ID for Youtube closes issue #10 (and #13)
515
- * Fix: liveleak id parsing
516
- * Rename: --format IDs for Youtube
517
- ** mp4_hd -> fmt22
518
- ** 3gpp -> fmt17
519
- ** xflv -> fmt6
520
- * Rename: --output-video -> --output-file
521
- * Rename: output:file -> output:filename_format (config file)
522
- * Remove: --overwrite option (use --output-file instead)
523
-
524
- Developer-visible changes:
525
- * Add: tests/ytube-nocookies.url
526
- * Update: INSTALL
527
-
528
- Other:
529
- * 2.2.0 is under development, read more here:
530
- http://code.google.com/p/clive/wiki/WhatsNew_2_2_0
531
-
532
-
533
-Version 2.1.13
534
-(May 16, 2009)
535
-
536
- Developer-visible changes:
537
- * Change: use perltidy defaults for style
538
- * Change: BerkeleyDB and File::Path modules are now optional
539
- ** Cache features depend on these modules
540
- * Moved opted_mods initilization to init_opted_mods (-> loop)
541
-
542
-
543
-Version 2.1.12
544
-(May 9, 2009)
545
-
546
- User-visible changes:
547
- * Change: --connect-timeout, --connect-timeout-socks default -> 30s
548
- * Fix: timeout after file transfer starts
549
- * Fix: title parsing with custom character class (closes issue #8)
550
- * Add: redtube support; thanks to anonprn2@gmail.com (closes issue #11)
551
- * Fix: typo in --emit-xml --help string
552
-
553
-
554
-Version 2.1.11
555
-(April 29, 2009)
556
-
557
- User-visible changes:
558
- * Change: --youtube-pass: prompt for password if left undefined
559
- * Change: --filename-format: default -> "%t.%s"
560
- * Fix: "Use of uninitialized value $opts{"ytpass"} ..."
561
- * Add new options:
562
- ** --connect-timeout
563
- ** --connect-timeout-socks
564
- * Cleanup: manual page
565
-
566
- Developer-visible changes:
567
- * Rename: auth_youtube subroutine -> loginto_youtube
568
-
569
- Known-issues:
570
- * Youtube login does not work (throw an error, patches welcome!)
571
-
572
-
573
-Version 2.1.10
574
-(April 4, 2009)
575
-
576
-NOTE: This release changes the clive status messages. This will likely
577
-break compatibility with utilities that depend on these messages.
578
-The changes were made to enable using abby (0.2.0+) as a front-end
579
-for clive.
580
-
581
- User-visible changes:
582
- * Add abby (front-end) compatibility
583
- - Change output similar to cclive
584
- - http://code.google.com/p/abby/
585
- * Add Youtube HD support (--format=mp4_hd)
586
- - Thanks to bf for the patch (via FreeBSD ports)
587
- * Add tv.cctv.com support issue #6
588
- - Thanks to suntong001 for data mining
589
- * Add new options
590
- - --limit-rate (config: http:limit_rate)
591
- - --hosts (print supported hosts to stdout)
592
- - --stderr (redirect all output to stderr instead of stdout)
593
- * Improve file suffix parsing from content-type
594
- - Rewrite the content-type handling block in query_video_length
595
- - Use whatever is found after slash in the content-type string
596
- - Use "flv" for exceptions (e.g. octet-*, x-flv, etc.)
597
- * Replace dashes in video IDs with underscores before using them in fnames
598
- * Change --version output
599
- * Fix reading from stdin (closes Debian #522422)
600
- - Assume reading from stdin only if queue and argv arrays are empty
601
- * Fix exit with status code
602
- - Exit 0 on success, and >0 if an error occurs
603
-
604
- Developer-visible changes:
605
- * Update examples/config with limit_rate
606
- * Rename: configrc -> examples/config
607
- * Replace the monstrous if-elsif-$host code block with a loop
608
-
609
-
610
-Version 2.1.9
611
-(March 27, 2009)
612
-
613
- User-visible changes:
614
- * Fix GoogleVideo "id not found" handling
615
- - Symptom: exit after "process page..." message
616
- - Cause: no check for undefined id value
617
- * Fix GoogleVideo support
618
- - Symptom: see above fix
619
- - Cause: HTML changes to the video pages
620
- * Fix URI::Escape import for GoogleVideo redirects
621
- - Symptom: crash with "Undefined subroutine &URI::Escape::uri_unescape"
622
- - Cause: recent script start optimizations; a missing 'require'
623
- * Fix Break support
624
- - Symptom: "expected different content-type"
625
- - Cause: website content-type changes
626
-
627
- Developer-visible changes:
628
- * Cleanup code (style-wise)
629
- - perltidy -gnu -l=72
630
-
631
-
632
-Version 2.1.8
633
-(March 24, 2009)
634
-
635
- User-visible changes:
636
- * Keep URL queue order
637
- - Remove duplicate URL checking
638
- * Remove --modver, change --version output
639
- * Update manual page (clive.1, clive.pod)
640
- - Rewrite EXAMPLES section
641
- - Cleanup other sections
642
- * Config file: add support for output:format (--format)
643
- * Port dailymotion support from cclive
644
-
645
- Developer-visible changes:
646
- * Makefile changes:
647
- - Replace Perl module checking with for-loops (incl. optional)
648
- * Optimize script start time
649
- - Replace "use $module" with "require $module" where possible
650
- * Update LICENSE, configrc
651
- - Cosmetic changes
652
- - Add output:format to configrc
653
- * Add tests/dmotion.url
654
-
655
-
656
-Version 2.1.7
657
-(March 15, 2009)
658
-
659
- User-visible changes:
660
- * Add --output-video option
661
- * Add option groups to --help output
662
- * Add --stream-exec and --stream options
663
- - Ported from cclive
664
- * Config file: add support for
665
- - commands:exec (--exec)
666
- - commands:stream (--stream-exec)
667
- - See configrc for an example
668
- * Fix --exec; should no longer spew out "not found" shell errors
669
- * Change default filename format to "%t_%d_%i.%s"
670
- * Change to use "file is already fully retrieved" error message
671
- * Port resizing progressbar from cclive
672
-
673
- Developer-visible changes:
674
- * Add tests/lastfm.url and tests/multi.lst
675
- * Remove XML::Simple dependency
676
- - Use regex instead
677
- * Implement SIGWINCH handling
678
- - Resize progressbar to match terminal width
679
- - Progressbar width defaults to 80 (chars)
680
- - OS must support SIGWINCH
681
- - Requires Term::ReadKey module
682
- - clive works without the module but will ignore any SIGWINCH events
683
- * Touch cclive.1, cclive.pod, INSTALL and Makefile files
684
- * Clean up regex
685
-
686
- Other changes:
687
- * Buried clive-list, grew weary of fighting spam with bare fists
688
- - email the author directly or use the issue tracker, thanks
689
-
690
-
691
-Version 2.1.6
692
-(February 19, 2009)
693
-
694
- User-visible changes:
695
- * Renamed the following options
696
- - --noproxy => --no-proxy
697
- - --noextract => --no-extract
698
- - --nologin => --no-login
699
- * Butchered --help output
700
- - much less verbose now
701
- - relocated manual page data to clive.pod
702
- * Removed --manual option
703
- * Obsoleted "play" and "rencode" config keys in "commands" section
704
- * Added --exec option which resembles cclive's --exec command
705
- * Removed --play, --noplay, --rencode and --norencode options
706
- - use --exec instead
707
- * Changed --paste short option from '-x' to '-p'
708
- * Removed wmv format (breakcom)
709
- - persistant HTTP/404 (not found) error
710
-
711
- Developer-visible changes:
712
- * Makefile changes
713
- - additional INSTALL variables
714
- - added WITH_CHECK
715
- - can be used to disable module checks
716
- - removed "man" from "all"
717
- - removed "clean" (useless)
718
-
719
-
720
-Version 2.1.5
721
-(February 6, 2009)
722
-
723
- User-visible changes:
724
- * Fixed sevenload support
725
-
726
-
727
-Version 2.1.4
728
-(February 1, 2009)
729
-
730
- User-visible changes:
731
- * Fixed Youtube login which sometimes reported failed attempts as OK
732
- - Youtube defaults web interface language based on users ip
733
- - clive looks for English words in the post-login page to confirm login
734
- * Tweaked --version output
735
-
736
- Developer-visible changes:
737
- * Removed metacafe remnants
738
- * Fixed bug in time2str subroutine which caused incorrect calculations
739
- * Updated INSTALL
740
- * removed genman script (obsoleted by "make man")
741
- * Added a rudimentary (GNU) Makefile
742
- * Cleaned up translate_embed subroutine
743
-
744
- Other changes:
745
- * Removed the clive-announce and clive-users mailing lists
746
- - New release announcements will be posted via Freshmeat alone from now on
747
- - Subscribe to the project at http://freshmeat.net/projects/clive
748
- * Created the clive-list@googlegroups.com mailing-list
749
- - For support questions, patches and bug reports
750
- - Issue tracker will remain for tracking bugs
751
- - Send an email to clive-list-subscribe@googlegroups.com to subscribe
752
-
753
-
754
-Version 2.1.3
755
-(January 9, 2009)
756
-
757
- User-visible changes:
758
- * Documented missing "%t" (--filename-format) in manual page
759
- * Tweaked "localfile_length == remotefile_length" message
760
- * Renamed CLIVE_CONFIGDIR environment variable to CLIVE_HOME
761
-
762
- Developer-visible changes:
763
- * Cleaned up manual page
764
- * Added LICENSE file
765
- * Cleaned up FreeBSD details (INSTALL)
766
-
767
-
768
-Version 2.1.2
769
-(December 29, 2008)
770
-
771
- User-visible changes:
772
- * Removed "See --manual" from --version output
773
- * Added support for evisortv
774
- - http://code.google.com/p/clive/issues/detail?id=4
775
- * Fixed: reused incorrectly last http error code for remaining urls in queue
776
- * Fixed: progressbar reported 100% even if error had occurred (e.g. http/403)
777
-
778
- Developer-visible changes:
779
- * Cleaned up subroutines
780
-
781
-
782
-Version 2.1.1
783
-(December 19, 2008)
784
-
785
- User-visible changes:
786
- * Fixed "Requested range was not delivered by the server (http/33)" w/ -c
787
- - this would occur with a batch of URLs while using the --continue option,
788
- e.g. if the first file was continued, the following page fetches exited
789
- with the above error
790
- * Added --savebatch option
791
- * Added --overwrite option
792
- * Replaced the buggy progressbar with a "lazy man's progressbar"
793
- * Fixed "print() on closed filehandle STDOUT" with --grep+delete
794
- * Fixed progressbar display with --continue
795
-
796
- Developer-visible changes:
797
- * Updated INSTALL
798
- * Started to bundle src tarball with clive.1 manual page
799
- * Added genman script which wraps pod2man with common options
800
- * Fixed a potential div by zero bug in calc_progress
801
-
802
-
803
-Version 2.1.0
804
-(December 10, 2008)
805
-
806
- NOTE: Changed license GPL3 => ISC/OpenBSD.
807
-
808
- User-visible changes:
809
- * Added --modversion option
810
- * Replaced Term::Progressbar with a built-in thermometer progressbar
811
- * Removed --progress=bar:nominor support due to above changes
812
- * Added liveleakcom support
813
- - http://code.google.com/p/clive/issues/detail?id=3
814
-
815
- Developer-visible changes:
816
- * Made IO::Pager module optional
817
- * Removed COPYING
818
- * Cleaned up --progress option description
819
- * Changed to require WWW::Curl 4.05+
820
- * Removed Term::Progress module dependency
821
- * Fixed a potential bug in calc_progress (improper $rate init)
822
- * Updated INSTALL
823
- * Made Expect module optional
824
-
825
-
826
-Version 2.0.0
827
-(December 2, 2008)
828
-
829
- User-visible changes:
830
- * Fixed gvideo/mp4 support (http/404 even if the extraction link existed)
831
- * Changed "found redirect" message
832
- * Changed --play, --rencode status messages to use file basename
833
-
834
- Developer-visible changes:
835
- * decode_utf8($page): removes extra steps, works better with HTML::TokeParser
836
- * Added missing Expect module version to INSTALL
837
-
838
-
839
-Version 2.0beta4
840
-(November 22, 2008)
841
-
842
- Notes:
843
- This aims to be the last beta before the release of 2.0 in December 2008.
844
- Please report any remaining bugs to the issue tracker at:
845
- http://code.google.com/p/clive/issues/list
846
-
847
- User-visible changes:
848
- * Removed metacafe support until fixed (see known issues)
849
- * Changed Youtube login to report if there were "too many login failures"
850
- * Fixed Youtube login support: reported failures incorrectly as OK
851
- * Added support clivepass(1) utility (http://code.google.com/p/clive-utils)
852
- * Added support for metacafe and sevenload embed URL translation
853
-
854
- Developer-visible changes:
855
- * Added TODO file
856
- * New prerequisite module: Expect
857
- * Updated FreeBSD + Ubuntu details (INSTALL)
858
- * Cleaned up some code
859
- * Rewrote embed URL translation
860
-
861
- Known issues:
862
- * Metacafe support broken (http/404)
863
-
864
-
865
-version 2.0beta3
866
-(November 1, 2008)
867
-
868
- User-visible changes:
869
- * Fixed pasting from clipboard containing multiple URLs
870
- * Fixed page fetch progress glitch that occured with 1+ batches
871
- * Added --agent option
872
- * Added --proxy option
873
- * Added --savedir option
874
- * Added --cclass option
875
- * Added --filename-format option
876
- * Added --show-format option
877
- * Added --youtube-user and --youtube-pass options
878
- * Added --emit-xml option
879
- * Added --progress=none|bar|dot
880
- * Replaced --noprogress with --progress=none
881
- * Added avg. transfer rate notification
882
- * Fixed filename printing for existing output files (e.g. output.flv.1)
883
- * Added --play option
884
- * Fixed metacafe support (error: failed to extract videoCDNURL)
885
- * Added --rencode option
886
-
887
- Developer-visible changes:
888
- * Ported --emit-csv option from 1.x with minor changes
889
- - Backwards compatible with 1.x
890
- - Prints additional video details
891
- - $length, $video_id, $time_stamp, $page_title, $cont_from, $remaining
892
- * Changed to prefer 'dot' bar if the output is not a TTY
893
- * Replaced progress bar with Term::ProgressBar (new module prerequisite)
894
- * Cleaned up queue processing subroutine
895
-
896
-
897
-Version 2.0beta2
898
-(October 15, 2008)
899
-
900
- User-visible changes:
901
- * clive now ignores input lines that start with the '#' character
902
- * Added support for CLIVE_CONFIGDIR environment variable
903
- * Ported lastfm video support from 1.x
904
- * --version now displays XML::Simple
905
- * Changed "= Play:" to "=> Playing ..."
906
- * Playing occurs now subsequently after going over the URL batch
907
-
908
- Developer-visible changes:
909
- * Removed a google video redirect (commented out, see code)
910
- * Added the AUTHORS file
911
- * XML::Simple was missing as a prerequisite in INSTALL
912
- * Made minor syntactic tweaks to the source code
913
- * Fixed missing --quiet check with the "=> Play" message
914
-
915
-
916
-Version 2.0beta1
917
-(September 23, 2008)
918
-
919
-A complete overhaul and rewrite of 1.x.
920
-
921
- User-visible changes:
922
- * Users are expected to use the --continue/-c option to resume transfers
923
- * Configuration file format (=> INI), path was changed (=> ~/.config/clive)
924
- * All extractions now assume flv as the default download format
925
- * Users are expected to understand when/how use the --format/-f option
926
- * Reading input from multiple sources is possible (e.g. % clive -x URL URL)
927
- * Added: --grep: used to grep and recall cached URL entries
928
- * Added: --background and --output=logfile, --append=logfile options
929
- * Many old cmdline and config options were removed due to new design
930
- * Improved GoogleVideo support: handles redirects to other hosts
931
- * Pager is used where needed (e.g. --show/-s)
932
- * Changed default output file naming format to "%n-(%i)-%d.%s"
933
- * Removed: guba (deadweight), myvideo (borked), dmotion (bitches @ anon users)
934
-
935
- Developer-visible changes:
936
- * Python => Perl
937
- - See the INSTALL file for prerequisites
938
- * No installation: all-in-one script (excl. the 3rd party modules)
939
- * Cache is now an integral part of clive, see CACHE in the manual page
940
- * Embedded the --manual page (Pod)
941
- * Improved Youtube login: removed is_adult HTTP get (done manually now)
942
- * Grab the file suffix from the Content-Type header
943
- * Improved GoogleVideo support: mp4 detection no more relies on English words
944
- * Improved Metacafe support: removed unnecessary "familyfilter" HTTP get
945
-
946
- Other:
947
- * Project: moved
948
- - 2.x+ at http://googlecode.com/p/clive/
949
- - 1.x remains at http://gna.org/projects/clive
950
- * Tarballs: moved
951
- - 2.x+ at http://googlecode.com/p/clive/
952
- - 1.x remain at http://dl.gna.org/clive
953
- * Website: moved
954
- - http://clive.sf.net/
955
- - http://home.gna.org/clive redirects to the above
956
- * SCM: SVN => Git
957
- - 2.x+ at git://repo.or.cz/clive.git
958
- - 1.x remains at svn://svn.gna.org/svn/clive
959
- * Issue tracking: Moved
960
- - 2.x+ at http://googlecode.com/p/clive/issues/
961
- - 1.x bug tracker remains at http://gna.org/projects/clive
962
- * Created http://googlegroups.com/group/clive-announce/
963
-
964
-NOTE: See http://dl.gna.org/clive/CHANGES for 1.x.
965
clive-2.2.22.tar.bz2/examples/config
Deleted
25
1
2
-# clive reads ~/.cliverc by default. You can use --home-dir and
3
-# CLIVE_HOME environment variable to change that.
4
-
5
-# You can add any of the supported command line options to clive
6
-# configuration file. For example:
7
-
8
-#--format=mp4
9
-#-f mp4
10
-#--proxy=foo:1234
11
-#--cache-read
12
-#--no-cache
13
-#--save-dir=/home/user/videos
14
-
15
-# Note that the "dashed" command line options have aliases, so
16
-# you can use any of the aliases as well, for example:
17
-
18
-# --no-cache
19
-# --no_cache
20
-# --nocache
21
-
22
-# If you are unsure about the command line options, see the output of
23
-# "clive --help" output or refer to the clive manual page for a complete
24
-# list of the supported command line options.
25
clive-2.2.22.tar.bz2/lib
Deleted
2
1
-(directory)
2
clive-2.2.22.tar.bz2/lib/clive
Deleted
2
1
-(directory)
2
clive-2.2.22.tar.bz2/lib/clive/App.pm
Deleted
258
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::App;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-use base 'Class::Singleton';
29
-
30
-use clive::Log;
31
-use clive::Error qw(
32
- CLIVE_OK
33
- CLIVE_NOTHINGTODO
34
- CLIVE_NOSUPPORT
35
- CLIVE_READ
36
-);
37
-use clive::Config;
38
-use clive::Curl;
39
-use clive::Cache;
40
-use clive::Exec;
41
-
42
-sub new {
43
- my $class = shift;
44
- return bless( {}, $class );
45
-}
46
-
47
-sub main {
48
- my $self = shift;
49
-
50
- clive::Config->instance->init;
51
- clive::Curl->instance->init;
52
- clive::Log->instance->init;
53
- clive::Cache->instance->init;
54
- clive::Exec->instance->init;
55
-
56
- _parseInput();
57
-
58
- exit( clive::Log->instance->returnCode );
59
-}
60
-
61
-sub _parseInput {
62
- my $self = shift;
63
-
64
- $self->{queue} = ;
65
-
66
- my $config = clive::Config->instance->config;
67
-
68
- # Read from recall file.
69
- if ( $config->{recall} and -e $config->{recall_file} ) {
70
- if ( open( my $fh, "<", $config->{recall_file} ) ) {
71
- _parseLine( $self, $_ ) while (<$fh>);
72
- close($fh);
73
- }
74
- else {
75
- clive::Log->instance->errn( CLIVE_READ,
76
- "$config->{recall_file}: $!" );
77
- }
78
- }
79
-
80
- # From cache (grep).
81
- if ( $config->{cache_grep} ) {
82
- my $cache = clive::Cache->instance;
83
- foreach ( @{ $cache->grepQueue } ) {
84
- push( @{ $self->{queue} }, $_ );
85
- }
86
- }
87
-
88
- # Use argv.
89
- _parseLine( $self, $_ ) foreach (@ARGV);
90
-
91
- # Default to STDIN.
92
- if ( scalar( @{ $self->{queue} } ) == 0
93
- && scalar( @ARGV == 0 ) )
94
- {
95
- _parseLine( $self, $_ ) while (<STDIN>);
96
- }
97
-
98
- my $cache = clive::Cache->instance;
99
- my $curl = clive::Curl->instance;
100
- my $log = clive::Log->instance;
101
-
102
- require clive::HostFactory;
103
- require clive::Video;
104
-
105
- foreach ( @{ $self->{queue} } ) {
106
- my $host = clive::HostFactory->new($_);
107
- if ($host) {
108
- my $props = clive::Video->new;
109
- $props->page_link($_);
110
-
111
- my $rc = 0;
112
-
113
- # Read from cache.
114
- if ( $cache->enabled() && $config->{cache_read} ) {
115
- $rc = $cache->read( \$props );
116
- if ( $rc == 1 && $props->video_format() ne $config->{format} )
117
- {
118
-
119
- # Cache: video format != requested format -> re-fetch.
120
- $rc = 0;
121
- }
122
- }
123
-
124
- # Cache failed or record did not exist. Fetch the video page.
125
- if ( $rc == 0 ) {
126
- my $content;
127
-
128
- $rc = $curl->fetchToMem( $props->page_link, \$content );
129
-
130
- if ( $rc == 0 ) {
131
-
132
- $props->page_title( \$content );
133
- $rc = $host->parsePage( \$content, \$props );
134
-
135
- if ( $rc == 0 ) {
136
- $rc = $curl->queryFileLength( \$props );
137
- if ( $rc == 0 ) {
138
- $props->video_format( $config->{format} );
139
- $cache->write( \$props );
140
- }
141
- }
142
- }
143
- }
144
-
145
- # Cache record found.
146
- else {
147
- $log->out("cache $_ ...done\n");
148
- $rc = 0;
149
- }
150
-
151
- # If everything went OK so far, proceed to extract etc.
152
- if ( $rc == 0 ) {
153
-
154
- push( @{ $self->{passed_queue} }, $_ );
155
-
156
- $props->formatOutputFilename;
157
-
158
- if ( $props->nothing_todo ) {
159
- $log->err( CLIVE_NOTHINGTODO,
160
- "file already retrieved; nothing todo" );
161
- clive::Exec->instance->queue( \$props );
162
- next;
163
- }
164
-
165
- if ( $config->{no_extract} ) {
166
- $props->printVideo;
167
- }
168
- elsif ( $config->{emit_csv} ) {
169
- $props->emitCSV;
170
- }
171
- elsif ( $config->{stream_pass} ) {
172
- clive::Exec->instance->passStream( \$props );
173
- }
174
- else {
175
- if ( $config->{print_fname} ) {
176
- $props->printVideo;
177
- }
178
- if ( $curl->fetchToFile( \$props ) == 0 ) {
179
- clive::Exec->instance->queue( \$props );
180
- }
181
- }
182
- }
183
- elsif ( $rc == 0xff ) {
184
-
185
- # Purpose: dump (cctv) video segment links to terminal.
186
- # a.k.a. "One link leads to many video segment links."
187
- # a.k.a. "Something we never had even thought of."
188
- # We skip quite a few steps with this chunk of joy.
189
- }
190
- }
191
- else {
192
- $log->err( CLIVE_NOSUPPORT, "no support: $_" );
193
- }
194
- }
195
-
196
- clive::Exec->instance->runExec;
197
-
198
- # Update recall file.
199
- if ( $log->returnCode == CLIVE_OK ) {
200
- if ( open( my $fh, ">", $config->{recall_file} ) ) {
201
- print( $fh "$_\n" ) foreach ( @{ $self->{passed_queue} } );
202
- close($fh);
203
- }
204
- else {
205
- $log->errn( CLIVE_READ, "$config->{recall_file}: $!" );
206
- }
207
- }
208
-}
209
-
210
-sub _parseLine {
211
- my ( $self, $ln ) = @_;
212
-
213
- return if $ln =~ /^$/;
214
- return if $ln =~ /^#/;
215
-
216
- chomp $ln;
217
-
218
- $ln = "http://$ln"
219
- if $ln !~ m{^a-z+://}i;
220
-
221
- # Youtube.
222
- $ln =~ s!youtu.be/!youtube.com/watch?v=!i; # youtu.be
223
- $ln =~ s/-nocookie//; # -nocookie
224
- $ln =~ s!/v/!/watch?v=!i; # Embedded
225
-
226
- # Translate host specific embedded link to video page link.
227
- $ln =~ s!googleplayer.swf!videoplay!i; # googlevideo
228
- $ln =~ s!/pl/!/videos/!i; # sevenload
229
- $ln =~ s!/e/!/view?i=!i; # liveleak
230
-
231
- if ($ln =~ /\/swf\//) { # dailymotion
232
- $ln =~ s!/video/!/!;
233
- $ln =~ s!/swf/!/video/!;
234
- }
235
-
236
- # Lastfm demystifier.
237
- if ( $ln =~ /last\.fm/ ) {
238
- $ln =~ /\+1\-(.+)/;
239
- if ( !$1 ) {
240
- clive::Log->instance->err( CLIVE_NOSUPPORT, "no support: $ln" );
241
- return;
242
- }
243
- $ln = "http://youtube.com/watch?v=$1";
244
- }
245
-
246
- push( @{ $self->{queue} }, $ln );
247
-}
248
-
249
-sub _printHosts {
250
- require clive::HostFactory;
251
- clive::HostFactory->dumpHosts();
252
- exit(CLIVE_OK);
253
-}
254
-
255
-1;
256
-
257
-# There must be some kinda way out of here.
258
clive-2.2.22.tar.bz2/lib/clive/Cache.pm
Deleted
233
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Cache;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-use base 'Class::Singleton';
29
-
30
-use clive::Video;
31
-use clive::Error qw(CLIVE_OK CLIVE_GREP);
32
-
33
-use constant DEFAULT_DUMP_FORMAT => qq/%n: %t %f, %mMB/;
34
-
35
-sub init {
36
- my $self = shift;
37
-
38
- my $config = clive::Config->instance->config;
39
-
40
- $self->{enabled} = 0;
41
-
42
- eval("require BerkeleyDB");
43
- $self->{enabled} = 1
44
- if ( !$@ && !$config->{no_cache} );
45
-
46
- if ( $self->{enabled} ) {
47
- require Digest::SHA;
48
-
49
- my %cache;
50
- my $handle = tie(
51
- %cache, "BerkeleyDB::Hash",
52
- -Filename => $config->{cache_file},
53
- -Flags => BerkeleyDB->DB_CREATE
54
- ) or die "error: cannot open $config->{cache_file}: $!\n";
55
-
56
- $self->{handle} = $handle;
57
- $self->{cache} = \%cache;
58
-
59
- if ( $config->{cache_dump} ) {
60
- _dumpCache($self);
61
- }
62
- elsif ( $config->{cache_grep} ) {
63
- _grepCache($self);
64
- }
65
- elsif ( $config->{cache_clear} ) {
66
- _clearCache($self);
67
- }
68
- }
69
- else {
70
- if ( $config->{cache_dump} || $config->{cache_grep} ) {
71
- die "error: requires BerkeleyDB module\n";
72
- }
73
- }
74
-}
75
-
76
-sub enabled {
77
- my $self = shift;
78
- return $self->{enabled};
79
-}
80
-
81
-sub read {
82
- my $self = shift;
83
- return (1) if !$self->{enabled};
84
- return _mapRecord( $self, @_ );
85
-}
86
-
87
-sub write {
88
- my $self = shift;
89
- return if !$self->{enabled};
90
- my $props = shift;
91
- my $hash = Digest::SHA::sha1_hex( $$props->page_link );
92
- $self->{cache}{$hash} = $$props->toCacheRecord;
93
- $self->{handle}->db_sync();
94
-}
95
-
96
-sub grepQueue {
97
- my $self = shift;
98
- $self->{grep_queue};
99
-}
100
-
101
-sub _mapRecord {
102
- my ( $self, $props, $hash ) = @_;
103
- $hash = Digest::SHA::sha1_hex( $$props->page_link )
104
- if ( !$hash );
105
-
106
- # Key order matters. Keep in sync with clive::Video::toCacheRecord order.
107
- if ( $self->{cache}{$hash} ) {
108
- my @values = split( /#/, $self->{cache}{$hash} );
109
- my @keys = qw(
110
- page_title page_link video_id video_link
111
- video_host video_format file_length file_suffix
112
- content_type time_stamp
113
- );
114
- my $i = 0;
115
- my %record = map { $_ => $values $i++ } @keys;
116
- $$props->fromCacheRecord( \%record );
117
- return (1);
118
- }
119
- return (0);
120
-}
121
-
122
-sub _dumpCache {
123
- my $self = shift;
124
-
125
- my $config = clive::Config->instance->config;
126
- my $dumpfmt = $config->{cache_dump_format} || DEFAULT_DUMP_FORMAT;
127
- my $props = clive::Video->new
128
- ; # Reuse this rather than re-create it for each record.
129
-
130
- my $i = 1;
131
- print _formatDump( $self, $dumpfmt, $_, \$props, $i++ ) . "\n"
132
- foreach ( keys %{ $self->{cache} } );
133
-
134
- exit(CLIVE_OK);
135
-}
136
-
137
-sub _grepCache {
138
- my $self = shift;
139
-
140
- my $config = clive::Config->instance->config;
141
- my $dumpfmt = $config->{cache_dump_format} || DEFAULT_DUMP_FORMAT;
142
- my $props = clive::Video->new
143
- ; # Reuse this rather than re-create it for each record.
144
-
145
- my $g
146
- = $config->{cache_ignore_case}
147
- ? qr|$config->{cache_grep}|i
148
- : qr|$config->{cache_grep}|;
149
-
150
- $self->{grep_queue} = ;
151
- my $i = 1;
152
- foreach ( keys %{ $self->{cache} } ) {
153
- my $dumpstr = _formatDump( $self, $dumpfmt, $_, \$props, $i++ );
154
- my @e = split( /#/, $self->{cache}{$_} );
155
- if ( grep /$g/, @e ) {
156
- push( @{ $self->{grep_queue} }, $props->page_link );
157
- print "$dumpstr\n"
158
- if ( $config->{cache_remove_record} );
159
- }
160
- }
161
-
162
- if ( $config->{cache_remove_record} ) {
163
- if ( scalar( @{ $self->{grep_queue} } ) > 0 ) {
164
- print("Confirm delete (y/N):");
165
- $_ = lc <STDIN>;
166
- chomp;
167
- if ( lc $_ eq "y" ) {
168
- foreach ( @{ $self->{grep_queue} } ) {
169
- my $hash = Digest::SHA::sha1_hex($_);
170
- delete $self->{cache}{$hash};
171
- }
172
- }
173
- exit(CLIVE_OK);
174
- }
175
- }
176
- if ( scalar( @{ $self->{grep_queue} } ) == 0 ) {
177
- clive::Log->instance->err( CLIVE_GREP,
178
- "nothing matched $g in cache" );
179
- exit(CLIVE_GREP);
180
- }
181
-}
182
-
183
-sub _formatDump {
184
- my ( $self, $dumpfmt, $hash, $props, $index ) = @_;
185
-
186
- if ( _mapRecord( $self, $props, $hash ) ) {
187
- my $title = $$props->page_title;
188
- my $id = $$props->video_id;
189
- my $host = $$props->video_host;
190
- my $len = $$props->file_length;
191
- my $mb = sprintf( "%.1f", clive::Util::toMB($len) );
192
- my $tstamp = $$props->time_stamp;
193
- my ( $date, $time ) = ( split( / /, $tstamp ) );
194
- my $format = $$props->video_format;
195
- $index = sprintf( "%04d", $index );
196
-
197
- my $fmt = $dumpfmt;
198
- $fmt =~ s/%t/$title/g;
199
- $fmt =~ s/%i/$id/g;
200
- $fmt =~ s/%h/$host/g;
201
- $fmt =~ s/%l/$len/g;
202
- $fmt =~ s/%m/$mb/g;
203
- $fmt =~ s/%d/$date/g;
204
- $fmt =~ s/%T/$time/g;
205
- $fmt =~ s/%s/$tstamp/g;
206
- $fmt =~ s/%f/$format/g;
207
- $fmt =~ s/%n/$index/g;
208
-
209
- return $fmt;
210
- }
211
- return "";
212
-}
213
-
214
-sub _clearCache {
215
- my $self = shift;
216
- my $count = 0;
217
- $self->{handle}->truncate($count);
218
- print "$count records truncated.\n";
219
- exit(CLIVE_OK);
220
-}
221
-
222
-sub DESTROY {
223
- my $self = shift;
224
- $self->{handle} = undef;
225
- if ( $self->{cache} ) {
226
- untie( %{ $self->{cache} } );
227
- }
228
-}
229
-
230
-1;
231
-
232
-# Said a joker to the thief.
233
clive-2.2.22.tar.bz2/lib/clive/Compat.pm
Deleted
113
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Compat;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-use clive::Error qw(CLIVE_OK CLIVE_READ);
29
-use clive::Util;
30
-
31
-# Upgrades clive 2.0/2.1 config to 2.2+ format.
32
-sub upgradeConfig {
33
- require File::Spec;
34
- my $path
35
- = File::Spec->catfile( $ENV{HOME}, ".config", "clive", "config" );
36
-
37
- require Config::Tiny;
38
- print("Verify $path.\n");
39
- my $c = Config::Tiny->read($path);
40
-
41
- if ( !$c ) {
42
- log->errn( "$path: " . Config::Tiny->errstr );
43
- exit(CLIVE_READ);
44
- }
45
-
46
- my %opts = (
47
- connect_timeout => $c->{http}->{connect_timeout},
48
- connect_timeout_socks => $c->{http}->{connect_timeout_socks},
49
- agent => $c->{http}->{agent},
50
- proxy => $c->{http}->{proxy},
51
- limit_rate => $c->{http}->{limit_rate},
52
- format => $c->{output}->{format},
53
- save_dir => $c->{output}->{savedir},
54
- cclass => $c->{output}->{cclass},
55
- filename_format => $c->{output}->{filename_format},
56
- format => $c->{output}->{format},
57
- cache_dump_format => $c->{output}->{show},
58
- exec => $c->{commands}->{exec},
59
- stream_exec => $c->{commands}->{stream},
60
-
61
- # Obsolete in 2.2:
62
- #progress => $c->{_}->{progress},
63
- #ytuser => $c->{youtube}->{user},
64
- #ytpass => $c->{youtube}->{pass },
65
- #clivepass => $c->{commands}->{clivepass},
66
- );
67
-
68
- my $data;
69
- while ( ( my $i ) = each(%opts) ) {
70
- $data .= qq/--$i="$opts{$i}"\n/
71
- if ( $opts{$i} );
72
- }
73
-
74
- if ( !$data ) {
75
- my $a = clive::Util::prompt(
76
- "error: Nothing to upgrade -- View file? (Y/n):");
77
- system("less $path")
78
- if ( $a ne "n" );
79
- exit(CLIVE_OK);
80
- }
81
-
82
- open my $fh, ">", "$path.new"
83
- or print( STDERR "error: $path.new: $!" )
84
- and exit(CLIVE_READ);
85
-
86
- print $fh $data;
87
- close $fh;
88
-
89
- my $a = clive::Util::prompt("View differences? (Y/n):");
90
- system("diff -u $path $path.new | less")
91
- if ( $a ne "n" );
92
-
93
- $a = clive::Util::prompt("Overwrite with new config? (y/N):");
94
- exit(CLIVE_OK)
95
- unless ( $a eq "y" );
96
-
97
- print("Backup -> $path.old\n");
98
- $c->write("$path.old");
99
-
100
- print("Upgrade.\n");
101
- require File::Copy;
102
- File::Copy::move( "$path.new", "$path" )
103
- or print( STDERR "error: move: $!" )
104
- and exit(CLIVE_READ);
105
- print("Done.\n");
106
-
107
- exit(CLIVE_OK);
108
-}
109
-
110
-1;
111
-
112
-# A wildcat did growl.
113
clive-2.2.22.tar.bz2/lib/clive/Config.pm
Deleted
202
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Config;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-use base 'Class::Singleton';
29
-
30
-use Getopt::ArgvFile(
31
- home => 1,
32
- startupFilename => qw(.cliverc .clive/config .config/clive/config),
33
-);
34
-
35
-use Getopt::Long qw(:config bundling);
36
-use File::Spec::Functions;
37
-use File::Path qw(mkpath);
38
-use Cwd qw(getcwd);
39
-
40
-use clive::HostFactory;
41
-use clive::Compat;
42
-use clive::Error qw(CLIVE_OK CLIVE_OPTARG);
43
-
44
-use version 0.77 (); our $VERSION = version->declare ("2.2.22");
45
-
46
-sub init {
47
- my $self = shift;
48
-
49
- my %config;
50
-
51
- GetOptions(
52
- \%config,
53
- 'debug', 'exec=s', 'cclass=s', 'stream=i',
54
- 'continue|c', 'recall|l', 'format|f=s', 'agent=s',
55
- 'quiet|q', 'proxy=s', 'stderr',
56
- 'hosts' => \&clive::HostFactory::dumpHosts,
57
- 'version|v' => \&_printVersion,
58
- 'license' => \&_printLicense,
59
- 'help|h', => \&_printHelp,
60
-
61
- 'cache_read|cache-read|cacheread|r',
62
- 'cache_dump|cache-dump|cachedump|d',
63
- 'cache_grep|cache-grep|cachegrep|g=s',
64
- 'cache_remove_record|cache-remove-record|cacheremoverecord|D',
65
- 'cache_ignore_case|cache_ignore-case|cacheignorecase|i',
66
- 'cache_dump_format|cache-dump-format|cachedumpformat=s',
67
- 'cache_clear|cache-clear|cacheclear',
68
- 'no_cache|no-cache|nocache',
69
- 'no_extract|no-extract|noextract|n',
70
- 'no_proxy|no-proxy|noproxy',
71
- 'filename_format|filename-format|filenameformat=s',
72
- 'emit_csv|emit-csv|emitcsv',
73
- 'stream_exec|stream-exec|streamexec=s',
74
- 'stream_pass|stream-pass|streampass|s',
75
- 'output_file|output-file|outputfile|O=s',
76
- 'limit_rate|limit-rate|limitrate=i',
77
- 'connect_timeout|connect-timeout|connecttimeout=i',
78
- 'connect_timeout_socks|connect-timeout-socks|connecttimeoutsocks=i',
79
- 'save_dir|save-dir|savedir=s',
80
- 'recall_file|recall-file|recallfile=s',
81
- 'cache_file|cache-file|cachefile=s',
82
- 'no_cclass|no-cclass|nocclass|C',
83
- 'stop_after|stop-after|stopafter=s',
84
- 'exec_run|exec-run|execrun|e',
85
- 'upgrade_config|upgrade-config|upgradeconfig' =>
86
- \&clive::Compat::upgradeConfig,
87
- 'cookie_jar|cookie-jar|cookiejar=s',
88
- 'print_fname|print-fname|printfname',
89
- ) or exit(CLIVE_OPTARG);
90
-
91
- my $homedir = $ENV{HOME} || getcwd();
92
-
93
- my $cachedir = $ENV{CLIVE_CACHE}
94
- || catfile( $homedir, ".cache", "clive" );
95
-
96
- eval { mkpath($cachedir) };
97
- die "$cachedir: $@"
98
- if ($@);
99
-
100
- $config{recall_file} ||= catfile( $cachedir, "last" );
101
- $config{cache_file} ||= catfile( $cachedir, "cache" );
102
-
103
- $config{format} ||= 'default';
104
-
105
- # Check format.
106
-
107
- # Youtube: For backward compatibility only.
108
- my @youtube_orig = qw (fmt17 fmt18 fmt22 fmt34 fmt35 fmt37 fmt43 fmt45);
109
-
110
- my @youtube_old =
111
- qw (mobile sd_270p sd_360p hq_480p hd_720p hd_1080p);
112
-
113
- my @youtube_arcane = qw (mp4 hd hq 3gp);
114
-
115
- # These are the most current ones, also listed with --hosts. Refer
116
- # to clive/Host/Youtube.pm for details.
117
-
118
- my @youtube_latest =
119
- qw (flv_240p flv_360p flv_480p mp4_360p mp4_720p mp4_1080p
120
- mp4_3072p webm_480p webm_720p 3gp_144p);
121
-
122
- # Other:
123
-
124
- my @spiegel = # vp6_388=default
125
- qw(vp6_64 vp6_576 vp6_928 h264_1400 small iphone podcast);
126
-
127
- my @golem = qw(high ipod); # medium=default
128
-
129
- my @formats = (
130
- qw(default best),
131
- @youtube_orig, @youtube_old, @youtube_arcane, @youtube_latest,
132
- @spiegel, @golem
133
- );
134
-
135
- #unless (@formats ~~ $config{format}) { # Perl 5.10.0+
136
- unless ( grep( /^$config{format}$/, @formats ) ) {
137
- clive::Log->instance->err( CLIVE_OPTARG,
138
- "unsupported format `$config{format}'" );
139
- exit(CLIVE_OPTARG);
140
- }
141
-
142
- my $log = clive::Log->instance;
143
- my $str = "%s depends on --stream-exec which is undefined";
144
-
145
- # Check streaming options.
146
-
147
- if ( $config{stream} && !$config{stream_exec} ) {
148
- $log->err( CLIVE_OPTARG, sprintf( $str, "--stream" ) );
149
- exit(CLIVE_OPTARG);
150
- }
151
-
152
- if ( $config{stream_pass} && !$config{stream_exec} ) {
153
- $log->err( CLIVE_OPTARG, sprintf( $str, "--stream-pass" ) );
154
- exit(CLIVE_OPTARG);
155
- }
156
-
157
- # Check --stop-after.
158
- if ( $config{stop_after} ) {
159
- if ( $config{stop_after} !~ /M$/
160
- && $config{stop_after} !~ /%$/ )
161
- {
162
- clive::Log->instance->err( CLIVE_OPTARG,
163
- "--stop-after must be terminated by either '%' or 'M'" );
164
- exit(CLIVE_OPTARG);
165
- }
166
- }
167
-
168
- $self->{config} = \%config;
169
-}
170
-
171
-sub config {
172
- my $self = shift;
173
- return $self->{config};
174
-}
175
-
176
-sub _printLicense {
177
- print
178
- "Copyright (C) 2007,2008,2009,2010 Toni Gundogdu. License: GNU GPL version 3+
179
-This is free software; see the source for copying conditions. There is NO
180
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
181
-";
182
- exit CLIVE_OK;
183
-}
184
-
185
-sub _printVersion {
186
- printf "clive version %s with WWW::Curl version $WWW::Curl::VERSION\n"
187
- . "os=%s, perl=%s, locale=%s\n",
188
- $VERSION, $^O, ( sprintf "%vd", $^V ), $ENV{LANG} || "?";
189
- exit CLIVE_OK;
190
-}
191
-
192
-sub _printHelp {
193
-
194
- # Edit bin/clive for --help contents.
195
- require Pod::Usage;
196
- Pod::Usage::pod2usage( -exitstatus => CLIVE_OK, -verbose => 1 );
197
-}
198
-
199
-1;
200
-
201
-# There's too much confusion.
202
clive-2.2.22.tar.bz2/lib/clive/Curl.pm
Deleted
291
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Curl;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-use base 'Class::Singleton';
29
-
30
-use WWW::Curl::Easy 4.05;
31
-use Cwd;
32
-use Encode qw(from_to decode_utf8 FB_CROAK);
33
-
34
-use clive::Error qw(CLIVE_NET CLIVE_STOP);
35
-
36
-my $bp;
37
-
38
-sub init {
39
- my ($self, $config) = (shift, clive::Config->instance->config);
40
-
41
- my $c = WWW::Curl::Easy->new;
42
- $c->setopt( CURLOPT_USERAGENT, $config->{agent} || "Mozilla/5.0" );
43
- $c->setopt( CURLOPT_FOLLOWLOCATION, 1 );
44
- $c->setopt( CURLOPT_AUTOREFERER, 1 );
45
- $c->setopt( CURLOPT_HEADER, 1 );
46
- $c->setopt( CURLOPT_NOBODY, 0 );
47
- # Ideally we'd set this for dailymotion only, as quvi does, but
48
- # the current (2.2) code would require too many changes to do this.
49
- $c->setopt( CURLOPT_COOKIE, "family_filter=off" );
50
-
51
- $c->setopt( CURLOPT_VERBOSE, 1 )
52
- if $config->{debug};
53
-
54
- $c->setopt( CURLOPT_PROXY, $config->{proxy} )
55
- if $config->{proxy};
56
-
57
- $c->setopt( CURLOPT_PROXY, "" )
58
- if $config->{no_proxy};
59
-
60
- $c->setopt( CURLOPT_COOKIEJAR, $config->{cookie_jar} )
61
- if $config->{cookie_jar};
62
-
63
- $self->{handle} = $c;
64
-}
65
-
66
-sub setTimeout {
67
- my ( $self, $no_socks_timeout ) = @_;
68
-
69
- my $config = clive::Config->instance->config;
70
-
71
- $self->{handle}
72
- ->setopt( CURLOPT_CONNECTTIMEOUT, $config->{connecttimeout} || 30 );
73
-
74
- $self->{handle}
75
- ->setopt( CURLOPT_TIMEOUT, $config->{connecttimeoutsocks} || 30 )
76
- unless $no_socks_timeout;
77
-}
78
-
79
-sub resetTimeout {
80
-
81
- # Resetting SOCKS timeout is sufficient.
82
- my $self = shift;
83
- $self->{handle}->setopt( CURLOPT_TIMEOUT, 0 );
84
-}
85
-
86
-sub fetchToMem {
87
- my ( $self, $url, $content, $what ) = @_;
88
-
89
- my $log = clive::Log->instance;
90
-
91
- my $_what = $what || $url;
92
- $log->out("fetch $_what ...");
93
-
94
- $self->{handle}->setopt( CURLOPT_URL, $url );
95
- $self->{handle}->setopt( CURLOPT_ENCODING, "" );
96
-
97
- $$content = "";
98
- open( my $fh, ">", $content );
99
-
100
- $self->{handle}->setopt( CURLOPT_WRITEDATA, $fh );
101
-
102
- setTimeout($self);
103
- my $rc = $self->{handle}->perform;
104
- resetTimeout($self);
105
-
106
- close($fh);
107
-
108
- if ( $rc == 0 ) {
109
- my $httpcode = $self->{handle}->getinfo(CURLINFO_RESPONSE_CODE);
110
- if ( $httpcode == 200 ) {
111
- $log->out("done.\n");
112
- $rc = 0;
113
- }
114
- else {
115
- $log->errn( CLIVE_NET,
116
- $self->{handle}->strerror($httpcode) . " (http/$httpcode)" );
117
- $rc = 1;
118
- }
119
- }
120
- else {
121
- $log->errn( CLIVE_NET,
122
- $self->{handle}->strerror($rc) . " (http/$rc)" );
123
- $rc = 1;
124
- }
125
-
126
- from_to( $$content, $1, "utf8" )
127
- if ( $$content =~ /charset=(.*?)"/ );
128
-
129
- from_to( $$content, $1, "utf8" )
130
- if ( $$content =~ /encoding="(.*?)"/ );
131
-
132
- $$content = decode_utf8( $$content, Encode::FB_CROAK );
133
-
134
- return ($rc);
135
-}
136
-
137
-sub queryFileLength {
138
- my ( $self, $props ) = @_;
139
-
140
- my $log = clive::Log->instance;
141
- $log->out("verify video link ...");
142
-
143
- my $buffer = "";
144
- open( my $fh, ">", \$buffer );
145
-
146
- $self->{handle}->setopt( CURLOPT_URL, $$props->video_link );
147
- $self->{handle}->setopt( CURLOPT_WRITEDATA, $fh );
148
-
149
- # GET -> HEAD.
150
- $self->{handle}->setopt( CURLOPT_NOBODY, 1 );
151
-
152
- setTimeout($self);
153
- my $rc = $self->{handle}->perform;
154
- resetTimeout($self);
155
- close($fh);
156
-
157
- # HEAD -> GET.
158
- $self->{handle}->setopt( CURLOPT_HTTPGET, 1 );
159
-
160
- if ( $rc == 0 ) {
161
- my $httpcode = $self->{handle}->getinfo(CURLINFO_RESPONSE_CODE);
162
- if ( $httpcode == 200 || $httpcode == 206 ) {
163
- $$props->file_length(
164
- $self->{handle}->getinfo(CURLINFO_CONTENT_LENGTH_DOWNLOAD) );
165
-
166
- my $content_type
167
- = $self->{handle}->getinfo(CURLINFO_CONTENT_TYPE);
168
- $$props->content_type($content_type);
169
-
170
- # Figure out file suffix.
171
- if ( $content_type =~ /\/(.*)/ ) {
172
- my $suffix = $1; # Default to whatever was matched.
173
- if ( $1 =~ /octet/
174
- || $1 =~ /plain/
175
- || $1 =~ /swf/
176
- || $1 =~ /flash/ )
177
- {
178
-
179
- # Otherwise use "flv" for the above exceptions.
180
- $suffix = "flv";
181
- }
182
- $suffix =~ tr{x-}//d; # e.g. x-flv -> flv.
183
- $$props->file_suffix($suffix);
184
- $log->out("done.\n");
185
- return (0);
186
- }
187
- else {
188
- $log->errn( CLIVE_NET,
189
- "$content_type: unexpected content-type" );
190
- }
191
- }
192
- else {
193
- $log->errn( CLIVE_NET,
194
- $self->{handle}->strerror($httpcode) . " (http/$httpcode)" );
195
- }
196
- }
197
- else {
198
- $log->errn( CLIVE_NET,
199
- $self->{handle}->strerror($rc) . " (http/$rc)" );
200
- }
201
- return (1);
202
-}
203
-
204
-sub fetchToFile {
205
- my ( $self, $props ) = @_;
206
-
207
- my $log = clive::Log->instance;
208
- my $config = clive::Config->instance->config;
209
- my $initial = $$props->initial_length;
210
- my $mode = ">";
211
-
212
- if ( $config->{continue} && $initial > 0 ) {
213
- my $remaining = $$props->file_length - $initial;
214
- $log->out(
215
- sprintf(
216
- "from: %d (%.1fM) remaining: %d (%.1fM)\n",
217
- $initial, clive::Util::toMB($initial),
218
- $remaining, clive::Util::toMB($remaining)
219
- )
220
- );
221
- $mode = ">>";
222
- }
223
-
224
- my $fpath = $$props->filename;
225
-
226
- open( my $fh, $mode, $fpath )
227
- or die("$fpath: $!");
228
-
229
- $self->{handle}->setopt( CURLOPT_URL, $$props->video_link );
230
- $self->{handle}->setopt( CURLOPT_ENCODING, "identity" );
231
- $self->{handle}->setopt( CURLOPT_WRITEDATA, $fh );
232
- $self->{handle}->setopt( CURLOPT_HEADER, 0 );
233
- $self->{handle}->setopt( CURLOPT_RESUME_FROM, $$props->initial_length );
234
-
235
- $self->{handle}->setopt( CURLOPT_PROGRESSFUNCTION, \&progress_callback );
236
- $self->{handle}->setopt( CURLOPT_NOPROGRESS, 0 );
237
-
238
- require clive::Progress::Bar;
239
- $bp = clive::Progress::Bar->new($props);
240
-
241
- if ( $config->{limit_rate} ) {
242
- $self->{handle}->setopt( CURLOPT_MAX_RECV_SPEED_LARGE,
243
- $config->{limit_rate} * 1024 );
244
- }
245
-
246
- setTimeout( $self, 1 ); # 1=Do not enable SOCKS timeout.
247
- my $rc = $self->{handle}->perform;
248
- resetTimeout($self);
249
-
250
- close($fh);
251
-
252
- $self->{handle}->setopt( CURLOPT_MAX_RECV_SPEED_LARGE, 0 );
253
- $self->{handle}->setopt( CURLOPT_HEADER, 1 );
254
- $self->{handle}->setopt( CURLOPT_NOPROGRESS, 1 );
255
- $self->{handle}->setopt( CURLOPT_RESUME_FROM, 0 );
256
-
257
- if ( $rc == 0 ) {
258
- my $httpcode = $self->{handle}->getinfo(CURLINFO_RESPONSE_CODE);
259
- if ( $httpcode == 200 || $httpcode == 206 ) {
260
- $bp->finish();
261
- }
262
- else {
263
- $log->errn( CLIVE_NET,
264
- $self->{handle}->strerror($httpcode) . " (http/$httpcode)" );
265
- return (1);
266
- }
267
- }
268
- else {
269
- $log->errn(
270
- $rc == 42 ? CLIVE_STOP : CLIVE_NET,
271
- $self->{handle}->strerror($rc) . " (rc/$rc)"
272
- );
273
- return (1);
274
- }
275
-
276
- clive::Exec->instance->resetStream;
277
- $log->out("\n");
278
-
279
- return (0);
280
-}
281
-
282
-sub progress_callback {
283
- my ( $percent, $stop_transfer, $props ) = $bp->update(@_);
284
- clive::Exec->instance->runStream( $percent, $props );
285
- return ($stop_transfer);
286
-}
287
-
288
-1;
289
-
290
-# I can't get no relief.
291
clive-2.2.22.tar.bz2/lib/clive/Error.pm
Deleted
62
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009,2010 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Error;
24
-
25
-require Exporter;
26
-
27
-our @ISA = qw(Exporter);
28
-
29
-use constant {
30
- CLIVE_OK => 0,
31
- CLIVE_NOTHINGTODO => 1, # file already retrieved
32
- CLIVE_NOSUPPORT => 2, # host not supported
33
- CLIVE_READ => 3, # file open/read error
34
- CLIVE_GREP => 4, # grep: nothing matched in cache
35
- CLIVE_OPTARG => 5, # invalid option argument
36
- CLIVE_SYSTEM => 6, # system call failed (e.g. fork)
37
- CLIVE_REGEXP => 7, # regexp pattern matching failed
38
- CLIVE_FORMAT => 8, # requested format unavailable
39
- CLIVE_NET => 9, # network error
40
- CLIVE_STOP => 10, # --stop-after
41
- CLIVE_MARKEDBROKEN => 11, # support marked broken
42
-};
43
-
44
-our @EXPORT_OK = qw(
45
- CLIVE_OK
46
- CLIVE_NOTHINGTODO
47
- CLIVE_NOSUPPORT
48
- CLIVE_READ
49
- CLIVE_GREP
50
- CLIVE_OPTARG
51
- CLIVE_SYSTEM
52
- CLIVE_REGEXP
53
- CLIVE_FORMAT
54
- CLIVE_NET
55
- CLIVE_STOP
56
- CLIVE_MARKEDBROKEN
57
-);
58
-
59
-1;
60
-
61
-# Outside in the cold distance.
62
clive-2.2.22.tar.bz2/lib/clive/Exec.pm
Deleted
156
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Exec;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-use base 'Class::Singleton';
29
-
30
-use clive::Error qw(CLIVE_OK CLIVE_OPTARG CLIVE_SYSTEM);
31
-
32
-sub init {
33
- my $self = shift;
34
- $self->{exec_queue} = ;
35
- $self->{stream_flag} = 0;
36
- $self->{stream_pid} = -1;
37
-
38
- my $config = clive::Config->instance->config;
39
- if ( $config->{exec} ) {
40
- if ( $config->{exec} !~ /;+$/ ) {
41
- clive::Log->instance->err( CLIVE_OPTARG,
42
- "--exec expression must be "
43
- . "terminated by either ';' or '+'" );
44
- exit(CLIVE_OPTARG);
45
- }
46
- }
47
-
48
- if ( !$config->{exec} && $config->{exec_run} ) {
49
- clive::Log->instance->err( CLIVE_OPTARG,
50
- "--exec-run depends on --exec" );
51
- exit(CLIVE_OPTARG);
52
- }
53
-}
54
-
55
-sub queue {
56
- my $self = shift;
57
- if (@_) {
58
- my $config = clive::Config->instance->config;
59
- if ( $config->{exec} && $config->{exec_run} ) {
60
- my $props = shift;
61
- push( @{ $self->{exec_queue} }, $$props->filename );
62
- }
63
- }
64
- return $self->{exec_queue};
65
-}
66
-
67
-sub runExec {
68
- my $config = clive::Config->instance->config;
69
- return if !$config->{exec_run};
70
-
71
- my $self = shift;
72
- if ( $config->{exec} =~ /;$/ ) { # Semi
73
- foreach ( @{ $self->{exec_queue} } ) {
74
- my $cmd = $config->{exec};
75
- $cmd =~ s/%i/"$_"/g;
76
- $cmd =~ tr{;}//d;
77
- system("$cmd");
78
- }
79
- }
80
- else { # Plus
81
- my $cmd = sprintf( "%s ", $config->{exec} );
82
- $cmd =~ s/%i//g;
83
- $cmd =~ tr{+}//d;
84
- $cmd .= sprintf( '"%s" ', $_ ) foreach ( @{ $self->{exec_queue} } );
85
- system("$cmd");
86
- }
87
-}
88
-
89
-sub resetStream {
90
- my $self = shift;
91
-
92
- waitpid( $self->{stream_pid}, 0 )
93
- if $self->{stream_flag};
94
-
95
- $self->{stream_flag} = 0;
96
- $self->{stream_pid} = -1;
97
-}
98
-
99
-sub runStream {
100
- my ( $self, $percent, $props ) = @_;
101
- my $config = clive::Config->instance->config;
102
- if ( $config->{stream}
103
- && $config->{stream_exec}
104
- && !$self->{stream_flag} )
105
- {
106
- _forkStreamer( $self, \$config, $props )
107
- if ( $percent >= $config->{stream} );
108
- }
109
-}
110
-
111
-sub passStream {
112
- my ( $self, $props ) = @_;
113
-
114
- my $config = clive::Config->instance->config;
115
- my $cmd = $config->{stream_exec};
116
- my $lnk = $$props->video_link;
117
-
118
- $cmd =~ s/%i/"$lnk"/g;
119
-
120
- my $log = clive::Log->instance;
121
- $log->out("stream ...");
122
-
123
- my $n = system($cmd);
124
-
125
- if ( $n == 0 ) {
126
- $log->out("done.\n");
127
- }
128
- elsif ( $n == -1 ) {
129
- $log->errn( CLIVE_SYSTEM, "failed to execute: `$!'" );
130
- }
131
- else {
132
- $log->errn( CLIVE_SYSTEM, "child exited with: " . ( $n >> 8 ) );
133
- }
134
-}
135
-
136
-sub _forkStreamer {
137
- my ( $self, $config, $props ) = @_;
138
-
139
- $self->{stream_flag} = 1;
140
- my $child = fork;
141
- if ( $child < 0 ) {
142
- clive::Log->instance->errn( CLIVE_SYSTEM, "fork: $!" );
143
- }
144
- elsif ( $child == 0 ) {
145
- my $cmd = $$config->{stream_exec};
146
- my $fname = $$props->filename;
147
- $cmd =~ s/%i/"$fname"/g;
148
- system("$cmd");
149
- exit(CLIVE_OK);
150
- }
151
-}
152
-
153
-1;
154
-
155
-# Businessmen they, they drink my wine.
156
clive-2.2.22.tar.bz2/lib/clive/Host
Deleted
2
1
-(directory)
2
clive-2.2.22.tar.bz2/lib/clive/Host/Break.pm
Deleted
64
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Host::Break;
24
-
25
-# Rewritten from the original code contribution by Jan Hulsbergen
26
-# <afoo@gmail.com> which was written in Python for clive 1.0.
27
-
28
-use warnings;
29
-use strict;
30
-
31
-sub new {
32
- return bless( {}, shift );
33
-}
34
-
35
-sub parsePage {
36
- my ( $self, $content, $props ) = @_;
37
-
38
- $$props->video_host("break");
39
-
40
- my %re = (
41
- id => qr|sGlobalContentID='(.*?)'|,
42
- fname => qr|sGlobalFileName='(.*?)'|,
43
- fhash => qr|flashVars.icon = \"(.*?)\"|,
44
- title => qr|id="vid_title" content="(.*?)"|
45
- );
46
-
47
- my $tmp;
48
- if ( clive::Util::matchRegExps( \%re, \$tmp, $content ) == 0 ) {
49
-
50
- my $xurl = "$tmp->{fname}.flv?$tmp->{fhash}";
51
-
52
- $$props->video_id( $tmp->{id} );
53
- $$props->page_title( undef, $tmp->{title} );
54
- $$props->video_link($xurl);
55
-
56
- return (0);
57
- }
58
- return (1);
59
-}
60
-
61
-1;
62
-
63
-# Ploughmen dig my earth.
64
clive-2.2.22.tar.bz2/lib/clive/Host/Buzzhumor.pm
Deleted
53
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2010 Toni Gundogdu.
7
-#
8
-# clive is free software: you can redistribute it and/or modify it under
9
-# the terms of the GNU General Public License as published by the Free
10
-# Software Foundation, either version 3 of the License, or (at your option)
11
-# any later version.
12
-#
13
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
14
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
16
-# details.
17
-#
18
-# You should have received a copy of the GNU General Public License along
19
-# with this program. If not, see <http://www.gnu.org/licenses/>.
20
-###########################################################################
21
-package clive::Host::Buzzhumor;
22
-
23
-use warnings;
24
-use strict;
25
-
26
-sub new {
27
- return bless( {}, shift );
28
-}
29
-
30
-sub parsePage {
31
- my ( $self, $content, $props ) = @_;
32
-
33
- $$props->video_host("buzzhumor");
34
-
35
- my %re = (
36
- id => qr|/videos/(\d+)/|,
37
- lnk => qr|&file=(.*?)"|
38
- );
39
-
40
- my $tmp;
41
- if ( clive::Util::matchRegExps( \%re, \$tmp, $content ) == 0 ) {
42
-
43
- $$props->video_id( $tmp->{id} );
44
- $$props->video_link( $tmp->{lnk} );
45
-
46
- return (0);
47
- }
48
-
49
- return (1);
50
-}
51
-
52
-1;
53
clive-2.2.22.tar.bz2/lib/clive/Host/Clipfish.pm
Deleted
78
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Host::Clipfish;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-sub new {
29
- return bless( {}, shift );
30
-}
31
-
32
-sub parsePage {
33
- my ( $self, $content, $props ) = @_;
34
-
35
- $$props->video_host("clipfish");
36
-
37
- my %re = ( id => qr|/video/(.*?)/| );
38
-
39
- my $tmp;
40
- if ( clive::Util::matchRegExps( \%re, \$tmp, \$$props->page_link ) == 0 )
41
- {
42
- my $url
43
- = "http://www.clipfish.de/video_n.php?p=0|DE&vid=" . $tmp->{id};
44
-
45
- if ( _fetchConfig( $self, $url ) == 0 ) {
46
-
47
- $$props->video_id( $tmp->{id} );
48
- $$props->video_link( $self->{video_link} );
49
-
50
- return (0);
51
- }
52
- }
53
- return (1);
54
-}
55
-
56
-sub _fetchConfig {
57
- my ( $self, $url ) = @_;
58
-
59
- my $curl = clive::Curl->instance;
60
-
61
- my $content;
62
- if ( $curl->fetchToMem( $url, \$content, "config" ) == 0 ) {
63
-
64
- my %re = ( xurl => qr|\&url=(.*?)\&| );
65
-
66
- my $tmp;
67
- if ( clive::Util::matchRegExps( \%re, \$tmp, \$content ) == 0 ) {
68
-
69
- $self->{video_link} = $tmp->{xurl};
70
-
71
- return (0);
72
- }
73
- }
74
- return (1);
75
-}
76
-
77
-1;
78
clive-2.2.22.tar.bz2/lib/clive/Host/Dailymotion.pm
Deleted
136
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009,2010,2011 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Host::Dailymotion;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-use clive::Error qw(CLIVE_REGEXP CLIVE_NOSUPPORT);
29
-
30
-sub new { return bless ({}, shift); }
31
-
32
-sub parsePage {
33
-
34
- my ($self, $content, $props) = @_;
35
-
36
- $$props->video_host("dailymotion");
37
-
38
- if ($$content =~ /SWFObject\("http:/) {
39
-
40
- clive::Log->instance->err(CLIVE_NOSUPPORT,
41
- "Looks like a partner video. Refusing to continue.");
42
-
43
- return 1;
44
- }
45
-
46
- # Match video ID, title.
47
-
48
- my %re = (
49
- id => qr|video/(.*?)_|,
50
- title => qr|title="(.*?)"|,
51
- );
52
-
53
- my ($tmp, $lnk);
54
-
55
- return 1 if clive::Util::matchRegExps (\%re, \$tmp, $content) != 0;
56
-
57
- # Some videos have only one link available.
58
-
59
- if ($$content =~ /"video", "(.*?)"/)
60
- { $lnk = $1; }
61
-
62
- else {
63
- my $r;
64
- ($r,$lnk) = parseVideoURL ($self, $content);
65
- return $r unless $r == 0;
66
- }
67
-
68
- if (not defined $lnk) {
69
- clive::Log->instance->err (CLIVE_REGEXP, "no match: video URL");
70
- return 1;
71
- }
72
-
73
- # Cleanup video link.
74
-
75
- $lnk =~ s/%5C//g;
76
-
77
- require URI::Escape;
78
- $lnk = URI::Escape::uri_unescape ($lnk);
79
-
80
- # Set video properties.
81
-
82
- $$props->video_id ($tmp->{id});
83
- $$props->page_title (undef, $tmp->{title});
84
- $$props->video_link ($lnk);
85
-
86
- return 0;
87
-}
88
-
89
-sub parseVideoURL {
90
-
91
- my ($self, $content) = @_;
92
- my $lnk;
93
-
94
- # Match available formats.
95
-
96
- my $re = qr|%22(\w\w)URL%22%3A%22(.*?)%22|;
97
- my %lst = $$content =~ /$re/gm;
98
-
99
- if (keys %lst == 0) {
100
- clive::Log->instance->err(CLIVE_REGEXP, "no match: `$re'");
101
- return (1, $lnk);
102
- }
103
-
104
- # User requested format.
105
-
106
- my $format = clive::Config->instance->config->{format};
107
- $format = "sd" if $format eq "default"; # sd=default
108
-
109
- # Match requested format to a video link.
110
-
111
- foreach (qw/sd hq hd/) {
112
-
113
- if (not exists $lst{$_}) {
114
- print STDERR "warning: `$_' not found in hash, ignored.\n";
115
- next;
116
- }
117
-
118
- if ($format eq "best")
119
- { $lnk = $lst{$_}; }
120
-
121
- elsif ($format eq $_) {
122
- $lnk = $lst{$_};
123
- last;
124
- }
125
-
126
- }
127
-
128
- # parsePage will take care of checking $lnk value.
129
-
130
- return (0, $lnk);
131
-}
132
-
133
-1;
134
-
135
-# Nobody of it is worth.
136
clive-2.2.22.tar.bz2/lib/clive/Host/Funnyhub.pm
Deleted
52
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Host::Funnyhub;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-sub new {
29
- return bless( {}, shift );
30
-}
31
-
32
-sub parsePage {
33
- my ( $self, $content, $props ) = @_;
34
-
35
- $$props->video_host("funnyhub");
36
-
37
- my %re = (
38
- id => qr|/videofiles/(.*?)_|,
39
- url => qr|"flv", "(.*?)"|,
40
- );
41
-
42
- my $tmp;
43
- if ( clive::Util::matchRegExps( \%re, \$tmp, $content ) == 0 ) {
44
- $$props->video_id( $tmp->{id} );
45
- $$props->video_link( $tmp->{url} );
46
- return (0);
47
- }
48
- return (1);
49
-}
50
-
51
-1;
52
clive-2.2.22.tar.bz2/lib/clive/Host/Gaskrank.pm
Deleted
54
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Host::Gaskrank;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-sub new {
29
- return bless( {}, shift );
30
-}
31
-
32
-sub parsePage {
33
- my ( $self, $content, $props ) = @_;
34
-
35
- $$props->video_host("gaskrank");
36
-
37
- my %re = (
38
- id => qr|.+/(.*?).flv|,
39
- xurl => qr|file=(.*?)"|,
40
- );
41
-
42
- my $tmp;
43
- if ( clive::Util::matchRegExps( \%re, \$tmp, $content ) == 0 ) {
44
- $$props->video_id( $tmp->{id} );
45
- $$props->video_link( $tmp->{xurl} );
46
- return (0);
47
- }
48
- return (1);
49
-}
50
-
51
-1;
52
-
53
-# No reason to get excited.
54
clive-2.2.22.tar.bz2/lib/clive/Host/Golem.pm
Deleted
119
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Host::Golem;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-# --format=(high|medium|ipod)
29
-# high = hd
30
-# medium = default (what we call "default" in clive)
31
-# ipod = ipod
32
-
33
-# Note that we do not use "medium" at all. The host
34
-# defaults to "medium" if "?q=" is not appended.
35
-# Users do not need to bother themselves with this.
36
-
37
-# We use config:title instead of video page title
38
-# if it can be parsed from the config. Saves us
39
-# the trouble from cleaning up the <title>.
40
-
41
-sub new {
42
- return bless( {}, shift );
43
-}
44
-
45
-sub parsePage {
46
- my ( $self, $content, $props ) = @_;
47
-
48
- $$props->video_host("golem");
49
-
50
- my %re = ( id => qr|"id", "(.*?)"| );
51
-
52
- my $tmp;
53
- if ( clive::Util::matchRegExps( \%re, \$tmp, $content ) == 0 ) {
54
- my $url = "http://video.golem.de/xml/$tmp->{id}";
55
- if ( _fetchConfig( $self, $url, $tmp->{id} ) == 0 ) {
56
-
57
- $$props->page_title( undef, $self->{page_title} )
58
- if ( $self->{page_title} );
59
-
60
- $$props->video_id( $tmp->{id} );
61
- $$props->video_link( $self->{video_link} );
62
-
63
- return (0);
64
- }
65
- }
66
- return (1);
67
-}
68
-
69
-sub _fetchConfig {
70
- my ( $self, $url, $id ) = @_;
71
-
72
- my $curl = clive::Curl->instance;
73
-
74
- my $content;
75
- if ( $curl->fetchToMem( $url, \$content, "config" ) == 0 ) {
76
-
77
- my $xurl = "http://video.golem.de/download/$id";
78
- my $config = clive::Config->instance->config;
79
-
80
- my $title = $1
81
- if ( $content =~ /<title>(.*?)<\/title>/ );
82
-
83
- my $fmt;
84
- if ( $config->{format} eq "best" ) {
85
-
86
- my %re = ( path => qr|<filename>(.*?)</filename>| );
87
- my @fnames = $content =~ /$re{path}/g;
88
-
89
- foreach my $i (qw/hd sd ipod/) {
90
- if ( my @b = grep( /$i/, @fnames ) ) {
91
- $fmt = $b0;
92
- last;
93
- }
94
- }
95
-
96
- $fmt =~ s/hd/high/;
97
- $fmt =~ s/sd//; # medium
98
- }
99
- else {
100
- $fmt = $config->{format};
101
- $fmt =~ s/default//; # medium (default)
102
- }
103
-
104
- $xurl .= "?q=$fmt"
105
- if $fmt;
106
-
107
- $self->{page_title} = $title;
108
- $self->{video_link} = $xurl;
109
-
110
- return (0)
111
- if $xurl;
112
- }
113
- return (1);
114
-}
115
-
116
-1;
117
-
118
-# And the wind began to howl.
119
clive-2.2.22.tar.bz2/lib/clive/Host/Google.pm
Deleted
75
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Host::Google;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-use clive::Error qw(CLIVE_FORMAT);
29
-
30
-sub new {
31
- return bless( {}, shift );
32
-}
33
-
34
-sub parsePage {
35
- my ( $self, $content, $props ) = @_;
36
-
37
- $$props->video_host("google");
38
-
39
- my %re = (
40
- id => qr|docid:'(.*?)'|,
41
- xurl => qr|videoUrl\\x3d(.*?)\\x26|,
42
- );
43
-
44
- my $tmp;
45
- if ( clive::Util::matchRegExps( \%re, \$tmp, $content ) == 0 ) {
46
-
47
- my $mp4 = "http://$1=ck1"
48
- if ( $$content =~ /http:\/\/(.*?)\=ck1/ );
49
-
50
- my $config = clive::Config->instance->config;
51
-
52
- my $xurl;
53
- if ( ( $config->{format} eq "mp4" || $config->{format} eq "best" )
54
- && $mp4 )
55
-
56
- {
57
- $xurl = $mp4;
58
- }
59
- else {
60
- require URI::Escape;
61
- $xurl = URI::Escape::uri_unescape( $tmp->{xurl} );
62
- }
63
-
64
- $$props->video_id( $tmp->{id} );
65
- $$props->video_link($xurl);
66
-
67
- return (0);
68
- }
69
- return (1);
70
-}
71
-
72
-1;
73
-
74
-# The thief he kindly spoke.
75
clive-2.2.22.tar.bz2/lib/clive/Host/Liveleak.pm
Deleted
87
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Host::Liveleak;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-sub new {
29
- return bless( {}, shift );
30
-}
31
-
32
-sub parsePage {
33
- my ( $self, $content, $props ) = @_;
34
-
35
- $$props->video_host("liveleak");
36
-
37
- my %re = (
38
- id => qr|token=(.*?)'&|,
39
- config => qr|'config','(.*?)'|,
40
- );
41
-
42
- my $tmp;
43
- if ( clive::Util::matchRegExps( \%re, \$tmp, $content ) == 0 ) {
44
- if ( _parseConfig( $self, $tmp->{config} ) == 0 ) {
45
- $$props->video_id( $tmp->{id} );
46
- $$props->video_link( $self->{video_link} );
47
- return (0);
48
- }
49
- }
50
- return (1);
51
-}
52
-
53
-sub _parseConfig {
54
- my ( $self, $url ) = @_;
55
-
56
- require URI::Escape;
57
- $url = URI::Escape::uri_unescape($url);
58
-
59
- my $curl = clive::Curl->instance;
60
- my $log = clive::Log->instance;
61
-
62
- my $content;
63
- if ( $curl->fetchToMem( $url, \$content, "config" ) == 0 ) {
64
- my %re = ( file => qr|<file>(.*?)</file>| );
65
- my $tmp;
66
- if ( clive::Util::matchRegExps( \%re, \$tmp, \$content ) == 0 ) {
67
- if ( $curl->fetchToMem( $tmp->{file}, \$content, "playlist" )
68
- == 0 )
69
- {
70
- %re = ( location => qr|<location>(.*?)</location>| );
71
- $tmp = undef;
72
- if (clive::Util::matchRegExps( \%re, \$tmp, \$content ) == 0 )
73
- {
74
- $self->{video_link} = $tmp->{location};
75
- $self->{video_link} =~ tr/ //d;
76
- return (0);
77
- }
78
- }
79
- }
80
- }
81
- return (1);
82
-}
83
-
84
-1;
85
-
86
-# There are many here among us.
87
clive-2.2.22.tar.bz2/lib/clive/Host/Sevenload.pm
Deleted
96
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-
24
-# Rewritten from the original code contribution by Kai Wasserbach
25
-# <debian@carbon-project.org> which was written in Python for clive 1.0.
26
-
27
-package clive::Host::Sevenload;
28
-
29
-use warnings;
30
-use strict;
31
-
32
-use clive::Error qw(CLIVE_REGEXP);
33
-
34
-sub new {
35
- return bless( {}, shift );
36
-}
37
-
38
-sub parsePage {
39
- my ( $self, $content, $props ) = @_;
40
-
41
- $$props->video_host("sevenload");
42
-
43
- my %re = ( config => qr|configPath=(.*?)"| );
44
-
45
- my $tmp;
46
- if ( clive::Util::matchRegExps( \%re, \$tmp, $content ) == 0 ) {
47
- return _parseConfig( $self, $tmp->{config}, $props );
48
- }
49
- return (1);
50
-}
51
-
52
-sub _parseConfig {
53
- my ( $self, $url, $props ) = @_;
54
-
55
- require URI::Escape;
56
- $url = URI::Escape::uri_unescape($url);
57
-
58
- my $curl = clive::Curl->instance;
59
- my $log = clive::Log->instance;
60
-
61
- my $content;
62
- if ( $curl->fetchToMem( $url, \$content, "config" ) == 0 ) {
63
-
64
- my $re = qr|item id="(\w+)">\s+<title>(.*?)</|i;
65
-
66
- if ( $content =~ $re ) {
67
- my ( $id, $title ) = ( $1, $2 );
68
- $$props->video_id($id);
69
- $$props->page_title( undef, $title );
70
- }
71
- else {
72
- clive::Log->instance->err( CLIVE_REGEXP, "no match: `$re'" );
73
- return (1);
74
- }
75
-
76
- $re = qr|location seeking="yes">(.*?)</|i;
77
-
78
- if ( $content =~ /$re/ ) {
79
- my $lnk = $1;
80
- $lnk =~ s/&/&/g;
81
- $$props->video_link($lnk);
82
- }
83
- else {
84
- clive::Log->instance->err( CLIVE_REGEXP, "no match: `$re'" );
85
- return (1);
86
- }
87
-
88
- return (0);
89
- }
90
- return (1);
91
-}
92
-
93
-1;
94
-
95
-# But ah, you and I we've been through that.
96
clive-2.2.22.tar.bz2/lib/clive/Host/Spiegel.pm
Deleted
135
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Host::Spiegel;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-# The fetched config xml contains paths to
29
-# 3gp, small, etc. but we are yet to find
30
-# a working link to test them properly.
31
-
32
-# h264 and the vp_(*) videos seem to work OK.
33
-
34
-use clive::Curl;
35
-use clive::Log;
36
-
37
-sub new {
38
- return bless( {}, shift );
39
-}
40
-
41
-sub parsePage {
42
- my ( $self, $content, $props ) = @_;
43
-
44
- $$props->video_host("spiegel");
45
-
46
- my %re = ( id => qr|/video/video-(.*?)\.| );
47
-
48
- my $id = $1
49
- if ( $$props->page_link =~ /$re{id}/ );
50
-
51
- my $log = clive::Log->instance;
52
-
53
- if ( !$id ) {
54
- $log->errn("not matched: `$re{id}'");
55
- return (1);
56
- }
57
-
58
- # playlist: get title (html page does not disclose title)
59
- if ( _fetchPlaylist( $self, $id ) == 0 ) {
60
-
61
- # config: get list of available videos
62
- if ( _fetchConfig( $self, $id ) == 0 ) {
63
- $$props->video_id($id);
64
- $$props->page_title( undef, $self->{title} );
65
- $$props->video_link( $self->{video_link} );
66
- return (0);
67
- }
68
- }
69
- return (1);
70
-}
71
-
72
-sub _fetchPlaylist {
73
- my ( $self, $id ) = @_;
74
-
75
- my $url = "http://www1.spiegel.de/active/playlist/fcgi/playlist.fcgi/"
76
- . "asset=flashvideo/mode=id/id=$id";
77
-
78
- my $curl = clive::Curl->instance;
79
-
80
- my $content;
81
- if ( $curl->fetchToMem( $url, \$content, "playlist" ) == 0 ) {
82
- my %re = ( headline => qr|<headline>(.*?)</headline>| );
83
- my $tmp;
84
- if ( clive::Util::matchRegExps( \%re, \$tmp, \$content ) == 0 ) {
85
- $self->{title} = $tmp->{headline};
86
- return (0);
87
- }
88
- }
89
- return (1);
90
-}
91
-
92
-sub _fetchConfig {
93
- my ( $self, $id ) = @_;
94
-
95
- my $url = "http://video.spiegel.de/flash/$id.xml";
96
- my $curl = clive::Curl->instance;
97
-
98
- my $content;
99
- if ( $curl->fetchToMem( $url, \$content, "config" ) == 0 ) {
100
- my %re = (
101
- path => qr|<filename>(.*?)</filename>|,
102
- rate => qr|_(\d+)\.|
103
- );
104
-
105
- my @fnames = $content =~ /$re{path}/g;
106
- my $path = $fnames0; # default format
107
-
108
- my $config = clive::Config->instance->config;
109
-
110
- if ( $config->{format} eq "best" ) {
111
- my %rates; # Ignores iphone, 3gp etc.
112
- foreach (@fnames) {
113
- $rates{$1} = $_
114
- if ( $_ =~ /$re{rate}/ );
115
- }
116
- my $best = ( sort { $b <=> $a } keys %rates )0;
117
- $path = $rates{$best};
118
- }
119
- else {
120
- if ( my @m = grep( /$config->{format}/i, @fnames ) ) {
121
- $path = $m0;
122
- }
123
- }
124
- if ($path) {
125
- $self->{video_link} = "http://video.spiegel.de/flash/$path";
126
- return (0);
127
- }
128
- }
129
- return (1);
130
-}
131
-
132
-1;
133
-
134
-# Two riders were approaching.
135
clive-2.2.22.tar.bz2/lib/clive/Host/Vimeo.pm
Deleted
91
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-# Copyright 2009 Toni Gundogdu.
6
-#
7
-# This file is part of clive.
8
-#
9
-# clive is free software: you can redistribute it and/or modify it under
10
-# the terms of the GNU General Public License as published by the Free
11
-# Software Foundation, either version 3 of the License, or (at your option)
12
-# any later version.
13
-#
14
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
15
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
17
-# details.
18
-#
19
-# You should have received a copy of the GNU General Public License along
20
-# with this program. If not, see <http://www.gnu.org/licenses/>.
21
-###########################################################################
22
-package clive::Host::Vimeo;
23
-
24
-use warnings;
25
-use strict;
26
-
27
-use clive::Error qw(CLIVE_REGEXP);
28
-
29
-sub new { return bless ({}, shift); }
30
-
31
-sub parsePage {
32
- my ( $self, $content, $props ) = @_;
33
-
34
- $$props->video_host("vimeo");
35
-
36
- my $id = $1 if $$props->page_link =~ /vimeo\.com\/(\d+)/;
37
-
38
- unless ($1) {
39
- clive::Log->instance->err (CLIVE_REGEXP, "no match: video id");
40
- return (1);
41
- }
42
-
43
- my $config_url = "http://vimeo.com/moogaloop/load/clip:$1";
44
- my $rc = _parseConfig ($self, $config_url, $1);
45
-
46
- unless ($rc) {
47
- $$props->video_id ($id);
48
- $$props->video_link ($self->{video_link});
49
- }
50
-
51
- return ($rc);
52
-}
53
-
54
-sub _parseConfig {
55
- my ( $self, $url, $id ) = @_;
56
-
57
- my $curl = clive::Curl->instance;
58
-
59
- my $content;
60
- if ( $curl->fetchToMem( $url, \$content, "config" ) == 0 ) {
61
- my %re = (
62
- sig => qr|<request_signature>(.*?)</request_signature>|,
63
- sig_exp =>
64
- qr|request_signature_expires>(.*?)</request_signature_expires>|
65
- );
66
-
67
- my $tmp;
68
- if ( clive::Util::matchRegExps( \%re, \$tmp, \$content ) == 0 ) {
69
- my $xurl = "http://vimeo.com/moogaloop/play/clip:$id"
70
- . "/$tmp->{sig}/$tmp->{sig_exp}/?q=";
71
- my $config = clive::Config->instance->config;
72
- my $q = "sd";
73
- if ( $config->{format} eq "hd"
74
- || $config->{format} eq "best" )
75
- {
76
- if ( $content =~ /<hd_button>(.*?)<\/hd_button>/ ) {
77
- $q = "hd" if ( $1 eq "1" );
78
- }
79
- }
80
- $xurl .= $q;
81
- $self->{video_link} = $xurl;
82
- return (0);
83
- }
84
- }
85
- return (1);
86
-}
87
-
88
-1;
89
-
90
-# So let us not talk falsely now.
91
clive-2.2.22.tar.bz2/lib/clive/Host/Youtube.pm
Deleted
133
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009,2010 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Host::Youtube;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-sub new { return bless ({}, shift); }
29
-
30
-sub parsePage {
31
- my ($self, $content, $props) = @_;
32
-
33
- $$props->video_host ("youtube");
34
-
35
- my %re = (
36
- id => qr|&video_id=(.*?)&|,
37
- fmt_url_map => qr|fmt_url_map=(.*?)&|,
38
- );
39
-
40
- my $tmp;
41
- if (clive::Util::matchRegExps (\%re, \$tmp, $content) == 0) {
42
-
43
- my $best;
44
- my %h;
45
-
46
- require URI::Escape;
47
-
48
- foreach (split /,/, URI::Escape::uri_unescape ($tmp->{fmt_url_map})) {
49
- my ($id, $url) = split /\|/, $_;
50
- $best = $url unless $best;
51
- $h{$id} = $url;
52
- }
53
-
54
- my $url;
55
-
56
- my $config = clive::Config->instance->config;
57
-
58
- if ($config->{format} eq 'best') {
59
- $url = $best;
60
- }
61
- else {
62
- $url = toURL ($self, $config->{format}, \%h);
63
- $url = toURL ($self, 'default', \%h) unless $url;
64
- }
65
-
66
- $$props->video_id ($tmp->{id});
67
- $$props->video_link ($url);
68
-
69
- return 0;
70
- }
71
-
72
- return 1;
73
-}
74
-
75
-sub toURL {
76
- my ($self, $fmt, $h) = @_;
77
-
78
- $fmt = 'flv_240p' if $fmt eq 'default';
79
- $fmt = toFmt ($self, $fmt);
80
-
81
- foreach (keys %{$h})
82
- { return $$h{$_} if $_ eq $fmt; }
83
-
84
- return undef;
85
-}
86
-
87
-sub toFmt {
88
- my ($self, $id) = @_;
89
-
90
-# http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs
91
-# $container_$maxwidth = '$fmt_id'
92
-
93
- my %h = (
94
- # flv
95
- flv_240p => '5',
96
- flv_360p => '34',
97
- flv_480p => '35',
98
- # mp4
99
- mp4_360p => '18',
100
- mp4_720p => '22',
101
- mp4_1080p => '37',
102
- mp4_3072p => '38',
103
- # webm
104
- webm_480p => '43',
105
- webm_720p => '45',
106
- # 3gp
107
- '3gp_144p'=> '17',
108
-
109
-# For backward-compatibility only.
110
- mobile => '17',
111
- sd_270p => "18",
112
- sd_360p => "34",
113
- hq_480p => "35",
114
- hd_720p => "22",
115
- hd_1080p => "37",
116
- webm_480p => "43",
117
- webm_720p => "45",
118
- '3gp' => "17",
119
- mp4 => "18",
120
- hq => "35",
121
- hd => "22",
122
- );
123
-
124
- foreach (keys %h)
125
- { return $h{$_} if $id eq $_; }
126
-
127
- return $id;
128
-}
129
-
130
-1;
131
-
132
-# And this is not our fate.
133
clive-2.2.22.tar.bz2/lib/clive/HostFactory.pm
Deleted
78
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::HostFactory;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-use clive::Error qw(CLIVE_OK);
29
-
30
-my @_hosts = (
31
- "Youtube", qr|youtube.com|i,
32
-# Sat Dec 11 2010: webm_*, 3gp_144p support found in Youtube.pm, website
33
-# no longer seems to list them, however. Listing here only those formats
34
-# that seem to still work.
35
-"default|flv_240p|flv_360p|flv_480p|mp4_360p|mp4_720p|mp4_1080p|mp4_3072p",
36
- "Youtube", qr|last.fm|i, "see youtube formats" ,
37
- "Google", qr|video.google.|i, "default|mp4" ,
38
- "Sevenload", qr|sevenload.com|i, "default" ,
39
- "Break", qr|break.com|i, "default" ,
40
- "Liveleak", qr|liveleak.com|i, "default" ,
41
- "Gaskrank", qr|gaskrank.tv|i, "default" ,
42
- "Dailymotion", qr|dailymotion.com|i, "default|hq|hd" ,
43
- "Vimeo", qr|vimeo.com|i, "default|hd" ,
44
- "Spiegel", qr|spiegel.de|i, "default|vp6_928|vp6_576|vp6_64|h264_1400"
45
- ,
46
- "Golem", qr|golem.de|i, "default|ipod|high" ,
47
- "Clipfish", qr|clipfish.de|i, "default" ,
48
- "Funnyhub", qr|funnyhub.com|i, "default" ,
49
- "Buzzhumor", qr|buzzhumor.com|i, "default" ,
50
-);
51
-
52
-sub new {
53
- my ( $class, $url ) = @_;
54
- foreach (@_hosts) {
55
- my ( $host, $re ) = @{$_};
56
- if ( $url =~ /$re/ ) {
57
- my $req = "clive/Host/$host.pm";
58
- $class = "clive::Host::$host";
59
- require $req;
60
- return $class->new(@_);
61
- }
62
- }
63
-}
64
-
65
-sub dumpHosts {
66
- my $self = shift;
67
- foreach (@_hosts) {
68
- my ( $host, $re, $fmts ) = @{$_};
69
- printf( "%s\t%s\n", $1, $fmts )
70
- if ( $re =~ /xsm:(.*?)\)/ && $re !~ /last\.fm/ );
71
- }
72
- exit(CLIVE_OK);
73
-}
74
-
75
-1;
76
-
77
-# The hour's getting late.
78
clive-2.2.22.tar.bz2/lib/clive/Log.pm
Deleted
91
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Log;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-use base 'Class::Singleton';
29
-
30
-use clive::Error qw(CLIVE_OK);
31
-
32
-sub init {
33
- my $self = shift;
34
-
35
- $self->{return_code} = CLIVE_OK;
36
-
37
- my $config = clive::Config->instance->config;
38
- $self->{quiet} = $config->{quiet};
39
-
40
- # Go unbuffered.
41
- select STDERR;
42
- $| = 1;
43
- select STDOUT;
44
- $| = 1;
45
-}
46
-
47
-sub out {
48
- my $self = shift;
49
- return if $self->{quiet};
50
-
51
- my $ref
52
- = clive::Config->instance->config->{stderr}
53
- ? \*STDERR
54
- : \*STDOUT;
55
-
56
- my $fmt = shift;
57
- my $str = @_ ? sprintf( $fmt, @_ ) : $fmt;
58
-
59
- print $ref $str;
60
-}
61
-
62
-sub err {
63
- my $self = shift;
64
- $self->{return_code} = shift;
65
-
66
- return if $self->{quiet};
67
-
68
- my $fmt = shift;
69
- my $msg = "error: " . ( @_ ? sprintf( $fmt, @_ ) : $fmt );
70
-
71
- print( STDERR "$msg\n" );
72
-}
73
-
74
-sub errn {
75
- my $self = shift;
76
-
77
- print( STDERR "\n" )
78
- if ( !$self->{quiet} );
79
-
80
- err ( $self, @_ );
81
-}
82
-
83
-sub returnCode {
84
- my $self = shift;
85
- return $self->{return_code};
86
-}
87
-
88
-1;
89
-
90
-# All along the watchtower.
91
clive-2.2.22.tar.bz2/lib/clive/Progress
Deleted
2
1
-(directory)
2
clive-2.2.22.tar.bz2/lib/clive/Progress/Bar.pm
Deleted
182
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Progress::Bar;
24
-
25
-# Based on wget code.
26
-
27
-use warnings;
28
-use strict;
29
-
30
-use File::Basename qw(basename);
31
-
32
-use clive::Util;
33
-
34
-use constant DEFAULT_TERM_WIDTH => 80;
35
-use constant REFRESH_INTERVAL => 0.2;
36
-
37
-my $recv_sigwinch;
38
-
39
-sub new {
40
- my ( $class, $props ) = @_;
41
-
42
- my $initial = $$props->initial_length;
43
- my $total = $$props->file_length;
44
-
45
- $total = $initial
46
- if ( $initial > $total );
47
-
48
- $recv_sigwinch = 0;
49
- $SIG{WINCH} = \&handle_sigwinch;
50
-
51
- my $self = {
52
- props => $$props,
53
- initial => $initial,
54
- total => $total,
55
- term_width => clive::Util::termWidth(),
56
- width => DEFAULT_TERM_WIDTH - 1,
57
- last_update => 0,
58
- done => 0,
59
- time_started => time,
60
- };
61
-
62
- return bless( $self, $class );
63
-}
64
-
65
-sub update {
66
- my ( $self, $clientp, $total, $now, $ultotal, $ulnow ) = @_;
67
-
68
- my $force_update = 0;
69
- if ($recv_sigwinch) {
70
- my $old_width = $self->{term_width};
71
- $self->{term_width} = clive::Util::termWidth();
72
- if ( $self->{term_width} != $old_width ) {
73
- $self->{width} = $self->{term_width} - 1;
74
- $force_update = 1;
75
- }
76
- $recv_sigwinch = 0;
77
- }
78
-
79
- my $tnow = time;
80
- my $elapsed = $tnow - $self->{time_started};
81
-
82
- if ( !$self->{done} ) {
83
- if ( ( $elapsed - $self->{last_update} ) < REFRESH_INTERVAL
84
- && !$force_update )
85
- {
86
- return ( 0, 0 );
87
- }
88
- }
89
- else {
90
- $now = $self->{total};
91
- }
92
-
93
- $self->{last_update} = $elapsed;
94
- my $size = $self->{initial} + $now;
95
-
96
- my $fname_len = 32;
97
- if ( $self->{width} > DEFAULT_TERM_WIDTH ) {
98
- $fname_len += $self->{width} - DEFAULT_TERM_WIDTH;
99
- }
100
-
101
- my $buf = substr( basename( $self->{props}->filename ), 0, $fname_len );
102
-
103
- my $percent = 0;
104
- my $stop_transfer = 0;
105
-
106
- if ( $self->{total} > 0 ) {
107
- my $_size = !$self->{done} ? $size : $now;
108
- $percent = 100.0 * $size / $self->{total};
109
- if ( $percent < 100 ) {
110
- $buf .= sprintf( " %2d%% ", $percent );
111
- }
112
- else {
113
- $buf .= sprintf(" 100%%");
114
- }
115
- $buf .= sprintf(
116
- " %4.1fM / %4.1fM",
117
- clive::Util::toMB($_size),
118
- clive::Util::toMB( $self->{total} )
119
- );
120
-
121
- my $stop_after = clive::Config->instance->config->{stop_after};
122
- if ($stop_after) {
123
- if ( $stop_after =~ /(.*?)M$/ ) {
124
- $stop_transfer = 1
125
- if ( clive::Util::toMB($_size) >= $1 );
126
- }
127
- elsif ( $stop_after =~ /(.*?)%$/ ) {
128
- $stop_transfer = 1
129
- if ( $percent >= $1 );
130
- }
131
- }
132
- }
133
-
134
- my $rate = $elapsed ? ( $now / $elapsed ) : 0;
135
- my $tmp = "";
136
- if ( $rate > 0 ) {
137
- my $eta;
138
- if ( !$self->{done} ) {
139
- my $left = ( $total - $now ) / $rate;
140
- $eta = clive::Util::timeToStr($left);
141
- }
142
- else {
143
- $eta = clive::Util::timeToStr($elapsed);
144
- }
145
- my ( $unit, $_rate ) = clive::Util::toUnits($rate);
146
- $tmp = sprintf( " %4.1f%s %6s", $_rate, $unit, $eta );
147
- }
148
- else {
149
- $tmp = " --.-K/s --:--";
150
- }
151
-
152
- # pad to max. width leaving enough space for rate+eta
153
- my $pad = $self->{width} - length($tmp) - length($buf);
154
- $buf .= sprintf( "%${pad}s", " " );
155
- $buf .= $tmp; # append rate+eta
156
-
157
- clive::Log->instance->out("\r$buf");
158
- $self->{count} = $now;
159
-
160
- return ( $percent, $stop_transfer, \$self->{props} );
161
-}
162
-
163
-sub finish {
164
- my $self = shift;
165
- if ( $self->{total} > 0
166
- && $self->{count} + $self->{initial} > $self->{total} )
167
- {
168
- $self->{total} = $self->{initial} + $self->{count};
169
- }
170
-
171
- $self->{done} = 1;
172
- update( $self, -1, -1, -1, -1, -1 );
173
-}
174
-
175
-sub handle_sigwinch {
176
- $recv_sigwinch = 1;
177
-}
178
-
179
-1;
180
-
181
-# Princess kept the view.
182
clive-2.2.22.tar.bz2/lib/clive/Util.pm
Deleted
142
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Util;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-eval("use Term::ReadKey");
29
-my $TermReadKey = int( !$@ );
30
-
31
-use clive::Error qw(CLIVE_REGEXP);
32
-
33
-use constant DEFAULT_TERM_WIDTH => 80;
34
-use constant MBDIV => 0x100000;
35
-
36
-sub termWidth {
37
- return DEFAULT_TERM_WIDTH
38
- unless $TermReadKey;
39
- my ($width) = Term::ReadKey::GetTerminalSize();
40
- return $width;
41
-}
42
-
43
-sub toMB {
44
- my $bytes = shift;
45
- return $bytes / MBDIV;
46
-}
47
-
48
-sub fileExists {
49
- my ($path) = @_;
50
- return -s $path || 0;
51
-}
52
-
53
-sub timeToStr {
54
- my $secs = shift;
55
-
56
- my $str;
57
- if ( $secs < 100 ) {
58
- $str = sprintf( "%02ds", $secs );
59
- }
60
- elsif ( $secs < 100 * 60 ) {
61
- $str = sprintf( "%02dm%02ds", $secs / 60, $secs % 60 );
62
- }
63
- elsif ( $secs < 48 * 3600 ) {
64
- $str = sprintf( "%02dh%02dm", $secs / 3600, ( $secs / 60 ) % 60 );
65
- }
66
- elsif ( $secs < 100 * 86400 ) {
67
- $str = sprintf( "%dd%02dh", $secs / 86400, ( $secs / 3600 ) % 60 );
68
- }
69
- else {
70
- $str = sprintf( "%dd", $secs / 86400 );
71
- }
72
- return $str;
73
-}
74
-
75
-sub toUnits {
76
- my $rate = shift;
77
- my $units = "K/s";
78
- if ($rate >= 1024*1024*1024) {
79
- $rate /= 1024*1024*1024;
80
- $units = "G/s";
81
- }
82
- elsif ($rate >= 1024*1024) {
83
- $rate /= 1024*1024;
84
- $units = "M/s";
85
- }
86
- else
87
- { $rate /= 1024; }
88
- ($units, $rate);
89
-}
90
-
91
-sub matchRegExps {
92
- my ( $regexps, $results, $content ) = @_;
93
- while ( my ( $key, $re ) = each( %{$regexps} ) ) {
94
- $$results->{$key} = $1 if $$content =~ /$re/;
95
- if ( !$$results->{$key} ) {
96
- clive::Log->instance->err( CLIVE_REGEXP, "no match: `$re'" );
97
- return (1);
98
- }
99
- }
100
- return (0);
101
-}
102
-
103
-sub toDomain {
104
- my $uri = shift;
105
-
106
- my ( $scheme, $authority, $path, $query, $fragment )
107
- = $uri
108
- =~ m{(?:(^:/?#+):)?(?://(^/?#*))?(^?#*)(?:\?(^#*))?(?:#(.*))?}o;
109
-
110
- return split( /\./, $authority );
111
-}
112
-
113
-sub prompt {
114
- print shift;
115
- chomp( my $ln = <STDIN> );
116
- return $ln;
117
-}
118
-
119
-sub fromEntities {
120
- my %conv_table = (
121
- """ => "\"",
122
- """ => "\"",
123
- "&" => "&",
124
- "&" => "&",
125
- "'" => "'",
126
- "'" => "'",
127
- "<" => "<",
128
- "<" => "<",
129
- ">" => ">",
130
- ">" => ">",
131
- );
132
- my $str = shift;
133
- while ( my ( $from, $to ) = each(%conv_table) ) {
134
- $str =~ s/$from/$to/g;
135
- }
136
- return $str;
137
-}
138
-
139
-1;
140
-
141
-# While all the women came and went.
142
clive-2.2.22.tar.bz2/lib/clive/Video.pm
Deleted
271
1
2
-# -*- coding: ascii -*-
3
-###########################################################################
4
-# clive, command line video extraction utility.
5
-#
6
-# Copyright 2009 Toni Gundogdu.
7
-#
8
-# This file is part of clive.
9
-#
10
-# clive is free software: you can redistribute it and/or modify it under
11
-# the terms of the GNU General Public License as published by the Free
12
-# Software Foundation, either version 3 of the License, or (at your option)
13
-# any later version.
14
-#
15
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
16
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
18
-# details.
19
-#
20
-# You should have received a copy of the GNU General Public License along
21
-# with this program. If not, see <http://www.gnu.org/licenses/>.
22
-###########################################################################
23
-package clive::Video;
24
-
25
-use warnings;
26
-use strict;
27
-
28
-use Carp;
29
-use POSIX;
30
-use File::Basename qw(basename);
31
-use File::Spec::Functions;
32
-use Cwd qw(getcwd);
33
-use Encode qw(decode_utf8);
34
-
35
-use clive::Util;
36
-
37
-our $AUTOLOAD;
38
-
39
-sub new {
40
- my $class = shift;
41
- my %fields = (
42
- page_link => undef,
43
- video_id => undef,
44
- file_length => undef,
45
- content_type => undef,
46
- file_suffix => undef,
47
- video_link => undef,
48
- video_host => undef,
49
- video_format => undef,
50
- base_filename => undef,
51
- filename => undef,
52
- initial_length => undef,
53
- time_stamp => undef,
54
- nothing_todo => undef,
55
- );
56
- my $self = {
57
- _permitted => \%fields,
58
- %fields,
59
- };
60
- return bless( $self, $class );
61
-}
62
-
63
-sub page_title {
64
- my $self = shift;
65
- if (@_) {
66
- my ( $content, $title ) = @_;
67
- if ( !$title ) {
68
- require HTML::TokeParser;
69
- my $p = HTML::TokeParser->new($content);
70
- $p->get_tag("title");
71
- $self->{page_title} = $p->get_trimmed_text;
72
- _cleanupTitle($self);
73
- }
74
- else {
75
- $self->{page_title} = clive::Util::fromEntities($title);
76
- }
77
- }
78
- return $self->{page_title};
79
-}
80
-
81
-sub printVideo {
82
- my $self = shift;
83
- my $str = sprintf(
84
- "file: %s %.1fM %s\n",
85
- $self->{base_filename},
86
- clive::Util::toMB( $self->{file_length} ),
87
- $self->{content_type}
88
- );
89
- clive::Log->instance->out($str);
90
-}
91
-
92
-sub emitCSV {
93
- my $self = shift;
94
-
95
- require URI::Escape;
96
-
97
- my @fields = qw(base_filename file_length video_link);
98
-
99
- my $str = "csv:";
100
- $str .= sprintf( qq/"%s",/, $self->$_ ) foreach (@fields);
101
- $str =~ s/,$//;
102
-
103
- clive::Log->instance->out("$str\n");
104
-}
105
-
106
-sub formatOutputFilename {
107
- my ( $self, $suffix, $index ) = @_;
108
-
109
- my $config = clive::Config->instance->config;
110
- my $fname;
111
-
112
- if ( !$config->{output_file} ) {
113
-
114
- # Apply character-class.
115
- my $title = $self->{page_title};
116
- my $cclass = $config->{cclass} || qr|\w|;
117
-
118
- $title = join( '', $self->{page_title} =~ /$cclass/g )
119
- if ( !$config->{no_cclass} );
120
-
121
- # Format output filename.
122
- $fname = $config->{filename_format} || "%t.%s";
123
-
124
- my $id = $self->{video_id};
125
-
126
- # $id =~ s/-/_/g;
127
-
128
- $title = $id
129
- if ( !$title && $fname !~ /%i/ );
130
-
131
- $fname =~ s/%t/$title/;
132
- if ( $self->{file_suffix} ) {
133
- $fname =~ s/%s/$self->{file_suffix}/;
134
- }
135
- elsif ($suffix) {
136
- my $tmp = "$index.$suffix";
137
- $fname =~ s/%s/$tmp/;
138
- }
139
- $fname =~ s/%i/$id/;
140
- $fname =~ s/%h/$self->{video_host}/;
141
-
142
- my $config = clive::Config->instance->config;
143
- my $path = Encode::decode_utf8( $config->{save_dir} or getcwd );
144
-
145
- $fname = catfile( $path, $fname );
146
- my $tmp = $fname;
147
-
148
- for ( my $i = 1; $i < 9999; ++$i ) {
149
- $self->{initial_length} = clive::Util::fileExists($fname);
150
-
151
- if ( $self->{initial_length} == 0 ) {
152
- last;
153
- }
154
- elsif ( $self->{initial_length} == $self->{file_length} ) {
155
- $self->{nothing_todo} = 1;
156
- last;
157
- }
158
- else {
159
- if ( $config->{continue} ) {
160
- last;
161
- }
162
- }
163
- $fname = "$tmp.$i";
164
- }
165
- }
166
- else {
167
- $self->{initial_length}
168
- = clive::Util->fileExists( $config->{output_file} );
169
- if ( $self->{initial_length} == $self->{file_length} ) {
170
- $self->{nothing_todo} = 1;
171
- }
172
- else {
173
- $fname = $config->{output_file};
174
- }
175
- }
176
-
177
- if ( !$config->{continue} ) {
178
- $self->{initial_length} = 0;
179
- }
180
-
181
- $self->{base_filename} = basename($fname);
182
- $self->{filename} = $fname;
183
-}
184
-
185
-sub fromCacheRecord {
186
- my ( $self, $record ) = @_;
187
-
188
- # No need to keep order in sync with clive::Video::toCacheRecord
189
- # or clive::Cache::_mapRecord -- just make sure each item gets
190
- # set here.
191
- $self->{page_title} = decode_utf8( $$record{page_title} );
192
- $self->{page_link} = $$record{page_link};
193
- $self->{video_id} = $$record{video_id};
194
- $self->{video_link} = $$record{video_link};
195
- $self->{video_host} = $$record{video_host};
196
- $self->{video_format} = $$record{video_format};
197
- $self->{file_length} = $$record{file_length};
198
- $self->{file_suffix} = $$record{file_suffix};
199
- $self->{content_type} = $$record{content_type};
200
- $self->{time_stamp} = $$record{time_stamp};
201
-
202
- _cleanupTitle($self);
203
-}
204
-
205
-sub toCacheRecord {
206
- my $self = shift;
207
-
208
- # Should really remove all '#' from the strings
209
- # before storing them. Living on the edge.
210
- $self->{page_title} =~ tr{#}//d;
211
-
212
- my $title = $self->{page_title};
213
-
214
-=for comment
215
- # See: http://code.google.com/p/clive/issues/detail?id=42
216
- if ( sprintf( "%vd", $^V ) =~ /(\d+).(\d+).(\d+)/ ) {
217
- $title = decode_utf8($title)
218
- if ( $1 >= 5 && $2 >= 10 );
219
- }
220
-=cut
221
-
222
- # Keep the order in sync with clive::Cache::_mapRecord.
223
- my $record
224
- = $title . "#"
225
- . $self->{page_link} . "#"
226
- . $self->{video_id} . "#"
227
- . $self->{video_link} . "#"
228
- . $self->{video_host} . "#"
229
- . $self->{video_format} . "#"
230
- . $self->{file_length} . "#"
231
- . $self->{file_suffix} . "#"
232
- . $self->{content_type} . "#"
233
- . POSIX::strftime( "%F %T", localtime ) # time_stamp
234
- ;
235
- return $record;
236
-}
237
-
238
-sub _cleanupTitle {
239
- my $self = shift;
240
- my $title = $self->{page_title};
241
-
242
- $title =~ s/youtube|liveleak.com|dailymotion|on vimeo//gi;
243
- $title =~ s/|clipfish|funny hub//gi;
244
- $title =~ s/video(s?)//gi;
245
- $title =~ s/^-\s+//;
246
- $title =~ s/\s+$//;
247
-
248
- $self->{page_title} = $title;
249
-}
250
-
251
-sub AUTOLOAD {
252
- my $self = shift;
253
- my $type = ref($self)
254
- or croak("$self is not an object");
255
- my $name = $AUTOLOAD;
256
- $name =~ s/.*://;
257
- unless ( exists( $self->{_permitted}->{$name} ) ) {
258
- croak("cannot access `$name' field in class $type");
259
- }
260
- if (@_) {
261
- return $self->{$name} = shift;
262
- }
263
- else {
264
- return $self->{$name};
265
- }
266
-}
267
-
268
-1;
269
-
270
-# Barefoot servants too.
271
clive-2.2.22.tar.bz2/man1
Deleted
2
1
-(directory)
2
clive-2.2.22.tar.bz2/man1/clive.1.pod
Deleted
552
1
2
-
3
-=head1 NAME
4
-
5
-clive - command line video extraction utility
6
-
7
-=head1 SYNOPSIS
8
-
9
-clive options... URL...
10
-
11
-=head1 DESCRIPTION
12
-
13
-clive is a command line video extraction utility for Youtube and other similar
14
-video-sharing websites. It was written to work around the Adobe Flash plugin
15
-requirement as the technology is poorly supported on Unix-like systems.
16
-
17
-clive is not an universal video extraction utility. In fact, it supports only
18
-a number of video websites. Each website typically exposes access to the video
19
-content in a very different way, meaning that clive has to be customized for
20
-each website in order to download any videos from them.
21
-
22
-=head1 OPTION SYNTAX
23
-
24
-You may freely mix different option styles and specify options after
25
-the command line arguments, e.g.:
26
- % clive -c URL --format=best
27
-
28
-You may also put several options together that do not require arguments:
29
- % clive -cnrf best URL
30
-
31
-Note that the "dashed" options have aliases. For example:
32
- % clive --no-extract --no_extract --noextract
33
- % clive --cache-read --cache_read --cacheread
34
-
35
-=head1 OPTIONS
36
-
37
-=over 4
38
-
39
-=item B<-h, --help>
40
-
41
-Print help and exit.
42
-
43
-=item B<-v, --version>
44
-
45
-Print version and exit.
46
-
47
-=item B<--hosts>
48
-
49
-Print supported hosts with available formats and exit.
50
-
51
-=item B<--upgrade-config>
52
-
53
-Upgrade clive 2.0/2.1 config to current 2.2+ format and exit.
54
-
55
-=item B<-l, --last>
56
-
57
-Re-feed the previously fed video page links from the last run time.
58
-
59
-=item B<--last-file>=I<path>
60
-
61
-Use I<path> instead of the default path. See also L</FILES>.
62
-
63
-=back
64
-
65
-B<Output options>
66
-
67
-=over 4
68
-
69
-=item B<--emit-csv>
70
-
71
-Print (or emit) video details in CSV format to standard output.
72
-Implies --no-extract.
73
-
74
-=item B<--print-fname>
75
-
76
-Print filename on a separate line before download starts.
77
-
78
-=item B<--debug>
79
-
80
-Print cURL debug (or verbose) messages to standard error.
81
-
82
-=item B<-q, --quiet>
83
-
84
-Turn off all output to standard output and error.
85
-
86
-=item B<--stderr>
87
-
88
-Direct all output to standard error.
89
-
90
-=back
91
-
92
-B<HTTP Options>
93
-
94
-=over 4
95
-
96
-=item B<--agent>=I<string>
97
-
98
-Identify clive as I<string> to HTTP servers. Defaults to "Mozilla/5.0".
99
-
100
-=item B<--connect-timeout>=I<seconds>
101
-
102
-Maximum time in I<seconds> allowed for connection to take. Defaults to 30.
103
-
104
-=item B<--connect-timeout-socks>=I<seconds>
105
-
106
-Same as above but tries to workaround the SOCKS proxy bug in cURL.
107
-Defaults to 30.
108
-
109
-=item B<--proxy>=I<address>
110
-
111
-Use I<address> for HTTP proxy. Example: "http://foo:1234".
112
-
113
-=item B<--no-proxy>
114
-
115
-Disable all use of HTTP proxy, even if http_proxy environment variable is set.
116
-
117
-=item B<--cookie-jar>=I<file>
118
-
119
-Enable cookies, which are otherwise rejected by default, and have libcurl
120
-to write them to I<file>. Specify "-" to instead to have the cookies written
121
-to stdout.
122
-
123
-=back
124
-
125
-B<Cache Options>
126
-
127
-=over 4
128
-
129
-=item B<--cache-file>=I<path>
130
-
131
-Use I<path> instead of the default path. See L</FILES>.
132
-
133
-=item B<-r, --cache-read>
134
-
135
-Read video details from cache record if it exists. Allows clive to
136
-skip video page fetching and parsing again. See L</CACHE> section for more
137
-on this.
138
-
139
-=item B<-d, --cache-dump>
140
-
141
-Dump cache records to standard output.
142
-
143
-=item B<--cache-dump-format>=I<format-string>
144
-
145
-Used to format the output of the above. Defaults to "%n: %t %f, %mMB".
146
-
147
-Example:
148
- % clive --cache-dump --cache-dump-format="%d: %t"
149
-
150
-Supported format specifiers:
151
- %t .. video page title
152
- %i .. video id
153
- %h .. video host
154
- %l .. video file length (bytes)
155
- %m .. video file length (MB)
156
- %d .. date (last update)
157
- %T .. time (last update)
158
- %s .. time stamp (same as "%d %T")
159
- %f .. video file format
160
- %n .. index
161
-
162
-=item B<--cache-grep>=I<pattern>
163
-
164
-Grep stored cache records for I<pattern>. See also L</EXAMPLES - ADVANCED USE>.
165
-
166
-=item B<-i, --cache-ignore-case>
167
-
168
-Ignore case-differences while matching records.
169
-
170
-=item B<-D, --cache-remove-record>
171
-
172
-Remove matched records from cache.
173
-
174
-=item B<--cache-clear>
175
-
176
-Truncate cache records.
177
-
178
-=item B<--no-cache>
179
-
180
-Disable all (read and write) cache use.
181
-
182
-=back
183
-
184
-B<Download Options>
185
-
186
-=over 4
187
-
188
-=item B<-f, --format>=I<format>
189
-
190
-Download the I<format> of the video. If I<format> is set to I<best>, clive
191
-will attempt to download the best quality of the video.
192
-
193
-If this option is not used (or is used with "default"), clive will
194
-attempt to download whatever is assumed to be the default format
195
-for the website.
196
-
197
-Note also that each I<format> is specific to a website. See
198
-L</FORMATS> for more.
199
-
200
-=item B<-n, --no-extract>
201
-
202
-Do not extract the video. In other words: simulate only to the point
203
-that clive verifies the video link after fetching and parsing the
204
-video page.
205
-
206
-=item B<-O, --output-file>=I<file>
207
-
208
-Write video to I<file>. Overwrites an already existing file.
209
-
210
-Do not use this option when you are downloading more than one video
211
- on one go.
212
-
213
-See also the note below.
214
-
215
-=item B<-c, --continue>
216
-
217
-Continue partially downloaded video file.
218
-
219
-Note that, by default, clive appends a numeric suffix to the filename
220
-if the file exists already. That is unless:
221
-
222
- * file is already completely retrieved, or:
223
- * -c or -O is used
224
-
225
-=item B<--save-dir>=I<dir>
226
-
227
-Save extracted videos to I<dir>. clive defaults to the current working
228
-directory.
229
-
230
-=item B<--cclass>=I<class>
231
-
232
-Use character-I<class> to filter video page titles. Defaults to "\w".
233
-This is a Perl regular expression character class. For example:
234
-"A-Za-z0-9".
235
-
236
-=item B<-C, --no-cclass>
237
-
238
-Disables the use of B<--cclass>. Causes clive to use the video page
239
-title as it is for output filename.
240
-
241
-=item B<--filename-format>=I<format-string>
242
-
243
-Use I<format-string> to format output video filenames. Default is "%t.%s".
244
-
245
-Supported format specifiers:
246
- %t .. video page title (after applying character-class filter)
247
- %s .. video file suffix (e.g. "flv")
248
- %i .. video id
249
- %h .. video host
250
-
251
-=item B<--exec>=I<command>;
252
-
253
-Defines the I<command> to run when video file transfer completes.
254
-Note that B<--exec-run> must be used to actually cause clive
255
-to invoke the defined I<command>.
256
-
257
-Optional arguments may be passed to the command. The expression must be
258
-terminated by a semicolon (";"). If the specifier "%i" appears anywhere
259
-in the I<command>, it is replaced by the pathname of the extracted
260
-video file.
261
-
262
-=item B<--exec>=I<command>+
263
-
264
-Same as above but "%i" is replaced with as many path names as
265
-possible for the invocation of I<command>.
266
-
267
-=item B<-e, --exec-run>
268
-
269
-Causes clive to invoke the command defined with B<--exec> when
270
-transfer finishes.
271
-
272
-=item B<--stream-exec>=I<command>
273
-
274
-Define the command to be invoked with B<--stream> and B<--stream-pass>.
275
-If a "%i" specifier is used in the I<command>, it will be replaced with
276
-either video file path name (B<--stream>) or parsed video link
277
-(B<--stream-pass>).
278
-
279
-=item B<--stream>=I<percent>
280
-
281
-Causes clive to fetch, parse, start download and eventually invoke
282
-the command defined with B<--stream-exec> when the transfer reaches
283
-the percentage defined with this option. See also L</EXAMPLES>.
284
-
285
-Note that clive does nothing to check if there is enough data buffered
286
-before invoking the B<--stream-exec> defined I<command>. If the transfer
287
-rate drops significantly after starting the process and it runs out of data,
288
-clive does nothing to fix this.
289
-
290
-Also note that clive will not continue to download another file before the
291
-child process exits.
292
-
293
-This mode is supported for historical reasons. Consider using
294
-B<--stream-pass> instead.
295
-
296
-=item B<-s, --stream-pass>
297
-
298
-Otherwise the same as above but B<instead of> starting the download,
299
-clive passes the parsed video link to the command defined with
300
-B<--stream-exec>. See also L</EXAMPLES>.
301
-
302
-This option was inspired by a C<clive(1)> wrapper script contributed
303
-by Bill Squire.
304
-
305
-=item B<--limit-rate>=I<amount>
306
-
307
-Limit transfer rate to I<amount> KB/s.
308
-
309
-=item B<--stop-after>=I<size|percent>
310
-
311
-Stop file transfer after I<size> or I<percent>. The value must
312
-be terminated by either '%' or 'M'.
313
-
314
-=back
315
-
316
-=head1 EXAMPLES - BASIC USE
317
-
318
-=over 4
319
-
320
-=item clive "http://youtube.com/watch?v=3HD220e0bx4"
321
-
322
-Extracts video (flv) from the above video page link. You
323
-can then play the flv video file in a media player.
324
-
325
-=item cat E<gt> url.lst
326
-
327
- http://en.sevenload.com/videos/IUL3gda-Funny-Football-Clips
328
- http://youtube.com/watch?v=3HD220e0bx4
329
- http://break.com/index/beach-tackle-whip-lash.html
330
- http://www.liveleak.com/view?i=704_1228511265
331
-
332
-=item cat url.lst | clive
333
-
334
-You can feed clive multiple video page links like this
335
-or as command line arguments.
336
-
337
-=item clive URL1 URL2 URL3 URL4
338
-
339
-When you are using the pipes, be sure to separate each link with a newline.
340
-
341
-=item xclip -o | clive
342
-
343
-There are many X clipboard utilities. The above example uses C<xclip(1)>
344
-and a pipe to paste (or feed) the contents to clive.
345
-
346
-=item clive -l
347
-
348
-Recall last video page link input. Regardless the way they were fed
349
-to clive.
350
-
351
-=back
352
-
353
-=head1 EXAMPLES - ADVANCED USE
354
-
355
-=over 4
356
-
357
-=item clive -f best "http://youtube.com/watch?v=3HD220e0bx4"
358
-
359
-Extract the best format of the video.
360
-
361
-=item clive -r -f best "http://youtube.com/watch?v=3HD220e0bx4"
362
-
363
-Same as above but read the cache record without fetching and
364
-parsing the video page again.
365
-
366
-=item clive --cache-dump
367
-
368
-Dump all cache records to stdout. You can use --cache-dump-format
369
-to format the output.
370
-
371
-=item clive -ig "hd"
372
-
373
-Grep for "hd" pattern in cache records. If pattern matches, clive
374
-continues to extract the matched videos. Note the use of "-i"
375
-(--cache-ignore-case).
376
-
377
-=item clive -ig "hd" -D
378
-
379
-Same as above but removes the record from cache instead of extracting
380
-the video.
381
-
382
-=item clive --exec="ffmpeg -i %i -acodec libvorbis %i.ogg;" -e URL
383
-
384
-Copy audio from downloaded video to ogg with C<ffmpeg(1)>.
385
-
386
-=item clive --stream-exec="mplayer -really-quiet %i" --stream=25 URL
387
-
388
-Start playing the video being extracted when the transfer reaches
389
-25% complete.
390
-
391
-=item echo '--stream-exec="mplayer -really-quiet %i"' >> ~/.cliverc
392
-
393
-=item clive -s URL
394
-
395
-Alternative to Adobe Flash. C<vlc(1)> and C<totem(1)> have been reported
396
-to work also.
397
-
398
-=back
399
-
400
-=head1 FORMATS
401
-
402
-Run the program with C<--hosts> to view the supported websites and
403
-format IDs to be used with C<--format>.
404
-
405
-=over 4
406
-
407
-=item B<youtube.com>
408
-
409
-For historical reasons, you can still use the following format IDs
410
-with Youtube:
411
- mp4, hd, hq, 3gp
412
-
413
-Note however that the above IDs are considered deprecated and will be
414
-removed in the future versions. Run clive with C<--hosts> to get a list
415
-of the current IDs.
416
-
417
-=back
418
-
419
-=head1 FILES
420
-
421
-Should HOME environment variable be undefined for some reason, clive will
422
-use the current working directory instead.
423
-
424
-=over 4
425
-
426
-=item $HOME/.cliverc, $HOME/.clive/config, $HOME/.config/clive/config
427
-
428
-User configuration file. For example:
429
- % cat >> ~/.cliverc
430
- -f best
431
- --proxy=http://foo:1234
432
-
433
-=item $HOME/.cache/clive/last
434
-
435
-File containing the last user input (video page links).
436
-
437
-You can use --last-file to override the path, e.g.:
438
- --last-file=/path/to/last/file.
439
-
440
-You can also define this option in the config file.
441
-
442
-See also CLIVE_CACHE notes below.
443
-
444
-=item $HOME/.cache/clive/cache
445
-
446
-BerkeleyDB based cache file containing the records of fetched
447
-and parsed video pages.
448
-
449
-You can use --cache-file to override the path., e.g.:
450
- --cache-file=/path/to/cache/file.
451
-
452
-You can also define this option in the config file.
453
-
454
-See also CLIVE_CACHE notes below.
455
-
456
-=item Notes: CLIVE_CACHE
457
-
458
-clive defaults to use $HOME/.cache/clive/ for "last" and
459
-"cache" files described above.
460
-
461
-The use of the default path can be overridden by
462
-CLIVE_CACHE environment variable. Note that clive
463
-will attempt to create the specified path recursively.
464
-
465
-Examples:
466
- setenv CLIVE_CACHE /home/user/cachedata (in csh terms)
467
- clive # will read/write /home/user/cachedata/(last|cache)
468
-
469
- unsetenv CLIVE_CACHE
470
- clive # read/write $HOME/clive/(last|cache)
471
-
472
- clive --last-file=mylast --cache-file=cachedata/mycache
473
- # read/write "mylast" file, read/write cachedata/mycache file
474
-
475
-=back
476
-
477
-=head1 CACHE
478
-
479
-The purpose of the cache is to allow clive to skip fetching
480
-and parsing the video page again. It does not contain any
481
-actual video data so one should not expect to recover a deleted
482
-video file from the cache. Only some of the parsed details
483
-are stored as records to the cache.
484
-
485
-By now, it is should be a well known fact that the cache fails
486
-with some of the supported hosts. For example Youtube video links
487
-expire after some time, this causes the re-extraction to fail if
488
-the cached video link is used later again.
489
-
490
-This was the main reason why in 2.2.0 reading from cache was
491
-disabled by default. Many users reported the reuse of expired
492
-video links as a bug previously even though it was well documented
493
-in the manual page explaining that most of the HTTP 403/404 errors
494
-were actually caused by expired video links.
495
-
496
-It is, of course, still possible to read from cache. You can
497
-enable this by invoking the --cache-read option. This causes
498
-clive to look up a saved cache record and reuse the stored
499
-video details if they are found instead of fetching the video
500
-page.
501
-
502
-The use of the cache can be disabled with the --no-cache option.
503
-This disables both read and write. Note that if the BerkeleyDB Perl
504
-module is not installed, clive will not use the cache.
505
-
506
-See also the --cache-grep option.
507
-
508
-=head1 DEBUGGING
509
-
510
-Amp up libcurl verbosity:
511
-
512
- % clive --debug URL
513
-
514
-Parse only, do not download the video:
515
-
516
- % clive -n URL
517
-
518
-=head1 EXIT STATUS
519
-
520
-clive exits 0 on success, and E<gt>0 if an error occurs.
521
-
522
- CLIVE_OK = 0
523
- CLIVE_NOTHINGTODO = 1 # file already retrieved
524
- CLIVE_NOSUPPORT = 2 # host not supported
525
- CLIVE_READ = 3 # file open/read error
526
- CLIVE_GREP = 4 # grep: nothing matched in cache
527
- CLIVE_OPTARG = 5 # invalid option argument
528
- CLIVE_SYSTEM = 6 # system call failed (e.g. fork)
529
- CLIVE_REGEXP = 7 # regexp pattern matching failed
530
- CLIVE_FORMAT = 8 # requested format unavailable
531
- CLIVE_NET = 9 # network error
532
- CLIVE_STOP = 10 # --stop-after
533
- CLIVE_MARKEDBROKEN = 11 # support marked broken
534
-
535
-=head1 WWW
536
-
537
-<http://clive.sourceforge.net/>
538
-
539
-=head1 SEE ALSO
540
-
541
-C<cclive(1)>
542
-
543
-=head1 AUTHOR
544
-
545
-Toni Gundogdu <legatvs at sign gmail com>
546
-
547
-Thanks to all those who have contributed to the project
548
-by sending patches, reporting bugs and writing feedback.
549
-You know who you are.
550
-
551
-=cut
552
clive-2.2.22.tar.bz2/t/eval-compile.t
Deleted
11
1
2
-use warnings;
3
-use strict;
4
-
5
-use Test::More qw(no_plan);
6
-
7
-my $output = qx(perl -c -I./blib/lib blib/script/clive 2>&1);
8
-
9
-ok( $output =~ /syntax OK$/ )
10
- or diag explain $output;
11
clive-2.2.22.tar.bz2/t/eval-exitstatus.t
Deleted
16
1
2
-#!/usr/bin/env perl -I./t/lib
3
-
4
-use warnings;
5
-use strict;
6
-
7
-use Test::More tests => 1;
8
-
9
-my $clive = "perl -I./blib/lib blib/script/clive -q";
10
-my $cmd = "$clive http://nosupport";
11
-my $output = qx($cmd);
12
-
13
-my $rc = $? >> 8;
14
-ok( $rc == 2 )
15
- or diag "$cmd\nexpected return code 2 (got $rc)";
16
clive-2.2.22.tar.bz2/t/eval-pod.t
Deleted
13
1
2
-use warnings;
3
-use strict;
4
-
5
-use Test::More;
6
-
7
-eval "use Test::Pod 1.00";
8
-plan skip_all => "Test::Pod 1.00 required for testing POD" if $@;
9
-
10
-my @poddirs = qw(bin man1);
11
-
12
-all_pod_files_ok (all_pod_files(@poddirs));
13
clive-2.2.22.tar.bz2/ChangeLog -> clive-2.3.3.tar.gz/ChangeLog
Changed
2184
1
2
-commit 2aec28627f219b58edc82ad0c081144739b12ce5
3
+commit 6f22d90
4
+Author: Toni Gundogdu <legatvs@gmail.com>
5
+Date: 2012-03-16
6
+
7
+ Update NEWS for 2.3.3
8
+
9
+NEWS
10
+
11
+commit 1867800
12
+Author: Toni Gundogdu <legatvs@gmail.com>
13
+Date: 2012-03-16
14
+
15
+ Bump version to 2.3.3
16
+
17
+bin/clive
18
+
19
+commit 13c5d89
20
+Author: Toni Gundogdu <legatvs@gmail.com>
21
+Date: 2012-03-14
22
+
23
+ Do not prepend "http" URL if it is not found
24
+
25
+bin/clive
26
+
27
+commit 02b3f64
28
+Author: Toni Gundogdu <legatvs@gmail.com>
29
+Date: 2011-12-12
30
+
31
+ Use -vq with quvi when supported (#15)
32
+
33
+ Mutes: "warning: --quiet: deprecated, use --verbosity instead"
34
+ when more recent quvi version is available.
35
+
36
+ * http://sourceforge.net/apps/trac/clive/ticket/15
37
+
38
+bin/clive
39
+
40
+commit 9b32fd2
41
+Author: Toni Gundogdu <legatvs@gmail.com>
42
+Date: 2011-12-12
43
+
44
+ examples/cliverc: Use new category option
45
+
46
+ * Comment out deprecated option
47
+
48
+examples/cliverc
49
+
50
+commit 249c3d9
51
+Author: Toni Gundogdu <legatvs@gmail.com>
52
+Date: 2011-11-21
53
+
54
+ Fix a typo in manual
55
+
56
+doc/man1/clive.1.pod
57
+
58
+commit cf1f0dd
59
+Author: Toni Gundogdu <legatvs@gmail.com>
60
+Date: 2011-10-22
61
+
62
+ Revise --help output
63
+
64
+bin/clive
65
+
66
+commit f98aa15
67
+Author: Toni Gundogdu <legatvs@gmail.com>
68
+Date: 2011-10-22
69
+
70
+ Remove ChangeLog.pre-gitlog, examples/git/hooks/pre-commit
71
+
72
+ChangeLog.pre-gitlog
73
+MANIFEST
74
+examples/git/hooks/pre-commit
75
+
76
+commit d9a00b7
77
+Author: Toni Gundogdu <legatvs@gmail.com>
78
+Date: 2011-10-22
79
+
80
+ Bump version to 2.3.2
81
+
82
+bin/clive
83
+
84
+commit a8ef5a1
85
+Author: Toni Gundogdu <legatvs@gmail.com>
86
+Date: 2011-10-22
87
+
88
+ Update NEWS for 2.3.2
89
+
90
+NEWS
91
+
92
+commit 85e8db7
93
+Author: Toni Gundogdu <legatvs@gmail.com>
94
+Date: 2011-10-22
95
+
96
+ Revise README
97
+
98
+README
99
+
100
+commit 78f1a3b
101
+Author: Toni Gundogdu <legatvs@gmail.com>
102
+Date: 2011-10-22
103
+
104
+ Revise README.packagers
105
+
106
+README.packagers
107
+
108
+commit 19555bc
109
+Author: Toni Gundogdu <legatvs@gmail.com>
110
+Date: 2011-10-22
111
+
112
+ Revise INSTALL
113
+
114
+INSTALL
115
+
116
+commit 5068442
117
+Author: Toni Gundogdu <legatvs@gmail.com>
118
+Date: 2011-10-21
119
+
120
+ Revise manual
121
+
122
+doc/man1/clive.1.pod
123
+
124
+commit 059b078
125
+Author: Toni Gundogdu <legatvs@gmail.com>
126
+Date: 2011-10-21
127
+
128
+ Add --user-agent to args used with detected curl
129
+
130
+bin/clive
131
+
132
+commit a1c3802
133
+Author: Toni Gundogdu <legatvs@gmail.com>
134
+Date: 2011-10-21
135
+
136
+ Revise examples/cliverc
137
+
138
+examples/cliverc
139
+
140
+commit b5e8ddc
141
+Author: Toni Gundogdu <legatvs@gmail.com>
142
+Date: 2011-10-22
143
+
144
+ Remove print_version
145
+
146
+bin/clive
147
+
148
+commit 1bafddf
149
+Author: Toni Gundogdu <legatvs@gmail.com>
150
+Date: 2011-09-16
151
+
152
+ Add todo/ to skipped
153
+
154
+MANIFEST.SKIP
155
+
156
+commit e06648f
157
+Author: Toni Gundogdu <legatvs@gmail.com>
158
+Date: 2011-09-16
159
+
160
+ Revise README
161
+
162
+ * Add INSTALL
163
+ * Add README.packagers
164
+
165
+INSTALL
166
+MANIFEST
167
+README
168
+README.packagers
169
+
170
+commit b2c52fc
171
+Author: Toni Gundogdu <legatvs@gmail.com>
172
+Date: 2011-09-16
173
+
174
+ mv man1/ -> doc/
175
+
176
+MANIFEST
177
+Makefile.PL
178
+doc/man1/clive.1.pod
179
+man1/clive.1.pod
180
+t/clive-Pod.t
181
+
182
+commit dbb0e2f
183
+Author: Toni Gundogdu <legatvs@gmail.com>
184
+Date: 2011-09-16
185
+
186
+ Revise Makefile.PL
187
+
188
+Makefile.PL
189
+
190
+commit 7fd4d2a
191
+Author: Toni Gundogdu <legatvs@gmail.com>
192
+Date: 2011-09-16
193
+
194
+ Cleanup ignored files
195
+
196
+.gitignore
197
+MANIFEST.SKIP
198
+scripts/tidy.sh
199
+
200
+commit c72efe6
201
Author: Toni Gundogdu <legatvs.git@gmail.com>
202
-Date: Sun Jan 16 18:42:24 2011 +0200
203
+Date: 2011-08-18
204
205
- Set release details for 2.2.22
206
+ Lower quvi prerequisite to 0.2.16.1
207
208
- NEWS | 5 +++++
209
- 1 files changed, 5 insertions(+), 0 deletions(-)
210
+README
211
212
-commit ce187e11802effb6998910c50ece38005b0e8202
213
+commit 14d2443
214
Author: Toni Gundogdu <legatvs.git@gmail.com>
215
-Date: Sat Jan 8 12:56:04 2011 +0200
216
+Date: 2011-08-07
217
218
- MANIFEST.SKIP: Cleanup
219
+ Apply style changes
220
221
- MANIFEST.SKIP | 16 +++++++++-------
222
- 1 files changed, 9 insertions(+), 7 deletions(-)
223
+bin/clive
224
225
-commit 66ffcdde038575cd2a98b6541d764422124f0a04
226
+commit ed7dbc3
227
Author: Toni Gundogdu <legatvs.git@gmail.com>
228
-Date: Sat Jan 8 12:55:16 2011 +0200
229
+Date: 2011-06-19
230
231
- Add gitignore file
232
+ Set release details for 2.3.1.1
233
234
- .gitignore | 11 +++++++++++
235
- 1 files changed, 11 insertions(+), 0 deletions(-)
236
+NEWS
237
238
-commit ae651acff429cc915c297fc0a310d1f08dd6e6ed
239
+commit cd32360
240
Author: Toni Gundogdu <legatvs.git@gmail.com>
241
-Date: Sat Jan 8 12:48:40 2011 +0200
242
+Date: 2011-06-19
243
244
- support-youtube.t: Cleanup, add youtu.be test
245
+ Bump version to 2.3.1.1
246
247
- t/support-youtube.t | 17 ++++++++---------
248
- 1 files changed, 8 insertions(+), 9 deletions(-)
249
+bin/clive
250
251
-commit a81f068443ccc65c5888c0f268993e27fa050a23
252
+commit 67d5a41
253
Author: Toni Gundogdu <legatvs.git@gmail.com>
254
-Date: Sat Jan 8 12:46:47 2011 +0200
255
+Date: 2011-06-19
256
257
- Accept youtu.be URLs #8
258
-
259
- * http://sourceforge.net/apps/trac/clive/ticket/8
260
+ Rename "video" -> "media"
261
262
- lib/clive/App.pm | 7 ++++---
263
- 1 files changed, 4 insertions(+), 3 deletions(-)
264
+bin/clive
265
266
-commit b980a6a793d26f2810e40cdf779cc07f05020083
267
+commit 38dde77
268
Author: Toni Gundogdu <legatvs.git@gmail.com>
269
-Date: Fri Jan 7 10:44:45 2011 +0200
270
+Date: 2011-06-19
271
272
- Bump version to 2.2.22
273
+ Update help strings
274
275
- lib/clive/Config.pm | 2 +-
276
- 1 files changed, 1 insertions(+), 1 deletions(-)
277
+bin/clive
278
279
-commit d50cbd448d7cfc78cc606a95dd59ce131d1dc988
280
+commit 6212763
281
Author: Toni Gundogdu <legatvs.git@gmail.com>
282
-Date: Fri Jan 7 09:58:46 2011 +0200
283
+Date: 2011-06-18
284
285
- Set release details for 2.2.21
286
+ Tweak MANIFEST.SKIP
287
288
- NEWS | 5 +++++
289
- 1 files changed, 5 insertions(+), 0 deletions(-)
290
+MANIFEST.SKIP
291
292
-commit b99c7de084fddb8c762f767e716de0e9daa5332e
293
+commit b00eee3
294
Author: Toni Gundogdu <legatvs.git@gmail.com>
295
-Date: Sun Jan 2 18:56:28 2011 +0200
296
+Date: 2011-06-18
297
298
- MANIFEST.SKIP: Add patches/
299
+ Set release details for 2.3.1
300
301
- MANIFEST.SKIP | 1 +
302
- 1 files changed, 1 insertions(+), 0 deletions(-)
303
+NEWS
304
305
-commit 0d2bb753ff7163e13f8b206c4cb366e97f916416
306
+commit 5df61a6
307
Author: Toni Gundogdu <legatvs.git@gmail.com>
308
-Date: Sun Jan 2 18:55:02 2011 +0200
309
+Date: 2011-06-18
310
311
- Dailymotion.pm: Fix family-filter blocker #4
312
-
313
- * <http://sourceforge.net/apps/trac/clive/ticket/4>
314
+ README: Add gitweb URL
315
316
- lib/clive/Curl.pm | 7 ++-
317
- lib/clive/Host/Dailymotion.pm | 111 +++++++++++++++++++++++-----------------
318
- 2 files changed, 68 insertions(+), 50 deletions(-)
319
+README
320
321
-commit 42c0c15acb91b12960c4c7398b0a7cec2f7a9126
322
+commit 7051eb3
323
Author: Toni Gundogdu <legatvs.git@gmail.com>
324
-Date: Mon Dec 27 08:19:54 2010 +0200
325
+Date: 2011-06-11
326
327
- Bump version to 2.2.21
328
+ Revise manual
329
330
- lib/clive/Config.pm | 2 +-
331
- 1 files changed, 1 insertions(+), 1 deletions(-)
332
+man1/clive.1.pod
333
334
-commit 67a1ab22b2b075114fc5af6db73938ec596717e0
335
+commit cd6e5c0
336
Author: Toni Gundogdu <legatvs.git@gmail.com>
337
-Date: Mon Dec 27 08:17:04 2010 +0200
338
+Date: 2011-06-11
339
340
- Set release details for 2.2.20
341
+ Add --query-formats, deprecate "--format list"
342
343
- NEWS | 6 ++++++
344
- 1 files changed, 6 insertions(+), 0 deletions(-)
345
+bin/clive
346
347
-commit e4f1981150832650b0eade0fbdfa52089363665b
348
+commit cd2e63d
349
Author: Toni Gundogdu <legatvs.git@gmail.com>
350
-Date: Mon Dec 27 08:13:06 2010 +0200
351
+Date: 2011-06-11
352
353
- support-youtube.t: Add HTTPS URL
354
+ Add tidy.sh
355
356
- t/support-youtube.t | 3 ++-
357
- 1 files changed, 2 insertions(+), 1 deletions(-)
358
+scripts/tidy.sh
359
360
-commit ddd1bc82b51bba62b9a21416244cc1a3fa54f2b8
361
-Author: Peter Pentchev <roam@ringlet.net>
362
-Date: Wed Dec 22 10:11:45 2010 +0200
363
+commit b1edcc5
364
+Author: Toni Gundogdu <legatvs.git@gmail.com>
365
+Date: 2011-06-11
366
367
- Process non-HTTP URL's.
368
+ Bump quvi prerequisite
369
+
370
+README
371
+
372
+commit 439fd48
373
+Author: Toni Gundogdu <legatvs.git@gmail.com>
374
+Date: 2011-05-23
375
+
376
+ Bump version to 2.3.1
377
+
378
+bin/clive
379
+
380
+commit 922a1c0
381
+Author: Toni Gundogdu <legatvs.git@gmail.com>
382
+Date: 2011-05-23
383
+
384
+ croak if invalid --regexp
385
+
386
+bin/clive
387
+
388
+commit 6b32405
389
+Author: Toni Gundogdu <legatvs.git@gmail.com>
390
+Date: 2011-05-23
391
+
392
+ Add short-option for --quiet
393
+
394
+bin/clive
395
+man1/clive.1.pod
396
+
397
+commit d8939db
398
+Author: Toni Gundogdu <legatvs.git@gmail.com>
399
+Date: 2011-05-23
400
+
401
+ Update README
402
+
403
+README
404
+
405
+commit b1527e1
406
+Author: Toni Gundogdu <legatvs.git@gmail.com>
407
+Date: 2011-05-23
408
+
409
+ Cleanup manual
410
+
411
+man1/clive.1.pod
412
+
413
+commit 4639f30
414
+Author: Toni Gundogdu <legatvs.git@gmail.com>
415
+Date: 2011-05-23
416
+
417
+ Add 3rd party command autodetection from $PATH
418
+
419
+bin/clive
420
+
421
+commit f63f5db
422
+Author: Toni Gundogdu <legatvs.git@gmail.com>
423
+Date: 2011-05-22
424
+
425
+ Manual: Rewrite HISTORY
426
+
427
+man1/clive.1.pod
428
+
429
+commit da82300
430
+Author: Toni Gundogdu <legatvs.git@gmail.com>
431
+Date: 2011-05-02
432
+
433
+ Set release details for 2.3.0.3
434
+
435
+NEWS
436
+
437
+commit 738ba91
438
+Author: Toni Gundogdu <legatvs.git@gmail.com>
439
+Date: 2011-05-02
440
+
441
+ Bump version to 2.3.0.3
442
+
443
+bin/clive
444
+
445
+commit e4c7a39
446
+Author: Toni Gundogdu <legatvs.git@gmail.com>
447
+Date: 2011-05-02
448
+
449
+ Manual: Update, cleanup, fix grammar
450
451
- Some online video services, e.g. YouTube, also provide their content
452
- over HTTPS. In some environments, e.g. weirdly configured corporate
453
- firewalls, it may be useful to use that :)
454
+ * Replace example URLs with generic "URL" strings
455
+ * Rewrite "multiple URLs" in EXAMPLES
456
457
- lib/clive/App.pm | 2 +-
458
- 1 files changed, 1 insertions(+), 1 deletions(-)
459
+man1/clive.1.pod
460
461
-commit 68253c3831632787164f37d61b8fb5f148ba508a
462
+commit f9d7344
463
Author: Toni Gundogdu <legatvs.git@gmail.com>
464
-Date: Sat Dec 18 16:49:25 2010 +0200
465
+Date: 2011-05-02
466
467
- Vimeo.pm: Fix video ID parsing #2
468
+ Tweak comment
469
+
470
+examples/cliverc
471
+
472
+commit 68991c3
473
+Author: Toni Gundogdu <legatvs.git@gmail.com>
474
+Date: 2011-05-02
475
+
476
+ Add support for reading input from files
477
478
- - http://sourceforge.net/apps/trac/clive/ticket/2
479
+ * Add "error: no input urls" (with check)
480
+ * Rename add_queue -> append_queue
481
+ * Add is_url subroutine
482
+ * Add 2011, email
483
484
- lib/clive/Host/Vimeo.pm | 28 +++++++++++++++-------------
485
- 1 files changed, 15 insertions(+), 13 deletions(-)
486
+bin/clive
487
488
-commit fed6949f251289e520991b16c23c16680f80dbb2
489
+commit d12945e
490
Author: Toni Gundogdu <legatvs.git@gmail.com>
491
-Date: Sat Dec 11 20:03:36 2010 +0200
492
+Date: 2011-03-15
493
494
- Bump version
495
+ Set release details for 2.3.0.2
496
497
- lib/clive/Config.pm | 2 +-
498
- 1 files changed, 1 insertions(+), 1 deletions(-)
499
+NEWS
500
501
-commit d3699ce9ff93d8bb2cdd18416a801261976bf827
502
+commit 99a3ff2
503
Author: Toni Gundogdu <legatvs.git@gmail.com>
504
-Date: Sat Dec 11 19:59:30 2010 +0200
505
+Date: 2011-03-15
506
507
- Set release details for 2.2.19
508
+ Lower version to 2.3.0.2
509
510
- NEWS | 18 ++++++++++++++++++
511
- 1 files changed, 18 insertions(+), 0 deletions(-)
512
+bin/clive
513
514
-commit 5ffb0403ae723e3b9f55e6f27c7f9bbccbab3cf3
515
+commit ecfbac1
516
Author: Toni Gundogdu <legatvs.git@gmail.com>
517
-Date: Sat Dec 11 19:48:10 2010 +0200
518
+Date: 2011-02-19
519
520
- lastfm.url: Replace dead link
521
+ Manual: Add SYNOPSIS
522
523
- url_collection/lastfm.url | 2 +-
524
- 1 files changed, 1 insertions(+), 1 deletions(-)
525
+man1/clive.1.pod
526
527
-commit 861c0149a310c8a6a782ee19e278fec340a1a31f
528
+commit 180fd71
529
Author: Toni Gundogdu <legatvs.git@gmail.com>
530
-Date: Sat Dec 11 19:45:40 2010 +0200
531
+Date: 2011-02-19
532
533
- gvideo.url: Remove dead links
534
+ Manual: Use proper tags
535
536
- url_collection/gvideo.url | 2 --
537
- 1 files changed, 0 insertions(+), 2 deletions(-)
538
+man1/clive.1.pod
539
540
-commit f80b2115dc8681a0420096346782904d0f1f4dd6
541
+commit 0102b9b
542
Author: Toni Gundogdu <legatvs.git@gmail.com>
543
-Date: Sat Dec 11 19:35:54 2010 +0200
544
+Date: 2011-02-19
545
546
- Fix Ggasgrank -> Ggaskrank typo
547
+ Add version word to --version output
548
549
- MANIFEST | 2 +-
550
- lib/clive/Host/Gasgrank.pm | 52 -------------------------------------------
551
- lib/clive/Host/Gaskrank.pm | 52 +++++++++++++++++++++++++++++++++++++++++++
552
- lib/clive/HostFactory.pm | 2 +-
553
- t/support-gasgrank.t | 17 --------------
554
- t/support-gaskrank.t | 17 ++++++++++++++
555
- url_collection/gasgrank.url | 1 -
556
- url_collection/gaskrank.url | 1 +
557
- 8 files changed, 72 insertions(+), 72 deletions(-)
558
+bin/clive
559
560
-commit d4fee1a628fb46c922605ef8cb1c004c40964e9a
561
+commit 4052d08
562
Author: Toni Gundogdu <legatvs.git@gmail.com>
563
-Date: Sat Dec 11 19:20:40 2010 +0200
564
+Date: 2011-02-18
565
566
- Rename evisor.url to gasgrank.url
567
+ Add quvi 0.2.12+ --category-http examples
568
569
- url_collection/evisor.url | 1 -
570
- url_collection/gasgrank.url | 1 +
571
- 2 files changed, 1 insertions(+), 1 deletions(-)
572
+examples/cliverc
573
+man1/clive.1.pod
574
575
-commit ecd72af36fa67954b8b26903c0ecdb186be9d96e
576
+commit cce7706
577
Author: Toni Gundogdu <legatvs.git@gmail.com>
578
-Date: Sat Dec 11 19:18:13 2010 +0200
579
+Date: 2011-02-17
580
581
- Fix liveleak token/id parsing
582
+ examples/cliverc: Fix --get-with
583
584
- lib/clive/Host/Liveleak.pm | 2 +-
585
- 1 files changed, 1 insertions(+), 1 deletions(-)
586
+examples/cliverc
587
588
-commit e45631e5d45a5c3b0fa86794f3d079320b83b1d5
589
+commit 932c248
590
Author: Toni Gundogdu <legatvs.git@gmail.com>
591
-Date: Sat Dec 11 19:13:15 2010 +0200
592
+Date: 2011-02-14
593
594
- _cleanupTitle: remove obsolete strings from array
595
+ Make --version less verbose
596
597
- lib/clive/Video.pm | 2 +-
598
- 1 files changed, 1 insertions(+), 1 deletions(-)
599
+bin/clive
600
601
-commit 26d8edcc57232d131cc1a70fb7a8ab0477e17744
602
+commit 301c6ac
603
Author: Toni Gundogdu <legatvs.git@gmail.com>
604
-Date: Sat Dec 11 18:48:21 2010 +0200
605
+Date: 2011-02-12
606
607
- Rename Evisor.pm to Gasgrank.pm
608
+ Bump version to 2.3.1
609
610
- MANIFEST | 2 +-
611
- lib/clive/Host/Evisor.pm | 52 --------------------------------------------
612
- lib/clive/Host/Gasgrank.pm | 52 ++++++++++++++++++++++++++++++++++++++++++++
613
- lib/clive/HostFactory.pm | 2 +-
614
- t/support-evisor.t | 17 --------------
615
- t/support-gasgrank.t | 17 ++++++++++++++
616
- 6 files changed, 71 insertions(+), 71 deletions(-)
617
+bin/clive
618
619
-commit bc5048f5eda3e20f3a4109a99552ae1e3b147ee9
620
+commit 57846fb
621
Author: Toni Gundogdu <legatvs.git@gmail.com>
622
-Date: Sat Dec 11 18:45:13 2010 +0200
623
+Date: 2011-02-12
624
625
- Remove broken ehrensenf support
626
+ Set release details for 2.3.0.1
627
628
- MANIFEST | 1 -
629
- lib/clive/Host/Ehrensenf.pm | 71 ------------------------------------------
630
- lib/clive/HostFactory.pm | 2 -
631
- t/support-ehrensenf.t | 16 ---------
632
- url_collection/ehrensenf.url | 1 -
633
- 5 files changed, 0 insertions(+), 91 deletions(-)
634
+NEWS
635
636
-commit 3a52ea684c0e20514e3328fecf265e80ad6e1aca
637
+commit f4d8021
638
Author: Toni Gundogdu <legatvs.git@gmail.com>
639
-Date: Sat Dec 11 18:42:26 2010 +0200
640
+Date: 2011-02-12
641
642
- Remove broken cctv support and test
643
+ example: pre-commit: add -l=72
644
645
- MANIFEST | 1 -
646
- lib/clive/Host/Cctv.pm | 106 ----------------------------------------------
647
- lib/clive/HostFactory.pm | 1 -
648
- t/support-cctv.t | 16 -------
649
- url_collection/cctv.url | 1 -
650
- 5 files changed, 0 insertions(+), 125 deletions(-)
651
+examples/git/hooks/pre-commit
652
653
-commit 69c201089d19e3576d3fbc7f4c26f3aebba68009
654
+commit 957e31c
655
Author: Toni Gundogdu <legatvs.git@gmail.com>
656
-Date: Sat Dec 11 18:38:00 2010 +0200
657
+Date: 2011-02-12
658
659
- Rename tests, exclude net tests from dist
660
+ README: Cleanup, add notes for packagers
661
+
662
+README
663
+
664
+commit 19ad374
665
+Merge: 09cf6a9 b2cc1e5
666
+Author: Toni Gundogdu <legatvs.git@gmail.com>
667
+Date: 2011-02-10
668
+
669
+ Merge branch '2.3_gws'
670
671
- If you need the support-*.t, get them from the repo.
672
+ Conflicts:
673
+ .gitignore
674
+ ChangeLog.pre-gitlog
675
+ MANIFEST
676
+ MANIFEST.SKIP
677
+ Makefile.PL
678
+ NEWS
679
+ README
680
+ bin/clive
681
+ lib/clive/App.pm
682
+ lib/clive/Config.pm
683
+ lib/clive/Curl.pm
684
+ lib/clive/Host/Dailymotion.pm
685
+ lib/clive/Host/Gaskrank.pm
686
+ lib/clive/Host/Liveleak.pm
687
+ lib/clive/Host/Vimeo.pm
688
+ lib/clive/Host/Youtube.pm
689
+ lib/clive/HostFactory.pm
690
+ lib/clive/Util.pm
691
+ lib/clive/Video.pm
692
+ man1/clive.1.pod
693
+ t/eval-compile.t
694
+ t/eval-exitstatus.t
695
+ t/support-break.t
696
+ t/support-buzzhumor.t
697
+ t/support-clipfish.t
698
+ t/support-dailymotion.t
699
+ t/support-funnyhub.t
700
+ t/support-gaskrank.t
701
+ t/support-golem.t
702
+ t/support-google.t
703
+ t/support-liveleak.t
704
+ t/support-sevenload.t
705
+ t/support-spiegel.t
706
+ t/support-vimeo.t
707
+ t/support-youtube.t
708
+ url_collection/break.url
709
+ url_collection/buzzhumor.url
710
+ url_collection/clipfish.url
711
+ url_collection/dmotion.url
712
+ url_collection/funnyhub.url
713
+ url_collection/golem.url
714
+ url_collection/gvideo.url
715
+ url_collection/liveleak.url
716
+ url_collection/spiegel.url
717
+ url_collection/vimeo.url
718
+ url_collection/ytube-nocookie.url
719
+ url_collection/ytube-utf8.url
720
+ url_collection/ytube.url
721
+
722
+commit b2cc1e5
723
+Author: Toni Gundogdu <legatvs.git@gmail.com>
724
+Date: 2011-02-04
725
726
- MANIFEST | 22 +++-------------------
727
- MANIFEST.SKIP | 5 ++++-
728
- README | 7 ++-----
729
- t/00compiles.t | 9 ---------
730
- t/01pod.t | 13 -------------
731
- t/02youtube.t | 24 ------------------------
732
- t/03break.t | 15 ---------------
733
- t/04liveleak.t | 16 ----------------
734
- t/05dailymotion.t | 21 ---------------------
735
- t/06golem.t | 19 -------------------
736
- t/07cctv.t | 16 ----------------
737
- t/08evisor.t | 17 -----------------
738
- t/09google.t | 22 ----------------------
739
- t/10sevenload.t | 20 --------------------
740
- t/12vimeo.t | 15 ---------------
741
- t/13error.t | 14 --------------
742
- t/14spiegel.t | 20 --------------------
743
- t/15ehrensenf.t | 16 ----------------
744
- t/16clipfish.t | 15 ---------------
745
- t/17funnyhub.t | 16 ----------------
746
- t/19buzzhumor.t | 15 ---------------
747
- t/eval-compile.t | 9 +++++++++
748
- t/eval-exitstatus.t | 14 ++++++++++++++
749
- t/eval-pod.t | 11 +++++++++++
750
- t/support-break.t | 15 +++++++++++++++
751
- t/support-buzzhumor.t | 15 +++++++++++++++
752
- t/support-cctv.t | 16 ++++++++++++++++
753
- t/support-clipfish.t | 15 +++++++++++++++
754
- t/support-dailymotion.t | 21 +++++++++++++++++++++
755
- t/support-ehrensenf.t | 16 ++++++++++++++++
756
- t/support-evisor.t | 17 +++++++++++++++++
757
- t/support-funnyhub.t | 16 ++++++++++++++++
758
- t/support-golem.t | 19 +++++++++++++++++++
759
- t/support-google.t | 22 ++++++++++++++++++++++
760
- t/support-liveleak.t | 16 ++++++++++++++++
761
- t/support-sevenload.t | 20 ++++++++++++++++++++
762
- t/support-spiegel.t | 20 ++++++++++++++++++++
763
- t/support-vimeo.t | 15 +++++++++++++++
764
- t/support-youtube.t | 24 ++++++++++++++++++++++++
765
- 39 files changed, 310 insertions(+), 328 deletions(-)
766
-
767
-commit 8a9f43c00dd8d10605dc0a8ab5af45117d5fdfbc
768
-Author: Toni Gundogdu <legatvs.git@gmail.com>
769
-Date: Sat Dec 11 18:05:48 2010 +0200
770
+ Manual: Cleanup, add HISTORY
771
772
- Move tlinks/ to url_collection/
773
+man1/clive.1.pod
774
+
775
+commit b441168
776
+Author: Toni Gundogdu <legatvs.git@gmail.com>
777
+Date: 2011-01-24
778
779
- tlinks/break.url | 1 -
780
- tlinks/buzzhumor.url | 1 -
781
- tlinks/cctv.url | 1 -
782
- tlinks/clipfish.url | 1 -
783
- tlinks/dmotion.url | 2 --
784
- tlinks/ehrensenf.url | 1 -
785
- tlinks/evisor.url | 1 -
786
- tlinks/funnyhub.url | 1 -
787
- tlinks/golem.url | 1 -
788
- tlinks/gvideo.url | 12 ------------
789
- tlinks/lastfm.url | 1 -
790
- tlinks/liveleak.url | 2 --
791
- tlinks/sload.url | 1 -
792
- tlinks/spiegel.url | 1 -
793
- tlinks/vimeo.url | 1 -
794
- tlinks/ytube-nocookie.url | 1 -
795
- tlinks/ytube-utf8.url | 1 -
796
- tlinks/ytube.url | 1 -
797
- url_collection/break.url | 1 +
798
- url_collection/buzzhumor.url | 1 +
799
- url_collection/cctv.url | 1 +
800
- url_collection/clipfish.url | 1 +
801
- url_collection/dmotion.url | 2 ++
802
- url_collection/ehrensenf.url | 1 +
803
- url_collection/evisor.url | 1 +
804
- url_collection/funnyhub.url | 1 +
805
- url_collection/golem.url | 1 +
806
- url_collection/gvideo.url | 12 ++++++++++++
807
- url_collection/lastfm.url | 1 +
808
- url_collection/liveleak.url | 2 ++
809
- url_collection/sload.url | 1 +
810
- url_collection/spiegel.url | 1 +
811
- url_collection/vimeo.url | 1 +
812
- url_collection/ytube-nocookie.url | 1 +
813
- url_collection/ytube-utf8.url | 1 +
814
- url_collection/ytube.url | 1 +
815
- 36 files changed, 31 insertions(+), 31 deletions(-)
816
-
817
-commit 0ed73f575f5c347e070e70fbe42523c2b000104b
818
-Author: Toni Gundogdu <legatvs.git@gmail.com>
819
-Date: Sat Dec 11 18:02:48 2010 +0200
820
+ Bump version to 2.3.0.1
821
822
- Add man1/clive.1.pod, simplify bin/clive POD
823
+bin/clive
824
+
825
+commit 944a30e
826
+Author: Toni Gundogdu <legatvs.git@gmail.com>
827
+Date: 2011-01-24
828
+
829
+ --format help: Use mp4_360p instead
830
+
831
+bin/clive
832
+
833
+commit af51394
834
+Author: Toni Gundogdu <legatvs.git@gmail.com>
835
+Date: 2011-01-24
836
+
837
+ Manual: examples: Use mp4_360p instead
838
839
- Manifying will be done now from man1/clive.1.pod. bin/clive will only
840
- contain the help strings from now on.
841
+ * Add 2.3 note to DESCRIPTION
842
+ * EXAMPPLES: Replace webm_480p with mp4_360p
843
844
- MANIFEST | 1 +
845
- Makefile.PL | 2 +
846
- bin/clive | 644 ++++--------------------------------------------------
847
- man1/clive.1.pod | 550 ++++++++++++++++++++++++++++++++++++++++++++++
848
- 4 files changed, 594 insertions(+), 603 deletions(-)
849
+man1/clive.1.pod
850
851
-commit 95752b3842a7897b4e1779cd4bd18e4fa9448b8a
852
+commit 09cf6a9
853
Author: Toni Gundogdu <legatvs.git@gmail.com>
854
-Date: Sat Dec 11 17:42:18 2010 +0200
855
+Date: 2011-01-16
856
857
- Exclude tlinks/ from manifest
858
+ Bump version to 2.2.23
859
860
- MANIFEST | 18 ------------------
861
- MANIFEST.SKIP | 1 +
862
- 2 files changed, 1 insertions(+), 18 deletions(-)
863
+lib/clive/Config.pm
864
865
-commit 59a73ae76d3b35dda8851b28b78f3d3285aab0d7
866
+commit 2aec286
867
Author: Toni Gundogdu <legatvs.git@gmail.com>
868
-Date: Sat Dec 11 17:40:30 2010 +0200
869
+Date: 2011-01-16
870
871
- Generate ChangeLog from gitlog; gzip src instead
872
+ Set release details for 2.2.22
873
874
- Makefile.PL | 12 +++++++++---
875
- 1 files changed, 9 insertions(+), 3 deletions(-)
876
+NEWS
877
878
-commit 4583a506b82f3f0c4051364c447aa5ca594a301d
879
+commit 13e4fd4
880
Author: Toni Gundogdu <legatvs.git@gmail.com>
881
-Date: Sat Dec 11 17:40:02 2010 +0200
882
+Date: 2011-01-09
883
884
- Add more patterns to MANIFEST.SKIP
885
+ Apply perltidy with -l=72
886
887
- MANIFEST.SKIP | 2 ++
888
- 1 files changed, 2 insertions(+), 0 deletions(-)
889
+bin/clive
890
891
-commit 2539dff37b172eafb571cb9055f156e2ef4005cf
892
+commit ce187e1
893
Author: Toni Gundogdu <legatvs.git@gmail.com>
894
-Date: Sat Dec 11 17:29:52 2010 +0200
895
+Date: 2011-01-08
896
897
- Add empty ChangeLog file
898
+ MANIFEST.SKIP: Cleanup
899
900
- MANIFEST | 1 +
901
- 1 files changed, 1 insertions(+), 0 deletions(-)
902
+MANIFEST.SKIP
903
904
-commit a38cfe691b77ceb659cf55dd39caa2d884297a5a
905
+commit 66ffcdd
906
Author: Toni Gundogdu <legatvs.git@gmail.com>
907
-Date: Sat Dec 11 17:24:33 2010 +0200
908
+Date: 2011-01-08
909
910
- Backup ChangeLog as ChangeLog.pre-gitlog
911
+ Add gitignore file
912
913
- ChangeLog | 963 --------------------------------------------------
914
- ChangeLog.pre-gitlog | 963 ++++++++++++++++++++++++++++++++++++++++++++++++++
915
- MANIFEST | 2 +-
916
- 3 files changed, 964 insertions(+), 964 deletions(-)
917
+.gitignore
918
919
-commit 5b5a5c7ad149c459e3d16d11e30c050467527011
920
+commit ae651ac
921
Author: Toni Gundogdu <legatvs.git@gmail.com>
922
-Date: Sat Dec 11 17:03:30 2010 +0200
923
+Date: 2011-01-08
924
925
- Remove myubo support: dead site
926
+ support-youtube.t: Cleanup, add youtu.be test
927
928
- MANIFEST | 3 --
929
- lib/clive/Host/Myubo.pm | 52 -----------------------------------------------
930
- t/18myubo.t | 17 ---------------
931
- tlinks/myubo.url | 1 -
932
- 4 files changed, 0 insertions(+), 73 deletions(-)
933
+t/support-youtube.t
934
935
-commit a677f13af07ca50f908681e1603f6be788b94d8f
936
+commit a81f068
937
Author: Toni Gundogdu <legatvs.git@gmail.com>
938
-Date: Sat Dec 11 17:01:49 2010 +0200
939
+Date: 2011-01-08
940
941
- 02youtube.t: Fix format array
942
+ Accept youtu.be URLs #8
943
+
944
+ * http://sourceforge.net/apps/trac/clive/ticket/8
945
946
- t/02youtube.t | 5 +++--
947
- 1 files changed, 3 insertions(+), 2 deletions(-)
948
+lib/clive/App.pm
949
950
-commit 0066635160eb690408240c69927cab46de55b6d9
951
+commit 9ae1d96
952
Author: Toni Gundogdu <legatvs.git@gmail.com>
953
-Date: Sat Dec 11 15:16:44 2010 +0200
954
+Date: 2011-01-08
955
956
- Set new home WWW
957
+ Add vim modeline
958
959
- README | 6 ++----
960
- bin/clive | 21 +++++----------------
961
- 2 files changed, 7 insertions(+), 20 deletions(-)
962
+bin/clive
963
964
-commit d3085b6bbcaeb6b2fc6870927e6e7166ef05d3b4
965
+commit b7ef112
966
Author: Toni Gundogdu <legatvs.git@gmail.com>
967
-Date: Sat Dec 11 13:03:14 2010 +0200
968
+Date: 2011-01-07
969
970
- Youtube: Extend format aliases to match quvi IDs
971
+ Add gitignore file
972
+
973
+.gitignore
974
+
975
+commit d239f9e
976
+Author: Toni Gundogdu <legatvs.git@gmail.com>
977
+Date: 2011-01-07
978
+
979
+ Update MANIFEST files
980
+
981
+MANIFEST
982
+MANIFEST.SKIP
983
+
984
+commit 3c249a8
985
+Author: Toni Gundogdu <legatvs.git@gmail.com>
986
+Date: 2011-01-07
987
+
988
+ Add pre-commit example to repo
989
+
990
+examples/git/hooks/pre-commit
991
+
992
+commit 8da742e
993
+Author: Toni Gundogdu <legatvs.git@gmail.com>
994
+Date: 2011-01-07
995
+
996
+ Apply default perltidy style
997
+
998
+bin/clive
999
+
1000
+commit b980a6a
1001
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1002
+Date: 2011-01-07
1003
+
1004
+ Bump version to 2.2.22
1005
+
1006
+lib/clive/Config.pm
1007
+
1008
+commit d50cbd4
1009
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1010
+Date: 2011-01-07
1011
+
1012
+ Set release details for 2.2.21
1013
+
1014
+NEWS
1015
+
1016
+commit b99c7de
1017
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1018
+Date: 2011-01-02
1019
+
1020
+ MANIFEST.SKIP: Add patches/
1021
+
1022
+MANIFEST.SKIP
1023
+
1024
+commit 0d2bb75
1025
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1026
+Date: 2011-01-02
1027
+
1028
+ Dailymotion.pm: Fix family-filter blocker #4
1029
1030
- Extend aliases to cover those recently introduced by quvi based the
1031
- wikipedia page information about the containers. Use
1032
- $container_$max_width.
1033
+ * <http://sourceforge.net/apps/trac/clive/ticket/4>
1034
1035
- lib/clive/Config.pm | 33 +++++++++++++++++++++++----------
1036
- lib/clive/HostFactory.pm | 9 +++++----
1037
- 2 files changed, 28 insertions(+), 14 deletions(-)
1038
+lib/clive/Curl.pm
1039
+lib/clive/Host/Dailymotion.pm
1040
1041
-commit a9ee885c8c36882d846dca595a9b993df726acd1
1042
+commit 42c0c15
1043
Author: Toni Gundogdu <legatvs.git@gmail.com>
1044
-Date: Sat Dec 11 12:47:19 2010 +0200
1045
+Date: 2010-12-27
1046
1047
- Fix Youtube: Unknown error (http/404) #1
1048
+ Bump version to 2.2.21
1049
+
1050
+lib/clive/Config.pm
1051
+
1052
+commit 67a1ab2
1053
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1054
+Date: 2010-12-27
1055
+
1056
+ Set release details for 2.2.20
1057
+
1058
+NEWS
1059
+
1060
+commit e4f1981
1061
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1062
+Date: 2010-12-27
1063
+
1064
+ support-youtube.t: Add HTTPS URL
1065
+
1066
+t/support-youtube.t
1067
+
1068
+commit ddd1bc8
1069
+Author: Peter Pentchev <roam@ringlet.net>
1070
+Date: 2010-12-22
1071
+
1072
+ Process non-HTTP URL's.
1073
1074
- - http://sourceforge.net/apps/trac/clive/ticket/1
1075
+ Some online video services, e.g. YouTube, also provide their content
1076
+ over HTTPS. In some environments, e.g. weirdly configured corporate
1077
+ firewalls, it may be useful to use that :)
1078
1079
- lib/clive/Host/Youtube.pm | 127 +++++++++++++++++++++++++--------------------
1080
- 1 files changed, 71 insertions(+), 56 deletions(-)
1081
+lib/clive/App.pm
1082
1083
-commit de703346f3ee76cf14c916f9fbff21b5280c3439
1084
+commit 0900a90
1085
Author: Toni Gundogdu <legatvs.git@gmail.com>
1086
-Date: Sat Dec 11 12:29:48 2010 +0200
1087
+Date: 2010-12-18
1088
1089
- Remove TODO file
1090
+ Set release details for 2.3.0_4
1091
1092
- MANIFEST | 1 -
1093
- TODO | 2 --
1094
- 2 files changed, 0 insertions(+), 3 deletions(-)
1095
+NEWS
1096
1097
-commit be4ad0a61f0730368985bd039ce9218fcc8d4ec2
1098
-Author: legatvs <legatvs.git@gmail.com>
1099
-Date: Tue Nov 30 14:02:38 2010 +0200
1100
+commit 68253c3
1101
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1102
+Date: 2010-12-18
1103
1104
- bump version
1105
+ Vimeo.pm: Fix video ID parsing #2
1106
+
1107
+ - http://sourceforge.net/apps/trac/clive/ticket/2
1108
+
1109
+lib/clive/Host/Vimeo.pm
1110
+
1111
+commit 5ba0c23
1112
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1113
+Date: 2010-12-17
1114
+
1115
+ Generate ChangeLog from git log
1116
+
1117
+Makefile.PL
1118
+
1119
+commit ebbc902
1120
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1121
+Date: 2010-12-17
1122
+
1123
+ Add stub ChangeLog
1124
+
1125
+ChangeLog
1126
+
1127
+commit 60af72b
1128
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1129
+Date: 2010-12-17
1130
+
1131
+ mv ChangeLog to ChangeLog.pre-gitlog
1132
+
1133
+ChangeLog
1134
+ChangeLog.pre-gitlog
1135
+MANIFEST
1136
+
1137
+commit e192fc4
1138
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1139
+Date: 2010-12-17
1140
+
1141
+ NEWS: Move 2.3 changes from ChangeLog
1142
+
1143
+ChangeLog
1144
+NEWS
1145
+
1146
+commit fed6949
1147
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1148
+Date: 2010-12-11
1149
+
1150
+ Bump version
1151
+
1152
+lib/clive/Config.pm
1153
+
1154
+commit d3699ce
1155
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1156
+Date: 2010-12-11
1157
+
1158
+ Set release details for 2.2.19
1159
+
1160
+NEWS
1161
+
1162
+commit 5ffb040
1163
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1164
+Date: 2010-12-11
1165
+
1166
+ lastfm.url: Replace dead link
1167
+
1168
+url_collection/lastfm.url
1169
+
1170
+commit 861c014
1171
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1172
+Date: 2010-12-11
1173
+
1174
+ gvideo.url: Remove dead links
1175
+
1176
+url_collection/gvideo.url
1177
+
1178
+commit f80b211
1179
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1180
+Date: 2010-12-11
1181
+
1182
+ Fix Ggasgrank -> Ggaskrank typo
1183
+
1184
+MANIFEST
1185
+lib/clive/Host/Gasgrank.pm
1186
+lib/clive/Host/Gaskrank.pm
1187
+lib/clive/HostFactory.pm
1188
+t/support-gasgrank.t
1189
+t/support-gaskrank.t
1190
+url_collection/gasgrank.url
1191
+url_collection/gaskrank.url
1192
+
1193
+commit d4fee1a
1194
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1195
+Date: 2010-12-11
1196
+
1197
+ Rename evisor.url to gasgrank.url
1198
+
1199
+url_collection/evisor.url
1200
+url_collection/gasgrank.url
1201
+
1202
+commit ecd72af
1203
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1204
+Date: 2010-12-11
1205
+
1206
+ Fix liveleak token/id parsing
1207
+
1208
+lib/clive/Host/Liveleak.pm
1209
+
1210
+commit e45631e
1211
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1212
+Date: 2010-12-11
1213
+
1214
+ _cleanupTitle: remove obsolete strings from array
1215
+
1216
+lib/clive/Video.pm
1217
+
1218
+commit 26d8edc
1219
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1220
+Date: 2010-12-11
1221
+
1222
+ Rename Evisor.pm to Gasgrank.pm
1223
+
1224
+MANIFEST
1225
+lib/clive/Host/Evisor.pm
1226
+lib/clive/Host/Gasgrank.pm
1227
+lib/clive/HostFactory.pm
1228
+t/support-evisor.t
1229
+t/support-gasgrank.t
1230
+
1231
+commit bc5048f
1232
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1233
+Date: 2010-12-11
1234
+
1235
+ Remove broken ehrensenf support
1236
+
1237
+MANIFEST
1238
+lib/clive/Host/Ehrensenf.pm
1239
+lib/clive/HostFactory.pm
1240
+t/support-ehrensenf.t
1241
+url_collection/ehrensenf.url
1242
+
1243
+commit 3a52ea6
1244
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1245
+Date: 2010-12-11
1246
+
1247
+ Remove broken cctv support and test
1248
+
1249
+MANIFEST
1250
+lib/clive/Host/Cctv.pm
1251
+lib/clive/HostFactory.pm
1252
+t/support-cctv.t
1253
+url_collection/cctv.url
1254
+
1255
+commit 69c2010
1256
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1257
+Date: 2010-12-11
1258
+
1259
+ Rename tests, exclude net tests from dist
1260
+
1261
+ If you need the support-*.t, get them from the repo.
1262
+
1263
+MANIFEST
1264
+MANIFEST.SKIP
1265
+README
1266
+t/00compiles.t
1267
+t/01pod.t
1268
+t/02youtube.t
1269
+t/03break.t
1270
+t/04liveleak.t
1271
+t/05dailymotion.t
1272
+t/06golem.t
1273
+t/07cctv.t
1274
+t/08evisor.t
1275
+t/09google.t
1276
+t/10sevenload.t
1277
+t/12vimeo.t
1278
+t/13error.t
1279
+t/14spiegel.t
1280
+t/15ehrensenf.t
1281
+t/16clipfish.t
1282
+t/17funnyhub.t
1283
+t/19buzzhumor.t
1284
+t/eval-compile.t
1285
+t/eval-exitstatus.t
1286
+t/eval-pod.t
1287
+t/support-break.t
1288
+t/support-buzzhumor.t
1289
+t/support-cctv.t
1290
+t/support-clipfish.t
1291
+t/support-dailymotion.t
1292
+t/support-ehrensenf.t
1293
+t/support-evisor.t
1294
+t/support-funnyhub.t
1295
+t/support-golem.t
1296
+t/support-google.t
1297
+t/support-liveleak.t
1298
+t/support-sevenload.t
1299
+t/support-spiegel.t
1300
+t/support-vimeo.t
1301
+t/support-youtube.t
1302
+
1303
+commit 8a9f43c
1304
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1305
+Date: 2010-12-11
1306
+
1307
+ Move tlinks/ to url_collection/
1308
+
1309
+tlinks/break.url
1310
+tlinks/buzzhumor.url
1311
+tlinks/cctv.url
1312
+tlinks/clipfish.url
1313
+tlinks/dmotion.url
1314
+tlinks/ehrensenf.url
1315
+tlinks/evisor.url
1316
+tlinks/funnyhub.url
1317
+tlinks/golem.url
1318
+tlinks/gvideo.url
1319
+tlinks/lastfm.url
1320
+tlinks/liveleak.url
1321
+tlinks/sload.url
1322
+tlinks/spiegel.url
1323
+tlinks/vimeo.url
1324
+tlinks/ytube-nocookie.url
1325
+tlinks/ytube-utf8.url
1326
+tlinks/ytube.url
1327
+url_collection/break.url
1328
+url_collection/buzzhumor.url
1329
+url_collection/cctv.url
1330
+url_collection/clipfish.url
1331
+url_collection/dmotion.url
1332
+url_collection/ehrensenf.url
1333
+url_collection/evisor.url
1334
+url_collection/funnyhub.url
1335
+url_collection/golem.url
1336
+url_collection/gvideo.url
1337
+url_collection/lastfm.url
1338
+url_collection/liveleak.url
1339
+url_collection/sload.url
1340
+url_collection/spiegel.url
1341
+url_collection/vimeo.url
1342
+url_collection/ytube-nocookie.url
1343
+url_collection/ytube-utf8.url
1344
+url_collection/ytube.url
1345
+
1346
+commit 0ed73f5
1347
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1348
+Date: 2010-12-11
1349
+
1350
+ Add man1/clive.1.pod, simplify bin/clive POD
1351
+
1352
+ Manifying will be done now from man1/clive.1.pod. bin/clive will only
1353
+ contain the help strings from now on.
1354
+
1355
+MANIFEST
1356
+Makefile.PL
1357
+bin/clive
1358
+man1/clive.1.pod
1359
+
1360
+commit 95752b3
1361
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1362
+Date: 2010-12-11
1363
+
1364
+ Exclude tlinks/ from manifest
1365
+
1366
+MANIFEST
1367
+MANIFEST.SKIP
1368
+
1369
+commit 59a73ae
1370
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1371
+Date: 2010-12-11
1372
+
1373
+ Generate ChangeLog from gitlog; gzip src instead
1374
+
1375
+Makefile.PL
1376
+
1377
+commit 4583a50
1378
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1379
+Date: 2010-12-11
1380
+
1381
+ Add more patterns to MANIFEST.SKIP
1382
+
1383
+MANIFEST.SKIP
1384
+
1385
+commit 2539dff
1386
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1387
+Date: 2010-12-11
1388
+
1389
+ Add empty ChangeLog file
1390
+
1391
+ChangeLog
1392
+MANIFEST
1393
+
1394
+commit a38cfe6
1395
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1396
+Date: 2010-12-11
1397
+
1398
+ Backup ChangeLog as ChangeLog.pre-gitlog
1399
+
1400
+ChangeLog
1401
+ChangeLog.pre-gitlog
1402
+MANIFEST
1403
+
1404
+commit 5b5a5c7
1405
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1406
+Date: 2010-12-11
1407
+
1408
+ Remove myubo support: dead site
1409
+
1410
+MANIFEST
1411
+lib/clive/Host/Myubo.pm
1412
+t/18myubo.t
1413
+tlinks/myubo.url
1414
+
1415
+commit a677f13
1416
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1417
+Date: 2010-12-11
1418
+
1419
+ 02youtube.t: Fix format array
1420
+
1421
+t/02youtube.t
1422
+
1423
+commit c3f6ac2
1424
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1425
+Date: 2010-12-11
1426
+
1427
+ Set new home WWW
1428
+
1429
+README
1430
+man1/clive.1.pod
1431
+
1432
+commit 0066635
1433
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1434
+Date: 2010-12-11
1435
+
1436
+ Set new home WWW
1437
+
1438
+README
1439
+bin/clive
1440
+
1441
+commit d3085b6
1442
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1443
+Date: 2010-12-11
1444
+
1445
+ Youtube: Extend format aliases to match quvi IDs
1446
+
1447
+ Extend aliases to cover those recently introduced by quvi based the
1448
+ wikipedia page information about the containers. Use
1449
+ $container_$max_width.
1450
+
1451
+lib/clive/Config.pm
1452
+lib/clive/HostFactory.pm
1453
+
1454
+commit a9ee885
1455
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1456
+Date: 2010-12-11
1457
+
1458
+ Fix Youtube: Unknown error (http/404) #1
1459
+
1460
+ - http://sourceforge.net/apps/trac/clive/ticket/1
1461
+
1462
+lib/clive/Host/Youtube.pm
1463
+
1464
+commit de70334
1465
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1466
+Date: 2010-12-11
1467
+
1468
+ Remove TODO file
1469
+
1470
+MANIFEST
1471
+TODO
1472
+
1473
+commit 23004c7
1474
+Author: Toni Gundogdu <legatvs.git@gmail.com>
1475
+Date: 2010-12-05
1476
+
1477
+ Bump version to 2.3.0_4
1478
+
1479
+bin/clive
1480
+
1481
+commit b9001dc
1482
+Author: legatvs <legatvs.git@gmail.com>
1483
+Date: 2010-12-01
1484
+
1485
+ set release date
1486
+
1487
+ChangeLog
1488
+
1489
+commit be4ad0a
1490
+Author: legatvs <legatvs.git@gmail.com>
1491
+Date: 2010-11-30
1492
+
1493
+ bump version
1494
+
1495
+lib/clive/Config.pm
1496
+
1497
+commit 5ee4d5f
1498
+Author: legatvs <legatvs.git@gmail.com>
1499
+Date: 2010-11-30
1500
+
1501
+ set release date
1502
+
1503
+ChangeLog
1504
+
1505
+commit e62c4d7
1506
+Author: legatvs <legatvs.git@gmail.com>
1507
+Date: 2010-11-30
1508
+
1509
+ change google test URL
1510
+
1511
+ChangeLog
1512
+t/09google.t
1513
+
1514
+commit da617b8
1515
+Author: legatvs <legatvs.git@gmail.com>
1516
+Date: 2010-11-25
1517
+
1518
+ ChangeLog: dailymotion swf urls
1519
+
1520
+ChangeLog
1521
+
1522
+commit dc05c6f
1523
+Author: legatvs <legatvs.git@gmail.com>
1524
+Date: 2010-11-25
1525
+
1526
+ dailymotion: accept swf urls
1527
+
1528
+lib/clive/App.pm
1529
+
1530
+commit 2d88bd6
1531
+Author: legatvs <legatvs.git@gmail.com>
1532
+Date: 2010-11-07
1533
+
1534
+ add missing comma
1535
+
1536
+bin/clive
1537
+
1538
+commit 6f6f1c4
1539
+Author: legatvs <legatvs.git@gmail.com>
1540
+Date: 2010-11-07
1541
+
1542
+ add support for /etc/xdg/clive/clive.conf
1543
+
1544
+ChangeLog
1545
+bin/clive
1546
+man1/clive.1.pod
1547
+
1548
+commit 90120eb
1549
+Author: legatvs <legatvs.git@gmail.com>
1550
+Date: 2010-11-07
1551
+
1552
+ add /etc/xdg/clive.conf
1553
+
1554
+ChangeLog
1555
+bin/clive
1556
+man1/clive.1.pod
1557
+
1558
+commit e4f720c
1559
+Author: legatvs <legatvs.git@gmail.com>
1560
+Date: 2010-11-06
1561
+
1562
+ bump version
1563
+
1564
+lib/clive/Config.pm
1565
+
1566
+commit dc6bd23
1567
+Author: legatvs <legatvs.git@gmail.com>
1568
+Date: 2010-11-06
1569
+
1570
+ set release date
1571
+
1572
+ChangeLog
1573
+
1574
+commit d14e4fc
1575
+Author: legatvs <legatvs.git@gmail.com>
1576
+Date: 2010-11-06
1577
+
1578
+ sload.url: remove old urls
1579
+
1580
+tlinks/sload.url
1581
+
1582
+commit ef81914
1583
+Author: legatvs <legatvs.git@gmail.com>
1584
+Date: 2010-11-05
1585
+
1586
+ omit return operator where optional
1587
+
1588
+bin/clive
1589
+
1590
+commit 67ec193
1591
+Author: legatvs <legatvs.git@gmail.com>
1592
+Date: 2010-11-05
1593
+
1594
+ add more whitespace
1595
+
1596
+bin/clive
1597
+
1598
+commit b41a71a
1599
+Author: legatvs <legatvs.git@gmail.com>
1600
+Date: 2010-11-05
1601
+
1602
+ README: bump quvi prereq for --support
1603
+
1604
+README
1605
+
1606
+commit 0149b11
1607
+Author: legatvs <legatvs.git@gmail.com>
1608
+Date: 2010-11-04
1609
+
1610
+ manual: website support: add -f
1611
+
1612
+man1/clive.1.pod
1613
+
1614
+commit 570010b
1615
+Author: legatvs <legatvs.git@gmail.com>
1616
+Date: 2010-11-04
1617
+
1618
+ bump version
1619
+
1620
+bin/clive
1621
+
1622
+commit f2b5ebf
1623
+Author: legatvs <legatvs.git@gmail.com>
1624
+Date: 2010-11-04
1625
+
1626
+ add --format help,list to ChangeLog
1627
+
1628
+ChangeLog
1629
+
1630
+commit b19a3d7
1631
+Author: legatvs <legatvs.git@gmail.com>
1632
+Date: 2010-11-04
1633
+
1634
+ add --format help,list to manual
1635
+
1636
+man1/clive.1.pod
1637
+
1638
+commit 644d343
1639
+Author: legatvs <legatvs.git@gmail.com>
1640
+Date: 2010-11-04
1641
+
1642
+ add --format help,list
1643
+
1644
+bin/clive
1645
+
1646
+commit 8b42e0f
1647
+Author: legatvs <legatvs.git@gmail.com>
1648
+Date: 2010-11-04
1649
+
1650
+ set release date
1651
+
1652
+ChangeLog
1653
+
1654
+commit 771b879
1655
+Author: legatvs <legatvs.git@gmail.com>
1656
+Date: 2010-11-04
1657
+
1658
+ ChangeLog: 2.3 beta 2, 2.3_gws
1659
+
1660
+ChangeLog
1661
+
1662
+commit d655aaf
1663
+Author: legatvs <legatvs.git@gmail.com>
1664
+Date: 2010-11-04
1665
+
1666
+ add prefix to gws
1667
+
1668
+NEWS
1669
+
1670
+commit 88ef6f6
1671
+Author: legatvs <legatvs.git@gmail.com>
1672
+Date: 2010-11-04
1673
+
1674
+ ChangeLog: add -2 commits
1675
+
1676
+ChangeLog
1677
+
1678
+commit 2ec01ff
1679
+Author: legatvs <legatvs.git@gmail.com>
1680
+Date: 2010-11-04
1681
+
1682
+ rewrite toUnits
1683
+
1684
+lib/clive/Util.pm
1685
+
1686
+commit 00b2208
1687
+Author: legatvs <legatvs.git@gmail.com>
1688
+Date: 2010-11-04
1689
+
1690
+ Makefile.PL: VERSION_FROM, use "version" module
1691
+
1692
+Makefile.PL
1693
+lib/clive/Config.pm
1694
+
1695
+commit 7c17d36
1696
+Author: legatvs <legatvs.git@gmail.com>
1697
+Date: 2010-11-04
1698
+
1699
+ tidy NEWS, README
1700
+
1701
+NEWS
1702
+README
1703
+
1704
+commit 2fed4cb
1705
+Author: legatvs <legatvs.git@gmail.com>
1706
+Date: 2010-11-04
1707
+
1708
+ Makefile.PL: use 5.008009
1709
+
1710
+Makefile.PL
1711
+
1712
+commit a099c50
1713
+Author: legatvs <legatvs.git@gmail.com>
1714
+Date: 2010-11-03
1715
+
1716
+ clive.1.pod: add missing sections
1717
+
1718
+man1/clive.1.pod
1719
+
1720
+commit 9170b07
1721
+Author: legatvs <legatvs.git@gmail.com>
1722
+Date: 2010-11-03
1723
+
1724
+ NEWS: cleanup 2.3
1725
+
1726
+NEWS
1727
+
1728
+commit 40fb225
1729
+Author: legatvs <legatvs.git@gmail.com>
1730
+Date: 2010-11-03
1731
+
1732
+ remove TODO from dist
1733
+
1734
+MANIFEST
1735
+MANIFEST.SKIP
1736
+
1737
+commit 1b3d733
1738
+Author: legatvs <legatvs.git@gmail.com>
1739
+Date: 2010-11-03
1740
+
1741
+ run "make manifest"
1742
+
1743
+MANIFEST
1744
+
1745
+commit 0a67bc6
1746
+Author: legatvs <legatvs.git@gmail.com>
1747
+Date: 2010-11-03
1748
+
1749
+ add system-wide config support
1750
+
1751
+ChangeLog
1752
+NEWS
1753
+bin/clive
1754
+examples/cliverc
1755
+man1/clive.1.pod
1756
+
1757
+commit 9b9f03a
1758
+Author: legatvs <legatvs.git@gmail.com>
1759
+Date: 2010-11-03
1760
+
1761
+ remove TODO
1762
+
1763
+TODO
1764
+
1765
+commit 0c74db6
1766
+Author: legatvs <legatvs.git@gmail.com>
1767
+Date: 2010-11-03
1768
+
1769
+ ChangeLog: fix a typo
1770
+
1771
+ChangeLog
1772
+
1773
+commit 9609eed
1774
+Author: legatvs <legatvs.git@gmail.com>
1775
+Date: 2010-11-03
1776
+
1777
+ ChangeLog: cleanup 2.3 beta 2
1778
+
1779
+ChangeLog
1780
+
1781
+commit d328ece
1782
+Author: legatvs <legatvs.git@gmail.com>
1783
+Date: 2010-11-03
1784
+
1785
+ bin/clive: manual to man1/clive.1.pod
1786
+
1787
+MANIFEST
1788
+Makefile.PL
1789
+bin/clive
1790
+man1/clive.1.pod
1791
+t/clive-Pod.t
1792
+
1793
+commit 5d01a2d
1794
+Author: legatvs <legatvs.git@gmail.com>
1795
+Date: 2010-11-03
1796
+
1797
+ NEWS: cleanup 2.3
1798
+
1799
+NEWS
1800
+
1801
+commit 30f7d99
1802
+Author: legatvs <legatvs.git@gmail.com>
1803
+Date: 2010-11-02
1804
+
1805
+ NEWS: fix a typo
1806
+
1807
+NEWS
1808
+
1809
+commit 1d19509
1810
+Author: legatvs <legatvs.git@gmail.com>
1811
+Date: 2010-11-02
1812
+
1813
+ bin/clive: rewrite for --quvi, --get-with
1814
+
1815
+bin/clive
1816
+
1817
+commit 409eea0
1818
+Author: legatvs <legatvs.git@gmail.com>
1819
+Date: 2010-11-02
1820
+
1821
+ README: update for 2.3 beta 2
1822
+
1823
+README
1824
+
1825
+commit ca4705a
1826
+Author: legatvs <legatvs.git@gmail.com>
1827
+Date: 2010-11-02
1828
+
1829
+ Makefile.PL: update prereqs
1830
+
1831
+Makefile.PL
1832
+
1833
+commit 81182a3
1834
+Author: legatvs <legatvs.git@gmail.com>
1835
+Date: 2010-11-02
1836
+
1837
+ MANIFEST: add examples/cliverc
1838
+
1839
+MANIFEST
1840
+
1841
+commit 806b160
1842
+Author: legatvs <legatvs.git@gmail.com>
1843
+Date: 2010-11-02
1844
+
1845
+ cliverc: remove line
1846
+
1847
+examples/cliverc
1848
+
1849
+commit 55efafc
1850
+Author: legatvs <legatvs.git@gmail.com>
1851
+Date: 2010-11-02
1852
+
1853
+ ChangeLog: update 2.3 beta 2
1854
+
1855
+ChangeLog
1856
+
1857
+commit c183507
1858
+Author: legatvs <legatvs.git@gmail.com>
1859
+Date: 2010-11-02
1860
+
1861
+ NEWS: rewrite 2.3
1862
+
1863
+NEWS
1864
+
1865
+commit 518800a
1866
+Author: legatvs <legatvs.git@gmail.com>
1867
+Date: 2010-11-02
1868
+
1869
+ add gz to MANIFEST.SKIP
1870
+
1871
+MANIFEST.SKIP
1872
+examples/cliverc
1873
+
1874
+commit c410432
1875
+Author: legatvs <legatvs.git@gmail.com>
1876
+Date: 2010-10-31
1877
+
1878
+ cleanup README
1879
+
1880
+README
1881
+
1882
+commit 988c267
1883
+Author: legatvs <legatvs.git@gmail.com>
1884
+Date: 2010-10-28
1885
+
1886
+ add version->declare to ChangeLog
1887
+
1888
+ChangeLog
1889
+
1890
+commit d1d26ca
1891
+Author: legatvs <legatvs.git@gmail.com>
1892
+Date: 2010-10-28
1893
+
1894
+ prepend word "version"
1895
+
1896
+bin/clive
1897
+
1898
+commit 53df86e
1899
+Author: legatvs <legatvs.git@gmail.com>
1900
+Date: 2010-10-28
1901
+
1902
+ Makefile.PL: require version module 0.77
1903
+
1904
+Makefile.PL
1905
+
1906
+commit c96109d
1907
+Author: legatvs <legatvs.git@gmail.com>
1908
+Date: 2010-10-28
1909
+
1910
+ use version->declare instead of version::qv
1911
+
1912
+bin/clive
1913
+
1914
+commit a51c994
1915
+Author: legatvs <legatvs.git@gmail.com>
1916
+Date: 2010-10-27
1917
+
1918
+ bump version
1919
+
1920
+bin/clive
1921
+
1922
+commit b1a2da1
1923
+Author: legatvs <legatvs.git@gmail.com>
1924
+Date: 2010-10-27
1925
+
1926
+ tag with release date
1927
+
1928
+ChangeLog
1929
+
1930
+commit c2bcde7
1931
+Author: legatvs <legatvs.git@gmail.com>
1932
+Date: 2010-10-27
1933
+
1934
+ add esoteric comments.
1935
+
1936
+ChangeLog
1937
+NEWS
1938
+
1939
+commit 3951a23
1940
+Author: legatvs <legatvs.git@gmail.com>
1941
+Date: 2010-10-27
1942
+
1943
+ force version module 0.77
1944
+
1945
+bin/clive
1946
+
1947
+commit b81bb3c
1948
+Author: legatvs <legatvs.git@gmail.com>
1949
+Date: 2010-10-25
1950
+
1951
+ add missing progressbar issues to ChangeLog
1952
+
1953
+ChangeLog
1954
+
1955
+commit f1f50d2
1956
+Author: legatvs <legatvs.git@gmail.com>
1957
+Date: 2010-10-25
1958
+
1959
+ remove -r, realign --help output
1960
+
1961
+bin/clive
1962
+
1963
+commit 8aa6189
1964
+Author: legatvs <legatvs.git@gmail.com>
1965
+Date: 2010-10-24
1966
+
1967
+ NEWS, 2.3, move new-options
1968
+
1969
+NEWS
1970
+
1971
+commit 289a2b1
1972
+Author: legatvs <legatvs.git@gmail.com>
1973
+Date: 2010-10-24
1974
+
1975
+ progressbar, change size precision
1976
+
1977
+bin/clive
1978
+
1979
+commit 353bfb7
1980
+Author: legatvs <legatvs.git@gmail.com>
1981
+Date: 2010-10-24
1982
+
1983
+ fix LICENSE in Makefile.PL
1984
+
1985
+Makefile.PL
1986
+
1987
+commit 8d7f815
1988
+Author: legatvs <legatvs.git@gmail.com>
1989
+Date: 2010-10-23
1990
+
1991
+ tidy ChangeLog
1992
+
1993
+ChangeLog
1994
+
1995
+commit 22e65ef
1996
+Author: legatvs <legatvs.git@gmail.com>
1997
+Date: 2010-10-23
1998
+
1999
+ news, all in one line
2000
+
2001
+NEWS
2002
+
2003
+commit b04731d
2004
+Author: legatvs <legatvs.git@gmail.com>
2005
+Date: 2010-10-23
2006
+
2007
+ add alpha to version
2008
+
2009
+bin/clive
2010
+
2011
+commit a948191
2012
+Author: legatvs <legatvs.git@gmail.com>
2013
+Date: 2010-10-23
2014
+
2015
+ change example URLs
2016
+
2017
+bin/clive
2018
+
2019
+commit 3b1a9f3
2020
+Author: legatvs <legatvs.git@gmail.com>
2021
+Date: 2010-10-23
2022
+
2023
+ fix unicode in progressbar
2024
+
2025
+bin/clive
2026
+
2027
+commit 5d47e1c
2028
+Author: legatvs <legatvs.git@gmail.com>
2029
+Date: 2010-10-23
2030
+
2031
+ rewrite set default term width differently
2032
+
2033
+bin/clive
2034
+
2035
+commit 6b9e331
2036
+Author: legatvs <legatvs.git@gmail.com>
2037
+Date: 2010-10-22
2038
+
2039
+ reuse sub_len
2040
+
2041
+bin/clive
2042
+
2043
+commit 1340950
2044
+Author: legatvs <legatvs.git@gmail.com>
2045
+Date: 2010-10-21
2046
+
2047
+ add clive-Pod.t
2048
+
2049
+MANIFEST
2050
+t/clive-Pod.t
2051
+
2052
+commit c3079c5
2053
+Author: legatvs <legatvs.git@gmail.com>
2054
+Date: 2010-10-21
2055
+
2056
+ rewrite Makefile.PL
2057
+
2058
+Makefile.PL
2059
+
2060
+commit 8518e27
2061
+Author: legatvs <legatvs.git@gmail.com>
2062
+Date: 2010-10-21
2063
+
2064
+ add 2.3b1 to ChangeLog
2065
+
2066
+ChangeLog
2067
+
2068
+commit b0c3db0
2069
+Author: legatvs <legatvs.git@gmail.com>
2070
+Date: 2010-10-21
2071
+
2072
+ update MANIFEST
2073
+
2074
+MANIFEST
2075
+
2076
+commit 9473620
2077
+Author: legatvs <legatvs.git@gmail.com>
2078
+Date: 2010-10-21
2079
+
2080
+ rewrite README
2081
+
2082
+README
2083
+
2084
+commit 980ec6f
2085
+Author: legatvs <legatvs.git@gmail.com>
2086
+Date: 2010-10-21
2087
+
2088
+ add 2.3 to NEWS
2089
+
2090
+NEWS
2091
+
2092
+commit 04b2af1
2093
+Author: legatvs <legatvs.git@gmail.com>
2094
+Date: 2010-10-21
2095
+
2096
+ rewrite clive script
2097
+
2098
+bin/clive
2099
+
2100
+commit baf414a
2101
+Author: legatvs <legatvs.git@gmail.com>
2102
+Date: 2010-10-21
2103
+
2104
+ remove t tlinks lib examples dirs
2105
+
2106
+examples/config
2107
+lib/clive/App.pm
2108
+lib/clive/Cache.pm
2109
+lib/clive/Compat.pm
2110
+lib/clive/Config.pm
2111
+lib/clive/Curl.pm
2112
+lib/clive/Error.pm
2113
+lib/clive/Exec.pm
2114
+lib/clive/Host/Break.pm
2115
+lib/clive/Host/Buzzhumor.pm
2116
+lib/clive/Host/Cctv.pm
2117
+lib/clive/Host/Clipfish.pm
2118
+lib/clive/Host/Dailymotion.pm
2119
+lib/clive/Host/Ehrensenf.pm
2120
+lib/clive/Host/Evisor.pm
2121
+lib/clive/Host/Funnyhub.pm
2122
+lib/clive/Host/Golem.pm
2123
+lib/clive/Host/Google.pm
2124
+lib/clive/Host/Liveleak.pm
2125
+lib/clive/Host/Myubo.pm
2126
+lib/clive/Host/Sevenload.pm
2127
+lib/clive/Host/Spiegel.pm
2128
+lib/clive/Host/Vimeo.pm
2129
+lib/clive/Host/Youtube.pm
2130
+lib/clive/HostFactory.pm
2131
+lib/clive/Log.pm
2132
+lib/clive/Progress/Bar.pm
2133
+lib/clive/Util.pm
2134
+lib/clive/Video.pm
2135
+t/00compiles.t
2136
+t/01pod.t
2137
+t/02youtube.t
2138
+t/03break.t
2139
+t/04liveleak.t
2140
+t/05dailymotion.t
2141
+t/06golem.t
2142
+t/07cctv.t
2143
+t/08evisor.t
2144
+t/09google.t
2145
+t/10sevenload.t
2146
+t/12vimeo.t
2147
+t/13error.t
2148
+t/14spiegel.t
2149
+t/15ehrensenf.t
2150
+t/16clipfish.t
2151
+t/17funnyhub.t
2152
+t/18myubo.t
2153
+t/19buzzhumor.t
2154
+t/lib/Test/clive.pm
2155
+tlinks/break.url
2156
+tlinks/buzzhumor.url
2157
+tlinks/cctv.url
2158
+tlinks/clipfish.url
2159
+tlinks/dmotion.url
2160
+tlinks/ehrensenf.url
2161
+tlinks/evisor.url
2162
+tlinks/funnyhub.url
2163
+tlinks/golem.url
2164
+tlinks/gvideo.url
2165
+tlinks/lastfm.url
2166
+tlinks/liveleak.url
2167
+tlinks/myubo.url
2168
+tlinks/sload.url
2169
+tlinks/spiegel.url
2170
+tlinks/vimeo.url
2171
+tlinks/ytube-nocookie.url
2172
+tlinks/ytube-utf8.url
2173
+tlinks/ytube.url
2174
+
2175
+commit 485829f
2176
+Author: legatvs <legatvs.git@gmail.com>
2177
+Date: 2010-09-28
2178
+
2179
+ bump version.
2180
2181
- lib/clive/Config.pm | 2 +-
2182
- 1 files changed, 1 insertions(+), 1 deletions(-)
2183
+lib/clive/Config.pm
2184
clive-2.3.3.tar.gz/INSTALL
Added
43
1
2
+
3
+
4
+Prerequisites
5
+=============
6
+
7
+* Perl 5.8.9+ <http://perl.org/>
8
+* quvi 0.2.16.1+ <http://quvi.sourceforge.net/>
9
+* Getopt::ArgvFile <http://search.cpan.org/perldoc?Getopt::ArgvFile>
10
+* JSON::XS <http://search.cpan.org/perldoc?JSON::XS>
11
+* curl <http://curl.haxx.se/>
12
+
13
+
14
+Installation from source
15
+========================
16
+
17
+Uninstall earlier versions of clive if you have any installed.
18
+
19
+For the impatient
20
+-----------------
21
+
22
+Run bin/clive without installing. This assumes the required Perl modules
23
+and system commands can be found by the script.
24
+
25
+Typical installation
26
+--------------------
27
+
28
+To install:
29
+
30
+ perl Makefile.PL
31
+ make
32
+ make install
33
+
34
+ * Note that you can specify install prefix with INSTALL_BASE
35
+ e.g. perl Makefile.PL INSTALL_BASE=/usr/local
36
+
37
+Recommended reading:
38
+ * <http://search.cpan.org/perldoc?ExtUtils::MakeMaker>
39
+ * <http://perldoc.perl.org/ExtUtils/MakeMaker/FAQ.html>
40
+
41
+
42
+vim: set ts=2 sw=2 tw=72 expandtab:
43
clive-2.2.22.tar.bz2/MANIFEST -> clive-2.3.3.tar.gz/MANIFEST
Changed
47
1
2
bin/clive
3
-NEWS
4
ChangeLog
5
-ChangeLog.pre-gitlog
6
COPYING
7
-examples/config
8
-man1/clive.1.pod
9
-lib/clive/App.pm
10
-lib/clive/Cache.pm
11
-lib/clive/Compat.pm
12
-lib/clive/Config.pm
13
-lib/clive/Curl.pm
14
-lib/clive/Error.pm
15
-lib/clive/Exec.pm
16
-lib/clive/Host/Break.pm
17
-lib/clive/Host/Clipfish.pm
18
-lib/clive/Host/Dailymotion.pm
19
-lib/clive/Host/Gaskrank.pm
20
-lib/clive/Host/Funnyhub.pm
21
-lib/clive/Host/Golem.pm
22
-lib/clive/Host/Google.pm
23
-lib/clive/Host/Liveleak.pm
24
-lib/clive/Host/Sevenload.pm
25
-lib/clive/Host/Spiegel.pm
26
-lib/clive/Host/Vimeo.pm
27
-lib/clive/Host/Youtube.pm
28
-lib/clive/Host/Buzzhumor.pm
29
-lib/clive/HostFactory.pm
30
-lib/clive/Log.pm
31
-lib/clive/Progress/Bar.pm
32
-lib/clive/Util.pm
33
-lib/clive/Video.pm
34
+examples/cliverc
35
Makefile.PL
36
+doc/man1/clive.1.pod
37
MANIFEST This list of files
38
+NEWS
39
+INSTALL
40
README
41
-t/eval-compile.t
42
-t/eval-pod.t
43
-t/eval-exitstatus.t
44
+README.packagers
45
+t/clive-Pod.t
46
META.yml Module meta-data (added by MakeMaker)
47
clive-2.2.22.tar.bz2/META.yml -> clive-2.3.3.tar.gz/META.yml
Changed
37
1
2
--- #YAML:1.0
3
name: clive
4
-version: 2.2.22
5
-abstract: ~
6
-author:
7
+version: 2.3.3
8
+abstract: (c)ommand (li)ne (v)ideo (e)xtraction tool
9
+author:
10
+ - Toni Gundogdu <legatvs@cpan.org>
11
license: gpl
12
distribution_type: module
13
configure_requires:
14
15
build_requires:
16
ExtUtils::MakeMaker: 0
17
requires:
18
- Class::Singleton: 1.4
19
- Config::Tiny: 2.12
20
- Digest::SHA: 5.45
21
Getopt::ArgvFile: 1.11
22
- HTML::TokeParser: 2.37
23
- URI::Escape: 3.29
24
- version: 0.77
25
- WWW::Curl: 4.05
26
+ JSON::XS: 2.3
27
+ perl: 5.008009
28
no_index:
29
directory:
30
- t
31
- inc
32
-generated_by: ExtUtils::MakeMaker version 6.56
33
+generated_by: ExtUtils::MakeMaker version 6.57_05
34
meta-spec:
35
url: http://module-build.sourceforge.net/META-spec-v1.4.html
36
version: 1.4
37
clive-2.2.22.tar.bz2/Makefile.PL -> clive-2.3.3.tar.gz/Makefile.PL
Changed
62
1
2
use ExtUtils::MakeMaker;
3
4
WriteMakefile(
5
- 'NAME' => 'clive',
6
- ( $ >= 5.8 )
7
- ? ( AUTHOR => 'Toni Gundogdu <legatvs at sign gmail com>',
8
- 'ABSTRACT' => 'command line video downloading tool'
9
- )
10
- : (),
11
- 'VERSION_FROM' => 'lib/clive/Config.pm',
12
- 'EXE_FILES' => 'bin/clive',
13
- 'PREREQ_PM' => {
14
- 'Getopt::ArgvFile' => 1.11,
15
- 'Class::Singleton' => 1.4,
16
- 'HTML::TokeParser' => 2.37,
17
- 'URI::Escape' => 3.29,
18
- 'Digest::SHA' => 5.45,
19
- 'WWW::Curl' => 4.05,
20
- 'Config::Tiny' => 2.12,
21
- 'version' => 0.77
22
- },
23
- 'LICENSE' => 'gpl',
24
- 'MAN1PODS' => {
25
- 'man1/clive.1.pod' => '${INST_MAN1DIR}/clive.$(MAN1EXT)' },
26
- dist => {
27
- PREOP =>
28
-'@if test -f .git/HEAD; then \
29
- git log --stat --after="Tue Nov 30 14:02:38 2010" >ChangeLog; \
30
+ NAME => 'clive',
31
+ DISTNAME => 'clive',
32
+ VERSION_FROM => 'bin/clive',
33
+ PREREQ_PM => {
34
+'Getopt::ArgvFile' => 1.11,
35
+'JSON::XS' => 2.30,
36
+ },
37
+ BUILD_REQUIRES => {
38
+ 'ExtUtils::MakeMaker' => 0,
39
+ },
40
+ CONFIGURE_REQUIRES => {
41
+ 'ExtUtils::MakeMaker' => 0,
42
+ },
43
+ MIN_PERL_VERSION => 5.008009,
44
+ ($ >= 5.005 ?
45
+ (ABSTRACT_FROM => 'doc/man1/clive.1.pod',
46
+ AUTHOR => 'Toni Gundogdu <legatvs@cpan.org>') : ()),
47
+ 'LICENSE' => 'gpl',
48
+ 'EXE_FILES' => 'bin/clive',
49
+ 'MAN1PODS' =>
50
+ {'doc/man1/clive.1.pod' => '$(INST_MAN1DIR)/clive.$(MAN1EXT)'},
51
+ dist => {
52
+ PREOP => '@if test -f .git/HEAD; then \
53
+ git log --stat --name-only --date=short --abbrev-commit \
54
+ --after="Tue Sep 28 02:13:39 2010" > ChangeLog; \
55
fi',
56
- POSTOP =>
57
-'@if test -f .git/HEAD; then \
58
+ POSTOP => '@if test -f .git/HEAD; then \
59
git checkout ChangeLog; \
60
fi',
61
},
62
clive-2.2.22.tar.bz2/NEWS -> clive-2.3.3.tar.gz/NEWS
Changed
166
1
2
+v2.3.3 (2012-03-16) / Toni Gundogdu
3
4
-2.2.22 Sun Jan 16 2011 Toni Gundogdu
5
+Toni Gundogdu:
6
+ - Do not prepend "http" URL if it is not found 13c5d89
7
+ - examples/cliverc: Use new category option 9b32fd2
8
+ - Fix a typo in manual 249c3d9
9
+ - Revise --help output cf1f0dd
10
+ - Use -vq with quvi when supported (#15) 02b3f64
11
+
12
+
13
+2.3.2 Sat Oct 22 2011 Toni Gundogdu
14
Changes:
15
- - Accept youtu.be URLs (#8)
16
+ - Revise README, README.packagers, INSTALL, manual, Makefile.PL
17
+ - Add --user-agent to args used with autodetected curl command
18
+ - Revise examples/cliverc, add --user-agent to curl example
19
+ - Lower quvi prerequisite to 0.2.16.1
20
21
22
-2.2.21 Fri Jan 07 2011 Toni Gundogdu
23
-Bugfixes:
24
- - Dailymotion.pm: Access blocked by "family filter" (#4)
25
+2.3.1.1 Sun Jun 19 2011 Toni Gundogdu
26
27
+Fixes:
28
+ - Missing details in --help output
29
30
-2.2.20 Mon Dec 27 2010 Toni Gundogdu
31
+
32
+2.3.1 Sat Jun 18 2011 Toni Gundogdu
33
Changes:
34
- - Accept non-HTTP (input) URLs #3
35
-Bugfixes:
36
- - Vimeo.pm: Fix video ID parsing #2
37
-
38
-
39
-2.2.19 Sat Dec 11 2010 Toni Gundogdu
40
-Changes:
41
- - Set <http://clive.sourceforge.net> as new WWW home
42
- - Add man1/clive.1.pod, manify from this from now on
43
- - Youtube: Extend format aliases to match quvi IDs
44
- - Remove myubo support: dead site
45
- - Backup ChangeLog as ChangeLog.pre-gitlog
46
- - Generate ChangeLog from gitlog
47
- - Rename Evisor.pm to Gaskrank.pm
48
- - Rename tests
49
- - Remove dangling (and broken) ehrensenf, cctv support
50
- - Exclude network tests, can still be found in the repo
51
- - gzip release tarball from now on
52
+ - Add --query-formats, deprecate "--format list"
53
+ - Detect quvi and/or download command from $PATH
54
+ - In the absence of --quvi and/or --get-with
55
+ - Bump quvi prerequisite to 0.2.17
56
+ - Revise manual
57
+
58
+
59
+2.3.0.3 Mon May 02 2011 Toni Gundogdu
60
+Changes:
61
+ - Add support to read input from files
62
+
63
+
64
+2.3.0.2 Tue Mar 15 2011 Toni Gundogdu
65
+Changes:
66
+ - Make --version less verbose
67
+ - Manual: Add SYNOPSIS
68
+ - examples/cliverc, Manual: Add --category-http (quvi 0.2.12+)
69
Bugfixes:
70
- - Liveleak.pm: token/ID parsing
71
- - Youtube.pm: Unknown error (http/404) #1
72
+ - examples/cliverc: Typo in --get-with
73
74
75
-Version 2.2.15
76
+2.3.0.1 Sat Feb 12 2011 Toni Gundogdu
77
+Changes:
78
+ - Replace outdated webm_480p with mp4_360p in examples
79
+ - README: Cleanup, add notes for packagers
80
+ - Add examples/git/hooks/pre-commit
81
+ - Manual: Cleanup, add HISTORY
82
+ - Add vim modeline
83
+Other:
84
+ - Create "2.2" branch from "master"
85
+ - Merge "2.3_gws" into "master" branch
86
+ - http://sourceforge.net/apps/trac/clive/wiki/Changes-2.3
87
+
88
+
89
+2.3.0_4 (beta 4, 2.3_gws) Sat Dec 18 2010 Toni Gundogdu
90
+Changes:
91
+ - Generate ChangeLog from git log
92
+
93
+
94
+2.3.0_3 (beta 3, 2.3_gws) Wed Dec 01 2010 legatvs
95
+Changes:
96
+ - Add support for /etc/xdg/clive/clive.conf
97
+ - Add support /etc/xdg/clive.conf
98
+ - Add --format list pattern
99
+ - Add --format list
100
+ - Add --format help
101
+
102
103
-Changes to --format
104
+2.3.0_2 (beta 2, 2.3_gws) Thu Nov 04 2010 legatvs
105
+Changes:
106
+ - Use quvi(1) for parsing video details, --quvi arg
107
+ - Use external command to download, --get-with arg
108
+ - Use version->declare instead of version::qv
109
+ - Add JSON::XS dependency
110
+ - Add examples/cliverc
111
+ - Additional config file search paths (e.g. system-wide)
112
+ - Remove WWW::Quvi dependency
113
+ - Remove WWW::Curl dependency
114
+ - Remove Term::ReadKey dependency
115
+ - Remove --continue, --overwrite, --proxy
116
+ - Remove --no-proxy, --agent, --throttle
117
+
118
+
119
+2.3.0_1 (beta 1) Wed Oct 27 2010
120
+
121
+Changes:
122
+ - Use libquvi (WWW::Quvi) to parse video details
123
+ - Remove options / features
124
+ - Rename options
125
+ - Prerequisites
126
+Bugfixes:
127
+ - Progressbar unicode issues
128
129
- * "flv" is now called "default"
130
131
-Youtube:
132
+2.3.0 "Glorified Wrapper Script" (2.3_gws)
133
134
- * Add HD 1080p support
135
+* Single-script vs. multiple-clive-modules
136
+ - clive is no longer dispersed all over the file system in Perl packages
137
138
- * Add support for the quvi supported Youtube IDs (e.g. sd_270p).
139
- The old (and vague) IDs (e.g. mp4 or hd) are still supported
140
- but should be considered _deprecated_.
141
+* Use quvi(1) to parse the video details
142
+ - 2.3 was going to use WWW::Quvi and libquvi (beta 1)
143
+ - Had a piffany (beta 2)
144
145
+* Leave downloading for an external 3rd party command to do
146
+ - e.g. curl, wget or whatever
147
148
-Version 2.2.9
149
+* Complete command line interface clean up
150
+ - Esoteric, or otherwise now completely obsoleted, features were discarded
151
152
-cctv support was fixed. These videos appear to come in (at least) two
153
-flavors now: multi-segment and single-segment. The issue has been
154
-discussed here:
155
- http://code.google.com/p/clive/issues/detail?id=45
156
+See also:
157
+ <http://sourceforge.net/apps/trac/clive/wiki/DevelopmentStatus>
158
159
-It was decided, mainly due to overall laziness, that multi-segment
160
-video links are to be dumped to the terminal without any further
161
-fiddling with them. The reasons have also been covered in the above
162
-discussion.
163
+For earlier version history, please see:
164
+ http://repo.or.cz/w/clive.git/blob/maint-2.2:/NEWS
165
+ http://repo.or.cz/w/clive.git/blob/maint-2.2:/ChangeLog.pre-gitlog
166
clive-2.2.22.tar.bz2/README -> clive-2.3.3.tar.gz/README
Changed
59
1
2
-README for clive
3
-----------------
4
5
-clive is a command line utility for extracting videos from Youtube and other
6
-video-sharing websites. It was written to bypass the Adobe Flash requirement
7
-to view the hosted videos.
8
-
9
-WWW: <http://clive.sourceforge.net/>
10
-
11
-
12
-Prerequisites
13
--------------
14
-
15
-See Makefile.PL file.
16
-
17
-
18
-Optional modules
19
-----------------
20
-
21
-* BerkeleyDB
22
- - If not installed, clive cache features will be disabled
23
-
24
-* Term::ReadKey
25
- - If not installed, clive will not resize progressbar to
26
- match terminal width
27
-
28
-
29
-Installation
30
-------------
31
-
32
-Be sure to remove any previous versions of clive first.
33
-
34
-INSTALL_BASE can be passed into Makefile.PL to change where clive will
35
-be installed. For example:
36
-
37
- perl Makefile.PL INSTALL_BASE=/usr/local
38
-
39
- perl Makefile.PL
40
- make
41
- (make test)
42
- make install
43
-
44
-See also (for Makefile.PL options etc.):
45
- <http://search.cpan.org/perldoc?ExtUtils::MakeMaker>
46
-
47
-
48
-Notes
49
------
50
-
51
-If you want to try clive without installing it first:
52
- cd lib; ../bin/clive URL
53
54
+clive is a command line media extraction tool for YouTube and similar
55
+websites that require flash.
56
57
+Home : <http://clive.sourceforge.net/>
58
+gitweb: <http://repo.or.cz/w/clive.git>
59
clive-2.3.3.tar.gz/README.packagers
Added
16
1
2
+
3
+PACKAGERS
4
+=========
5
+
6
+clive will attempt to detect the quvi(1) and the curl(1) commands
7
+from the $PATH if either "--quvi" or "--get-with" is missing.
8
+
9
+Please consider installing a preconfigured system wide configuration
10
+file with clive. This file should contain the preconfigured "--quvi"
11
+and "--get-with" (see "$top_srcdir/examples/cliverc"). See also the
12
+manual page ($top_srcdir/doc/man1/clive.1.pod) for "FILES" which lists
13
+the typical system wide config file paths.
14
+
15
+Last but not least, thanks for your support.
16
clive-2.2.22.tar.bz2/bin/clive -> clive-2.3.3.tar.gz/bin/clive
Changed
621
1
2
#!/usr/bin/perl
3
# -*- coding: ascii -*-
4
-###########################################################################
5
-# clive, command line video extraction utility.
6
-# Copyright 2007, 2008, 2009 Toni Gundogdu.
7
#
8
-# This file is part of clive.
9
+# clive
10
+# Copyright (C) 2010-2011 Toni Gundogdu <legatvs@gmail.com>
11
#
12
-# clive is free software: you can redistribute it and/or modify it under
13
-# the terms of the GNU General Public License as published by the Free
14
-# Software Foundation, either version 3 of the License, or (at your option)
15
-# any later version.
16
+# This program is free software: you can redistribute it and/or modify
17
+# it under the terms of the GNU General Public License as published by
18
+# the Free Software Foundation, either version 3 of the License, or
19
+# (at your option) any later version.
20
#
21
-# clive is distributed in the hope that it will be useful, but WITHOUT ANY
22
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
23
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
24
-# details.
25
+# This program is distributed in the hope that it will be useful,
26
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
27
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28
+# GNU General Public License for more details.
29
#
30
-# You should have received a copy of the GNU General Public License along
31
-# with this program. If not, see <http://www.gnu.org/licenses/>.
32
-###########################################################################
33
+# You should have received a copy of the GNU General Public License
34
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
35
+#
36
+
37
use warnings;
38
use strict;
39
40
-binmode( STDOUT, ":utf8" );
41
-binmode( STDERR, ":utf8" );
42
+use version 0.77 (); our $VERSION = version->declare("2.3.3");
43
+
44
+binmode STDOUT, ":utf8";
45
+binmode STDERR, ":utf8";
46
+
47
+use Getopt::ArgvFile qw(argvFile);
48
+
49
+use Getopt::Long qw(:config bundling);
50
+use Encode qw(decode_utf8);
51
+use Carp qw(croak);
52
+
53
+my $depr_msg = "Warning:
54
+ '--format list' is deprecated and will be removed in the later
55
+ versions. Use --query-formats instead.";
56
+
57
+my $quvi_quiet_switch = '-q';
58
+my %config;
59
+my @queue;
60
+my $media;
61
+
62
+exit main();
63
+
64
+sub main
65
+{
66
+ init();
67
+ return process_queue();
68
+}
69
+
70
+sub init
71
+{
72
+ if (grep {$_ eq "--config-file"} @ARGV)
73
+ {
74
+ argvFile(fileOption => '--config-file');
75
+ }
76
+ else
77
+ {
78
+ @ARGV = (
79
+ @ARGV,
80
+ (
81
+ "@/usr/local/share/clive/cliverc",
82
+ "@/usr/share/clive/cliverc",
83
+ "@/etc/clive/config",
84
+ "@/etc/xdg/clive/clive.conf",
85
+ "@/etc/xdg/clive.conf"
86
+ )
87
+ );
88
+
89
+ if ($ENV{HOME})
90
+ {
91
+ @ARGV = (
92
+ @ARGV,
93
+ (
94
+ '@' . "$ENV{HOME}/.cliverc",
95
+ '@' . "$ENV{HOME}/.clive/config",
96
+ '@' . "$ENV{HOME}/.config/clive/config"
97
+ )
98
+ );
99
+ }
100
+
101
+ push @ARGV, '@' . "$ENV{CLIVE_CONFIG}" if $ENV{CLIVE_CONFIG};
102
+
103
+ argvFile();
104
+ }
105
+
106
+ GetOptions(
107
+ \%config,
108
+ 'help' => \&print_help,
109
+ 'version' => sub {print "clive version $VERSION\n"; exit 0},
110
+ 'license' => \&print_license,
111
+ 'quiet|q',
112
+ 'query_formats|query-formats|F',
113
+ 'format|f=s',
114
+ 'output_file|output-file|O=s',
115
+ 'no_download|no-download|n',
116
+
117
+ # Configuration:
118
+ 'quvi=s',
119
+ 'get_with|get-with=s',
120
+ 'filename_format|filename-format=s',
121
+ 'regexp=s',
122
+ 'exec=s',
123
+ ) or exit 1;
124
+
125
+ $config{format} ||= 'default';
126
+ $config{filename_format} ||= '%t.%s';
127
+ $config{regexp} ||= '/(\\w|\\s)/g';
128
+
129
+ # Check --quvi.
130
+ unless ($config{quvi})
131
+ {
132
+ print "Detect quvi from \$PATH\n" unless $config{quiet};
133
+
134
+ my $s = detect_cmd('quvi');
135
+ if ($s)
136
+ {
137
+ $config{quvi} = "quvi %u";
138
+ }
139
+ else
140
+ {
141
+ croak "error: specify path to quvi(1) command with --quvi\n";
142
+ }
143
+ }
144
+ check_quvi();
145
+ check_format();
146
+
147
+ # Check --get-with.
148
+ unless ($config{get_with})
149
+ {
150
+
151
+ print "Detect a download command from \$PATH\n"
152
+ unless $config{quiet};
153
+
154
+ my %h = (
155
+ curl => "-L -C - -o %f %u --user-agent Mozilla/5.0",
156
+
157
+ # Add new ones below.
158
+ );
159
+
160
+ for my $k (keys %h)
161
+ {
162
+ my $s = detect_cmd($k);
163
+ if ($s)
164
+ {
165
+ $config{get_with} = "$k $h{$k}";
166
+ last;
167
+ }
168
+ }
169
+
170
+ croak "error: specify path to a download command with --get-with\n"
171
+ unless $config{get_with};
172
+ }
173
+
174
+ # Check --regexp.
175
+
176
+ apply_regexp();
177
+
178
+ # Process input.
179
+
180
+ if (scalar @ARGV == 0)
181
+ {
182
+ append_queue($_) while <STDIN>;
183
+ }
184
+ else
185
+ {
186
+ foreach (@ARGV)
187
+ {
188
+ if (!is_url($_))
189
+ {
190
+ open my $fh, "<", $_
191
+ or print STDERR "$_: $!\n" and next;
192
+ append_queue($_) while <$fh>;
193
+ close $fh;
194
+ }
195
+ else
196
+ {
197
+ append_queue($_);
198
+ }
199
+ }
200
+ }
201
+
202
+ @queue = uniq2(@queue); # Remove duplicate URLs.
203
+
204
+ print STDERR "error: no input urls\n" and exit 0x3 # QUVI_INVARG
205
+ unless scalar @queue;
206
+
207
+ select STDOUT;
208
+ $| = 1; # Go unbuffered.
209
+}
210
+
211
+sub detect_cmd
212
+{
213
+ my ($cmd) = @_;
214
+
215
+ print " Check for $cmd ..." unless $config{quiet};
216
+ my $o = join '', qx|$cmd --version 2>/dev/null|;
217
+
218
+ if ($? >> 8 == 0)
219
+ {
220
+
221
+ # TODO: Use more a elegant regexp combining all three.
222
+ my @a =
223
+ (qr|(\d+.\d+.\d+-\w+-\w+)|, qr|(\d+.\d+.\d+)|, qr|(\d+.\d+)|);
224
+ foreach (@a)
225
+ {
226
+ if ($o =~ /$_/)
227
+ {
228
+ print "$1\n" unless $config{quiet};
229
+ return $1;
230
+ }
231
+ }
232
+ }
233
+ else
234
+ {
235
+ print "no\n" unless $config{quiet};
236
+ }
237
+ undef;
238
+}
239
+
240
+sub is_url
241
+{
242
+ return $_ =~ /^\w+\:\/\//;
243
+}
244
+
245
+sub append_queue
246
+{
247
+ my $ln = trim(shift);
248
+ chomp $ln;
249
+
250
+ return if $ln =~ /^$/;
251
+ return if $ln =~ /^#/;
252
+
253
+ push @queue, $ln;
254
+}
255
+
256
+sub uniq2
257
+{ # http://is.gd/g8jQU
258
+ my %seen = ();
259
+ my @r = ();
260
+ foreach my $a (@_)
261
+ {
262
+ unless ($seen{$a})
263
+ {
264
+ push @r, $a;
265
+ $seen{$a} = 1;
266
+ }
267
+ }
268
+ @r;
269
+}
270
+
271
+sub process_queue
272
+{
273
+ require JSON::XS;
274
+
275
+ my $n = scalar @queue;
276
+ my $i = 0;
277
+ my $r = 0;
278
+ my $fpath;
279
+
280
+ foreach (@queue)
281
+ {
282
+ print_checking(++$i, $n);
283
+
284
+ my $q = $config{quvi};
285
+ $q =~ s/%u/"$_"/;
286
+ $q .= " $quvi_quiet_switch"
287
+ if $q !~ /$quvi_quiet_switch/; # Force quiet.
288
+ $q .= " -f $config{format}";
289
+ $q .= " -F" if $config{query_formats};
290
+
291
+ my $o = join '', qx/$q/;
292
+ $r = $? >> 8;
293
+
294
+ next unless $r == 0;
295
+
296
+ print "done.\n" unless $config{quiet};
297
+ print $o and next if $config{query_formats};
298
+
299
+ $media = JSON::XS::decode_json($o);
300
+ ($r, $fpath) = get_media();
301
+ if ($r == 0)
302
+ {
303
+ $r = invoke_exec($fpath) if $config{exec};
304
+ }
305
+ }
306
+ $r;
307
+}
308
+
309
+sub print_checking
310
+{
311
+ return if $config{quiet};
312
+
313
+ my ($i, $n) = @_;
314
+
315
+ print "($i of $n) " if $n > 1;
316
+ print "Checking ...";
317
+}
318
319
-use clive::App;
320
+sub get_media
321
+{
322
+ require File::Basename;
323
324
-clive::App->main;
325
+ my $fpath = get_filename();
326
+ my $fname = File::Basename::basename($fpath);
327
+
328
+ if ($config{no_download}) {print_media($fname); return 0;}
329
+
330
+ write_media($fpath, $fname);
331
+}
332
+
333
+sub invoke_exec
334
+{
335
+ my $fpath = shift;
336
+
337
+ my $e = $config{exec};
338
+ $e =~ s/%f/"$fpath"/g;
339
+
340
+ qx/$e/;
341
+
342
+ $? >> 8;
343
+}
344
+
345
+sub to_mb {(shift) / (1024 * 1024);}
346
+
347
+sub print_media
348
+{
349
+ printf "%s %.2fM %s\n",
350
+ shift,
351
+ to_mb($media->{link}0->{length_bytes}),
352
+ $media->{link}0->{content_type};
353
+}
354
+
355
+sub write_media
356
+{
357
+ my ($fpath, $fname) = @_;
358
+
359
+ my $g = $config{get_with};
360
+ $g =~ s/%u/"$media->{link}0->{url}"/g;
361
+ $g =~ s/%f/"$fpath"/g;
362
+ $g =~ s/%n/"$fname"/g;
363
+
364
+ qx/$g/;
365
+
366
+ ($? >> 8, $fpath);
367
+}
368
+
369
+sub get_filename
370
+{
371
+ my $fpath;
372
+
373
+ if ($config{output_file}) {$fpath = $config{output_file};}
374
+ else {$fpath = apply_output_path(apply_filename_format());}
375
+
376
+ $fpath;
377
+}
378
+
379
+sub apply_output_path
380
+{
381
+ require Cwd;
382
+
383
+ # Do not touch.
384
+ my $cwd = decode_utf8(Cwd::getcwd);
385
+ my $fname = shift;
386
+
387
+ require File::Spec::Functions;
388
+
389
+ File::Spec::Functions::catfile($cwd, $fname);
390
+}
391
+
392
+sub apply_filename_format
393
+{
394
+ return $config{output_filename}
395
+ if $config{output_filename};
396
+
397
+ my $title = trim(apply_regexp($media->{page_title}));
398
+ my $fname = $config{filename_format};
399
+
400
+ $fname =~ s/%s/$media->{link}0->{file_suffix}/g;
401
+ $fname =~ s/%h/$media->{host}/g if $media->{host}; # quvi 0.2.8+
402
+ $fname =~ s/%i/$media->{id}/g;
403
+ $fname =~ s/%t/$title/g;
404
+
405
+ $fname;
406
+}
407
+
408
+sub trim
409
+{
410
+ my $s = shift;
411
+ $s =~ s{^\s+}//;
412
+ $s =~ s{\s+$}//;
413
+ $s =~ s{\s\s+}/ /g;
414
+ $s;
415
+}
416
+
417
+sub apply_regexp
418
+{
419
+ my ($title, $rq) = (shift, qr|^/(.*)/(.*)$|);
420
+
421
+ if ($config{regexp} =~ /$rq/)
422
+ {
423
+ return unless $title; # Must be a syntax check.
424
+
425
+ $title = decode_utf8($title); # Do not touch.
426
+
427
+ my ($pat, $flags, $g, $i) = ($1, $2);
428
+
429
+ if ($flags)
430
+ {
431
+ $g = ($flags =~ /g/);
432
+ $i = ($flags =~ /i/);
433
+ }
434
+
435
+ $rq = $i ? qr|$pat|i : qr|$pat|;
436
+
437
+ return $g
438
+ ? join '', $title =~ /$rq/g
439
+ : join '', $title =~ /$rq/;
440
+ }
441
+
442
+ croak "error: --regexp: expects "
443
+ . "`/pattern/flags', for example: `/(\\w)/g'\n";
444
+}
445
+
446
+sub detect_quvi_version
447
+{
448
+ my $q = (split /\s+/, $config{quvi})0; # Improve this.
449
+ my $o = qx|$q --version|;
450
+ if ($? >> 8 == 0)
451
+ {
452
+ return ($1, $2, $3) if (split /\n/, $o)0 =~ /(\d+).(\d+).(\d+)/;
453
+ }
454
+ print "warning: unable to detect quvi version\n"
455
+ unless $config{quiet};
456
+ -1;
457
+}
458
+
459
+sub check_quvi
460
+{
461
+ my @v = detect_quvi_version();
462
+ $quvi_quiet_switch = '-vq' if $v0 >= 0 && $v1 >= 4 && $v2 >= 1;
463
+}
464
+
465
+sub check_format
466
+{
467
+ if ($config{format} eq "help")
468
+ {
469
+ printf "Usage:
470
+ --format arg get format arg of media
471
+ --format list print domains with formats
472
+ --format list arg match arg to supported domain names
473
+Examples:
474
+ --format list youtube print youtube formats
475
+ --format fmt34_360p get format fmt34_360p of media
476
+%s\n", $depr_msg;
477
+ exit 0;
478
+ }
479
+
480
+ elsif ($config{format} eq "list")
481
+ {
482
+ my $q = (split /\s+/, $config{quvi})0; # Improve this.
483
+
484
+ my %h;
485
+ foreach (qx/$q --support/)
486
+ {
487
+ my ($k, $v) = split /\s+/, $_;
488
+ $h{$k} = $v;
489
+ }
490
+
491
+ # -f list <pattern>
492
+ if (scalar @ARGV > 0)
493
+ {
494
+
495
+ foreach (sort keys %h)
496
+ {
497
+ print "$_:\n $h{$_}\n" if $_ =~ /$ARGV0/;
498
+ }
499
+ }
500
+
501
+ # -f list
502
+ else
503
+ {
504
+ print "$_:\n $h{$_}\n\n" foreach sort keys %h;
505
+ }
506
+
507
+ printf "%s\n", $depr_msg;
508
+
509
+ exit 0;
510
+ }
511
+}
512
+
513
+sub print_help
514
+{
515
+ require Pod::Usage;
516
+ Pod::Usage::pod2usage(-exitstatus => 0, -verbose => 1);
517
+}
518
+
519
+sub print_license
520
+{
521
+ print "# clive
522
+# Copyright (C) 2010-2011 Toni Gundogdu <legatvs\@gmail.com>
523
+#
524
+# This program is free software: you can redistribute it and/or modify
525
+# it under the terms of the GNU General Public License as published by
526
+# the Free Software Foundation, either version 3 of the License, or
527
+# (at your option) any later version.
528
+#
529
+# This program is distributed in the hope that it will be useful,
530
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
531
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
532
+# GNU General Public License for more details.
533
+#
534
+# You should have received a copy of the GNU General Public License
535
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
536
+";
537
+ exit 0;
538
+}
539
540
__END__
541
542
=head1 SYNOPSIS
543
544
-clive options... URL...
545
-
546
-=head1 OPTIONS
547
-
548
- -h, --help Print help and exit
549
- -v, --version Print version and exit
550
- --hosts Print supported hosts and exit
551
- --upgrade-config Upgrade 2.0/2.1 config to 2.2+ format
552
- -l, --last Recall last input
553
- --last-file=FILE Read/write FILE instead of default path
554
-Output Options:
555
- --emit-csv Emit video details in CSV to stdout
556
- --debug Print cURL debug messages
557
- -q, --quiet Turn off all output
558
- --stderr Redirect all output to stderr
559
- --print-fname Print filename before download starts
560
-HTTP Options:
561
- --agent=STRING Identify as STRING to http server
562
- --connect-timeout=SECS Max time allowed connection to take
563
- --connect-timeout-socks=S Same as above, tries to workaround SOCKS
564
- --proxy=ADDR Use ADDR for http proxy
565
- --no-proxy Disable all use of http proxy
566
- --cookie-jar=FILE Enable cookies, write them to FILE
567
-Cache Options:
568
- --cache-file=FILE Read/write FILE instead of default path
569
- -r, --cache-read Enable reading from cache
570
- -d, --cache-dump Dump cache records to stdout
571
- --cache-dump-format=STRING Print format for dumping cache records
572
- --cache-grep=PATTERN Grep cache records for PATTERN
573
- -i, --cache-ignore-case Ignore case while matching records
574
- -D, --cache-remove-record Remove matched records from cache
575
- --cache-clear Truncate cache records
576
- --no-cache Disable cache all (read and write) use
577
-Download Options:
578
- -f, --format=FORMAT Extract FORMAT of video
579
- -O, --output-file=FILE Write video to file
580
- -c, --continue Continue partially downloaded file
581
- -n, --no-extract Do not extract any videos
582
- --save-dir=DIR Save video files to DIR
583
- --cclass=CLASS Use character CLASS to filter titles
584
- -C, --no-cclass Do not apply character class
585
- --filename-format=STRING Use STRING to format output filename
586
- --exec=CMD Command to run when transfer finishes
587
- -e, --exec-run Invoke command defined with --exec
588
- --stream-exec=CMD Stream command to be invoked
589
- --stream=PERCENT Invoke --stream-exec when transfer reaches %
590
- -s, --stream-pass Pass video link to --stream-exec command
591
- --limit-rate=AMOUNT Limit transfer rate to AMOUNT (KB/s)
592
- --stop-after=SIZE|PERCENT Stop file transfer after SIZE or PERCENT
593
+clive -F -n --format=E<lt>value<gt> --output-file=E<lt>value<gt>
594
+ --filename-format=E<lt>valueE<gt> --config-file=E<lt>value<gt>
595
+ --quvi=E<lt>valueE<gt> --get-with=E<lt>valueE<gt>
596
+ --regexp=E<lt>valueE<gt> --exec=E<lt>valueE<gt>
597
+ --help --version --license --quiet
598
+ E<lt>urlE<gt> | E<lt>fileE<gt>
599
+
600
+=head2 OPTIONS
601
+
602
+ --help Print help and exit
603
+ --version Print version and exit
604
+ --license Print license and exit
605
+ --quiet Turn off all output excl. errors
606
+ -F, --query-formats Query available formats to URL
607
+ -f, --format arg (=default) Download media format
608
+ -O, --output-file arg Write media to arg
609
+ -n, --no-download Do not download media, print details
610
+ --config-file arg File to read clive arguments from
611
+Configuration:
612
+ --quvi arg Path to quvi(1) with additional args
613
+ --get-with arg Path to download command with args
614
+ --filename-format arg (=%t.%s) Downloaded media filename format
615
+ --regexp arg (=/(\w|\s)/g) Regexp to cleanup media title
616
+ --exec arg Invoke arg after each finished download
617
+
618
+=cut
619
+
620
+# vim: set ts=2 sw=2 tw=72 expandtab:
621
clive-2.3.3.tar.gz/doc
Added
2
1
+(directory)
2
clive-2.3.3.tar.gz/doc/man1
Added
2
1
+(directory)
2
clive-2.3.3.tar.gz/doc/man1/clive.1.pod
Added
320
1
2
+=head1 NAME
3
+
4
+clive - (c)ommand (li)ne (v)ideo (e)xtraction tool
5
+
6
+=head1 SYNOPSIS
7
+
8
+clive E<lt>optionsE<gt> E<lt>urlE<gt> | E<lt>fileE<gt> ...
9
+
10
+=head1 DESCRIPTION
11
+
12
+clive is a command line media extraction tool for YouTube and similar
13
+websites that require flash.
14
+
15
+=head2 Background
16
+
17
+clive originates from a simple shell script that was cooked up to work
18
+around the YouTube's flash requirement back in 2006.
19
+
20
+=head2 Getting started
21
+
22
+=head3 Configuring
23
+
24
+=head4 Autodetection
25
+
26
+clive will attempt to autodetect the required commands from the $PATH,
27
+when they have not been defined in either config file or the command
28
+line.
29
+
30
+=head4 Configuration file
31
+
32
+See L</FILES> for an example configuration file. You may want to
33
+consider adding at least the L</--quvi> and L</--get-with> there.
34
+
35
+=head4 See also
36
+
37
+L</TROUBLESHOOTING>, L</KNOWN ISSUES> and L</EXAMPLES>.
38
+
39
+=head1 OPTIONS
40
+
41
+clive expects the URLs to be separated by a newline character when the
42
+they are read from either stdin or files.
43
+
44
+=head2 --help
45
+
46
+Print help and exit.
47
+
48
+=head2 --version
49
+
50
+Print version and exit.
51
+
52
+=head2 --license
53
+
54
+Print license and exit.
55
+
56
+=head2 -q, --quiet
57
+
58
+Turn off all I<clive> output excluding errors. Note that this switch has no
59
+effect on any of the third party commands that clive invokes.
60
+
61
+=head2 -F, --query-formats
62
+
63
+Query available formats to an URL. The returned string will contain
64
+an array of I<format strings>, each separated by the '|' character.
65
+The array is created, by libquvi, from the data returned by the server.
66
+You can use these I<format strings> with C<--format>.
67
+
68
+See also L</EXAMPLES> and C<--format>.
69
+
70
+=head2 -f, --format I<arg> (=default)
71
+
72
+Download format I<arg> of the media. The I<arg> can also be C<default>,
73
+C<best>, C<help> or C<list>. Note, however, that of these, the C<list> and
74
+the C<help> are deprecated and will be removed in the later versions of
75
+clive.
76
+
77
+The I<arg> value is used with all of the URLs fed to clive at runtime. If
78
+the I<arg> is C<best>, libquvi will determine the C<best> format available
79
+to an URL.
80
+
81
+If the I<arg> is C<default> libquvi attempts to return an URL to whatever
82
+was deemed to be the C<default> format to the URL. libquvi will switch
83
+to C<default> format if the I<arg> was unregognized or the requested
84
+I<arg> format was unavailable.
85
+
86
+For the above reasons, the downloaded format may be different from the
87
+requested I<arg> format.
88
+
89
+For details about the YouTube's "fmt" IDs, refer to:
90
+ http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs
91
+
92
+See also L</EXAMPLES>, C<--query-formats>.
93
+
94
+=head2 -O, --output-file I<arg>
95
+
96
+Write media to I<arg>. Overrides C<--filename-format>.
97
+
98
+=head2 -n, --no-download
99
+
100
+Do not download the media, print details only.
101
+
102
+=head2 --config-file I<arg>
103
+
104
+Path to a file to read clive arguments from. See also L</FILES>.
105
+
106
+=head1 OPTIONS - CONFIGURATION
107
+
108
+The C<configuration> options may be read from the config file.
109
+See L</FILES>.
110
+
111
+=head2 --quvi I<arg>
112
+
113
+I<arg> to be invoked to start the C<quvi(1)> command which clive uses to
114
+parse the media details. This is typically a full path to C<quvi(1)> with
115
+any additional options. Overrides any value set by autodetection.
116
+
117
+The following specifiers can be used in the I<arg>:
118
+
119
+ %u .. Media stream URL
120
+
121
+I<All> occurences of the specifier will be replaced. clive will
122
+automatically append C<--quiet> to I<arg>.
123
+
124
+=head2 --get-with I<arg>
125
+
126
+Path to a download command (e.g. C<wget(1)> or C<curl(1)>) with any additional
127
+arguments. clive invokes this command to download the media. Overrides any
128
+value set by autodetection.
129
+
130
+The following specifiers are supported:
131
+
132
+ %n Media filename (after applying --regexp and --filename-format)
133
+ %f Path to downloaded media file (output path and %n)
134
+ %u Media stream URL
135
+
136
+I<All> occurences of the specifier will be replaced.
137
+
138
+=head2 --filename-format I<arg> (="%t.%s")
139
+
140
+Use I<arg> to specify the media output filename format.
141
+The following specifiers are supported:
142
+
143
+ %t Media title (after applying --regexp)
144
+ %h Media host ID
145
+ %s File suffix
146
+ %i Media ID
147
+
148
+I<All> occurences of the specifier will be replaced.
149
+
150
+=head2 --regexp I<arg> (="/(\w|\s)/g")
151
+
152
+Use regular expression I<arg> to clean up the media title before
153
+it is used in the filename. The syntax supports both "i"
154
+(case-insensitive) and "g" (global or "find all").
155
+
156
+=head2 --exec I<arg>
157
+
158
+Invoke I<arg> after media download finishes. The following specifiers
159
+are supported:
160
+
161
+ %f Path to the downloaded media file
162
+
163
+I<All> occurences of the specifier will be replaced.
164
+
165
+=head1 TROUBLESHOOTING
166
+
167
+=head2 error: specify path to quvi(1) command with --quvi
168
+
169
+clive uses C<quvi(1)> to parse the media details. Use the C<--quvi> to specify
170
+the path. See also L</FILES>.
171
+
172
+=head2 error: specify path to a download command with --get-with
173
+
174
+clive uses a 3rd party command to download the media. Use the C<--get-with> to
175
+specify the path to such command. See also L</FILES>.
176
+
177
+=head2 HTTP/1.0 500 Internal Server Error
178
+
179
+Any number of reasons. Some have been tracked back to unacceptable
180
+user-agent string value and mangled HTTP headers (e.g. a green-eyed
181
+HTTP proxy). See also L</KNOWN ISSUES>.
182
+
183
+=head1 KNOWN ISSUES
184
+
185
+=head2 Resuming partially transferred files may fail
186
+
187
+Some websites are known to refuse to work with the HTTP requests to
188
+resume a file transfer.
189
+
190
+=head3 Workaround
191
+
192
+None known. You will have to remove the existing file before you try
193
+again.
194
+
195
+=head2 HTTP user-agent
196
+
197
+Some websites refuse to play nice with renegade user-agent strings.
198
+
199
+=head3 Recommendations
200
+
201
+Make sure both C<quvi(1)> and C<curl(1)> use the same user-agent string.
202
+Note that C<quvi(1)> uses "Mozilla/5.0" by default. See also
203
+L</TROUBLESHOOTING> for C<HTTP/500>.
204
+
205
+=head2 HTTP proxy
206
+
207
+Generally OK, although some proxies may have been configured to
208
+C<cook up> the HTTP headers before they are sent back to the server.
209
+This may sometimes lead to issues with the servers.
210
+
211
+=head3 Recommendations
212
+
213
+If you use an HTTP proxy, make sure you have configured all of the commands
214
+that clive uses (e.g. C<quvi(1)>, C<curl(1)>, etc.) to use the same proxy.
215
+
216
+=head2 Exit status
217
+
218
+If you are planning to use clive for anything more peculiar, consider the
219
+following example:
220
+
221
+ * You feed clive two URLs
222
+ * The 1st one fails, quvi exits with a non-zero value
223
+ * clive proceeds to the 2nd URL, quvi now exits with zero value
224
+ * clive exits with the zero, even if the 1st URL failed
225
+
226
+=head3 Workaround
227
+
228
+Feed one URL at a time.
229
+
230
+=head1 FILES
231
+
232
+=head2 Local user
233
+
234
+ * ~/.config/clive/config
235
+ * ~/.clive/config
236
+ * ~/.cliverc
237
+
238
+=head2 System wide
239
+
240
+ * /usr/local/share/clive/config
241
+ * /etc/xdg/clive/clive.conf
242
+ * /usr/share/clive/config
243
+ * /etc/xdg/clive.conf
244
+ * /etc/clive/config
245
+
246
+=head2 CLIVE_CONFIG
247
+
248
+You can also set CLIVE_CONFIG, e.g.:
249
+
250
+ env CLIVE_CONFIG=/path/to/config/file clive
251
+
252
+=head2 --config-file
253
+
254
+Or use C<--config-file>, e.g.:
255
+
256
+ clive --config-file /path/to/config/file
257
+
258
+=head2 Example config
259
+
260
+A typical configuration file could look like:
261
+
262
+ --get-with "/usr/bin/curl -L -C - -o %f %u --user-agent Mozilla/5.0"
263
+ --quvi "/usr/bin/quvi --category-http %u"
264
+ --filename-format "%t_%i.%s"
265
+ --exec "/usr/bin/vlc %f"
266
+
267
+=head1 EXAMPLES
268
+
269
+=head2 Note
270
+
271
+Put the URLs inside quotes when they are specified as the command line
272
+arguments to the program. This is the recommended practice.
273
+
274
+=head2 clive "URL"
275
+
276
+Typical use.
277
+
278
+=head2 clive -f best "URL"
279
+
280
+Download the best available format of the media.
281
+
282
+=head2 clive -F "URL"
283
+
284
+Query available formats to the URL. Use one of the returned format
285
+strings from this list with C<--format>.
286
+
287
+=head2 clive -n "URL"
288
+
289
+Do not download the media, print the details only.
290
+
291
+=head1 EXIT STATUS
292
+
293
+clive exits with 0 on success, otherwise the code is E<gt>0. For example,
294
+if command line parsing fails, the exit status is 1.
295
+
296
+When an error occurs in another command invoked by clive, e.g. C<quvi(1)>,
297
+clive then exits with the exit status returned by that command.
298
+
299
+See also L</KNOWN ISSUES> for L</Exit status>.
300
+
301
+=head1 SEE ALSO
302
+
303
+C<quvi(1)> C<curl(1)>
304
+
305
+=head1 WWW
306
+
307
+ Home : http://clive.sourceforge.net/
308
+ gitweb: http://repo.or.cz/w/clive.git
309
+
310
+=head1 LICENSE
311
+
312
+clive is free software, licensed under the GPLv3+.
313
+
314
+=head1 AUTHOR
315
+
316
+Toni Gundogdu E<lt>legatvs at sign gmail comE<gt>
317
+
318
+Thanks to all those who have contributed to the project by sending
319
+patches, reporting bugs and writing feedback. You know who you are.
320
clive-2.3.3.tar.gz/examples/cliverc
Added
39
1
2
+
3
+# Typical paths.
4
+# /usr/local/share/clive/config
5
+# /usr/share/clive/config
6
+# /etc/clive/config
7
+# ~/.cliverc
8
+# ~/.clive/config
9
+# ~/.config/clive/config
10
+# or set the path to the file with CLIVE_CONFIG env. variable.
11
+
12
+# quvi command. clive appends "--quiet" to it.
13
+# %u Media page URL
14
+# quvi 0.4.1+
15
+--quvi "/usr/bin/quvi -c http %u"
16
+#--quvi "/usr/bin/quvi --category-http %u"
17
+
18
+# Download command.
19
+# %u Media stream URL
20
+# %f Path to the downloaded media file
21
+# %n File name (basename of the above)
22
+# Make a note of user-agent. Some websites are known refuse to work
23
+# with the curl default user-agent value. Use the quvi default value.
24
+--get-with "/usr/bin/curl -L -C - -o %f %u --user-agent Mozilla/5.0"
25
+
26
+# Play copied media file when transfer finishes.
27
+# %f Path to the local media file
28
+#--exec "/usr/bin/vlc --quiet %f"
29
+
30
+# Save downloaded media as, where
31
+# %h Media host ID
32
+# %t Media title
33
+# %s File suffix
34
+# %i Media ID
35
+#--filename-format "%t_%i.%s"
36
+
37
+# Cleanup title with regular expression.
38
+#--regexp "/(\\w)/g"
39
clive-2.3.3.tar.gz/t/clive-Pod.t
Added
13
1
2
+use warnings;
3
+use strict;
4
+
5
+use Test::More;
6
+
7
+eval "use Test::Pod 1.00";
8
+plan skip_all => "Test::Pod 1.00 required for testing POD" if $@;
9
+
10
+my @poddirs = qw(doc/man1);
11
+
12
+all_pod_files_ok(all_pod_files(@poddirs));
13
clive-rpmlintrc
Changed
7
1
2
+# This line is mandatory to access the configuration functions
3
+from Config import *
4
+
5
addFilter("perl5-naming-policy-not-applied")
6
+addFilter("invalid-spec-name")
7
Refresh
No build results available
Refresh
No rpmlint results available
Login required, please
login
or
signup
in order to comment
Request History
dnh created request over 11 years ago
update to 2.3.3
seife added review over 12 years ago
Pascal, you seem to know something about this package...
pbleser approved review over 12 years ago
Pascal, you seem to know something about this package...
pbleser accepted request over 12 years ago
accepted, although you are changing (and removing) a lot in the buildrequires... the fiddling with PERL5LIB seems really weird to me too... does it still work at runtime?
pbleser accepted review over 11 years ago
Pascal, you seem to know something about this package...