Mercurial > hg > chronicle
annotate bin/chronicle-rss-importer @ 222:fdbbc1bb5d7c
Add the stub migration script + readme
author | Steve Kemp <steve@steve.org.uk> |
---|---|
date | Wed, 16 Apr 2008 19:31:23 +0100 |
parents | |
children | 389f234d4111 |
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 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
65 GetOptions( |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
66 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
67 # Help options |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
68 "feed=s", \$CONFIG{ 'feed' }, |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
69 "output=s", \$CONFIG{ 'output' }, |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
70 "sequential", \$CONFIG{ 'sequential' }, |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
71 ); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
72 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
73 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
74 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
75 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
76 =begin doc |
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 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
|
79 those arguments look OK. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
80 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
81 =end doc |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
82 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
83 =cut |
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 sub validateCommandLineArguments |
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 |
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 # We need an output dir |
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 if ( !$CONFIG{ 'output' } ) |
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 print "Output directory is mandatory.\n"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
94 print "Please specificy via --output=...\n"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
95 exit; |
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 if ( !-d $CONFIG{ 'output' } ) |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
98 { |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
99 print |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
100 "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
|
101 exit; |
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 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
104 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
105 # We need a feed |
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 if ( !$CONFIG{ 'feed' } ) |
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 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
|
110 exit; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
111 } |
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 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
114 |
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 =begin doc |
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 Fetch the remote RSS feed. |
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 =end 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 =cut |
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 sub fetchRSSFeed |
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 my ($uri) = (@_); |
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 my $ua = LWP::UserAgent->new(); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
130 $ua->timeout(10); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
131 $ua->agent('chronicle-importer'); |
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 $response = $ua->get($uri); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
134 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
135 if ( $response->is_success ) |
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 return ( $response->content() ); |
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 else |
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 print "Failed to fetch feed: $uri\n"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
142 print "\n"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
143 print $response->message() . "\n"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
144 exit; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
145 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
146 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
147 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
148 |
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 =begin doc |
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 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
|
154 single file. |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
155 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
156 =end doc |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
157 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
158 =cut |
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 sub processEntries |
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 my (%entries) = (@_); |
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 my $count = 1; |
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 foreach my $item ( @{ $rssHash{ 'item' } } ) |
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 |
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 # Get details from the feed. |
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 my $title = $item->{ 'title' } || "no title"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
173 my $date = $item->{ 'pubDate' } || $item->{ 'dc:date' } || undef; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
174 my $body = |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
175 $item->{ 'description' } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
176 || $item->{ 'content:encoded' } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
177 || undef; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
178 my $filename; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
179 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
180 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
181 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
182 # Build up a suitable 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 if ( $CONFIG{ 'sequential' } ) |
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 $filename = $count . ".txt"; |
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 else |
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 = $title; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
191 $filename =~ s/[^a-z0-9]/_/gi; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
192 $filename .= ".txt"; |
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 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
195 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
196 # |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
197 # Naive expansion. |
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 if ( $body =~ m/</ ) |
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 $body = decode_entities($body); |
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 $filename = $CONFIG{ 'output' } . "/" . $filename; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
204 open( OUTPUT, ">", $filename ) |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
205 or die "Failed to write to $filename - $!"; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
206 print OUTPUT <<EOF; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
207 Title: $title |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
208 Date: $date |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
209 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
210 $body |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
211 EOF |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
212 close(OUTPUT); |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
213 $count += 1; |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
214 } |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
215 |
fdbbc1bb5d7c
Add the stub migration script + readme
Steve Kemp <steve@steve.org.uk>
parents:
diff
changeset
|
216 } |