Mercurial > hg > chronicle
annotate bin/chronicle-rss-importer @ 279:e4d05c7d6557
Added signature for changeset 3475517f0d0e
author | Steve Kemp <steve@steve.org.uk> |
---|---|
date | Mon, 01 Sep 2008 20:38:56 +0100 |
parents | 389f234d4111 |
children |
rev | line source |
---|---|
222
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
1 #!/usr/bin/perl -w |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
2 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
3 use strict; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
4 use warnings; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
5 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
6 use Getopt::Long; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
7 use HTML::Entities; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
8 use LWP; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
9 use XML::RSSLite; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
10 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
11 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
12 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
13 # Configuration variables |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
14 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
15 my %CONFIG; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
16 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
17 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
18 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
19 # Parse arguments. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
20 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
21 parseCommandLineArguments(); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
22 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
23 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
24 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
25 # Validate any arguments. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
26 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
27 validateCommandLineArguments(); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
28 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
29 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
30 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
31 # Fetch the feed. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
32 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
33 my $content = fetchRSSFeed( $CONFIG{ 'feed' } ); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
34 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
35 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
36 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
37 # Parse the feed |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
38 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
39 my %rssHash; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
40 parseRSS( \%rssHash, \$content ); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
41 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
42 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
43 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
44 # Now import |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
45 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
46 processEntries(%rssHash); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
47 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
48 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
49 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
50 # All done. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
51 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
52 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
53 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
54 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
55 =begin doc |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
56 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
57 Parse the command line arguments, if any. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
58 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
59 =end doc |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
60 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
61 =cut |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
62 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
63 sub parseCommandLineArguments |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
64 { |
257
389f234d4111
Failure to parse options should make the script exit
Steve Kemp <steve@steve.org.uk>
parents:
222
diff
changeset
|
65 if ( |
389f234d4111
Failure to parse options should make the script exit
Steve Kemp <steve@steve.org.uk>
parents:
222
diff
changeset
|
66 !GetOptions( |
222
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
67 |
257
389f234d4111
Failure to parse options should make the script exit
Steve Kemp <steve@steve.org.uk>
parents:
222
diff
changeset
|
68 "feed=s", \$CONFIG{ 'feed' }, |
389f234d4111
Failure to parse options should make the script exit
Steve Kemp <steve@steve.org.uk>
parents:
222
diff
changeset
|
69 "output=s", \$CONFIG{ 'output' }, |
389f234d4111
Failure to parse options should make the script exit
Steve Kemp <steve@steve.org.uk>
parents:
222
diff
changeset
|
70 "sequential", \$CONFIG{ 'sequential' }, |
389f234d4111
Failure to parse options should make the script exit
Steve Kemp <steve@steve.org.uk>
parents:
222
diff
changeset
|
71 ) |
389f234d4111
Failure to parse options should make the script exit
Steve Kemp <steve@steve.org.uk>
parents:
222
diff
changeset
|
72 ) |
389f234d4111
Failure to parse options should make the script exit
Steve Kemp <steve@steve.org.uk>
parents:
222
diff
changeset
|
73 { |
389f234d4111
Failure to parse options should make the script exit
Steve Kemp <steve@steve.org.uk>
parents:
222
diff
changeset
|
74 exit; |
389f234d4111
Failure to parse options should make the script exit
Steve Kemp <steve@steve.org.uk>
parents:
222
diff
changeset
|
75 } |
222
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
76 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
77 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
78 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
79 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
80 =begin doc |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
81 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
82 Ensure we received the arguments we need, and that |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
83 those arguments look OK. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
84 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
85 =end doc |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
86 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
87 =cut |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
88 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
89 sub validateCommandLineArguments |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
90 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
91 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
92 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
93 # We need an output dir |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
94 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
95 if ( !$CONFIG{ 'output' } ) |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
96 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
97 print "Output directory is mandatory.\n"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
98 print "Please specificy via --output=...\n"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
99 exit; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
100 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
101 if ( !-d $CONFIG{ 'output' } ) |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
102 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
103 print |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
104 "Specified output directory [$CONFIG{'output'}] is not a directory!\n"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
105 exit; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
106 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
107 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
108 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
109 # We need a feed |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
110 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
111 if ( !$CONFIG{ 'feed' } ) |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
112 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
113 print "Please specify a feed to import, via --feed=http:/....\n"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
114 exit; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
115 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
116 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
117 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
118 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
119 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
120 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
121 =begin doc |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
122 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
123 Fetch the remote RSS feed. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
124 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
125 =end doc |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
126 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
127 =cut |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
128 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
129 sub fetchRSSFeed |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
130 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
131 my ($uri) = (@_); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
132 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
133 my $ua = LWP::UserAgent->new(); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
134 $ua->timeout(10); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
135 $ua->agent('chronicle-importer'); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
136 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
137 my $response = $ua->get($uri); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
138 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
139 if ( $response->is_success ) |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
140 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
141 return ( $response->content() ); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
142 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
143 else |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
144 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
145 print "Failed to fetch feed: $uri\n"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
146 print "\n"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
147 print $response->message() . "\n"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
148 exit; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
149 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
150 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
151 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
152 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
153 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
154 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
155 =begin doc |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
156 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
157 Iterate over the items in our feed and write each one out to a |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
158 single file. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
159 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
160 =end doc |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
161 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
162 =cut |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
163 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
164 sub processEntries |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
165 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
166 my (%entries) = (@_); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
167 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
168 my $count = 1; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
169 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
170 foreach my $item ( @{ $rssHash{ 'item' } } ) |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
171 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
172 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
173 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
174 # Get details from the feed. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
175 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
176 my $title = $item->{ 'title' } || "no title"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
177 my $date = $item->{ 'pubDate' } || $item->{ 'dc:date' } || undef; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
178 my $body = |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
179 $item->{ 'description' } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
180 || $item->{ 'content:encoded' } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
181 || undef; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
182 my $filename; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
183 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
184 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
185 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
186 # Build up a suitable filename. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
187 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
188 if ( $CONFIG{ 'sequential' } ) |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
189 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
190 $filename = $count . ".txt"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
191 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
192 else |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
193 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
194 $filename = $title; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
195 $filename =~ s/[^a-z0-9]/_/gi; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
196 $filename .= ".txt"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
197 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
198 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
199 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
200 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
201 # Naive expansion. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
202 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
203 if ( $body =~ m/</ ) |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
204 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
205 $body = decode_entities($body); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
206 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
207 $filename = $CONFIG{ 'output' } . "/" . $filename; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
208 open( OUTPUT, ">", $filename ) |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
209 or die "Failed to write to $filename - $!"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
210 print OUTPUT <<EOF; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
211 Title: $title |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
212 Date: $date |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
213 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
214 $body |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
215 EOF |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
216 close(OUTPUT); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
217 $count += 1; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
218 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
219 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
220 } |