ausca 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/ausca.gemspec +23 -0
- data/lib/ausca.rb +9 -0
- data/lib/ausca/rss/joiner.rb +104 -0
- data/lib/ausca/rss/util.rb +36 -0
- data/lib/ausca/twitter/bot.rb +180 -0
- data/lib/ausca/util.rb +14 -0
- data/lib/ausca/version.rb +3 -0
- data/tests/feed.rss +309 -0
- data/tests/feed_joiner.rb +19 -0
- metadata +87 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NTVlZjVkY2FhNWVmM2JlNDEyZjI1NTYxMmFiODE4MWZjMTE2Zjc4ZQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NjRlYzJiMjQxYmFjMzQxZTA1MjU4ZTRkNWMwYTM5ZDA2ZGZkYzAwZg==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YmZmNTkwMGZhMjVhM2Q4NmQ5OTcwNGEwMWI4OTU2MTNkY2MzNmQwZTU2ZjMx
|
10
|
+
NjQwYjE2OGRiYjhiMTc2OTY2N2E5YmJiZTlkMTM2ZTdlMGIzM2ZkZmMzZGZh
|
11
|
+
Y2M1MzIzOWViOTVlYmE1YjQ5NWQ5ODY0ZTAzMWNjZTlhYWZlNmE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
OGI1M2UwYWQ2NWM2NDI5NDM3NjhlN2QyYWE5NTA5YjA4ZjJjYTMwOTEzNzI4
|
14
|
+
NWFhN2ZiMmY4MTM0ODU1ZWM2ZjcwYzJlODFiMmQ1ZDhhZWUxYmYwZmYwNDI1
|
15
|
+
MDBkNTkwMjJkMDZiNmFhMmVmZDE2MDU1YjgxYjk5MzBiY2Q5ZTQ=
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Kam
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Ausca
|
2
|
+
|
3
|
+
Ausca is a collection of automation utilities and bots written in Ruby.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'ausca'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install ausca
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
Check out http://ausca.com for documentation, and the tests directory for functional examples.
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/ausca.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'ausca/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "ausca"
|
8
|
+
spec.version = Ausca::VERSION
|
9
|
+
spec.authors = ["Kam Low"]
|
10
|
+
spec.email = ["hello@sourcey.com"]
|
11
|
+
spec.description = %q{Ausca is a collection of automation utilities that you can use to fast-track the development of your online empire.}
|
12
|
+
spec.summary = %q{Automation utilities and bots.}
|
13
|
+
spec.homepage = "http://ausca.com"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
end
|
data/lib/ausca.rb
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'open-uri'
|
3
|
+
|
4
|
+
module Ausca
|
5
|
+
module RSS
|
6
|
+
class Joiner
|
7
|
+
def options
|
8
|
+
@options ||= {
|
9
|
+
# Array of source feed URLs to join
|
10
|
+
feeds: [],
|
11
|
+
|
12
|
+
# Max output feed items
|
13
|
+
max_items: 20,
|
14
|
+
|
15
|
+
# Output RSS file path
|
16
|
+
output_path: "feed.rss",
|
17
|
+
|
18
|
+
# RSS variables
|
19
|
+
version: "2.0",
|
20
|
+
title: "my title",
|
21
|
+
description: "my description",
|
22
|
+
link: "my link",
|
23
|
+
author: "my author",
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def initialize(opts)
|
28
|
+
options.merge!(opts)
|
29
|
+
options[:feeds].to_a unless options[:feeds].is_a? Array
|
30
|
+
end
|
31
|
+
|
32
|
+
# Generates the output RSS feed
|
33
|
+
def generate
|
34
|
+
items = self.fetch
|
35
|
+
items = self.filter items
|
36
|
+
|
37
|
+
rss = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
38
|
+
xml.rss(version: options[:version]) do
|
39
|
+
xml.channel do
|
40
|
+
xml.title options[:title]
|
41
|
+
xml.description options[:description]
|
42
|
+
xml.link options[:link]
|
43
|
+
xml.author options[:author]
|
44
|
+
|
45
|
+
items.each do |source_item|
|
46
|
+
xml.item do
|
47
|
+
xml.title source_item[:title]
|
48
|
+
xml.description do
|
49
|
+
xml.cdata source_item[:description] # CGI::unescape_html
|
50
|
+
end
|
51
|
+
xml.link source_item[:link]
|
52
|
+
xml.category source_item[:category] unless source_item[:category].empty?
|
53
|
+
xml.pubDate source_item[:pubDate].httpdate
|
54
|
+
|
55
|
+
# optional image
|
56
|
+
if source_item[:image]
|
57
|
+
xml.image do
|
58
|
+
xml.url source_item[:image]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
self.save rss.to_xml
|
68
|
+
end
|
69
|
+
|
70
|
+
# Fetch and combine the remote feeds
|
71
|
+
def fetch
|
72
|
+
items = []
|
73
|
+
# File.open(options[:feeds], 'r').each_line { |f| }
|
74
|
+
options[:feeds].each { |url|
|
75
|
+
p "Fetching: #{url}"
|
76
|
+
open(url) do |rss|
|
77
|
+
doc = Nokogiri::XML(rss.read) # Nokogiri::XML::ParseOptions::NOCDATA
|
78
|
+
doc.xpath('//item').map do |i|
|
79
|
+
items << {
|
80
|
+
title: i.xpath('title').text,
|
81
|
+
description: i.xpath('description').text,
|
82
|
+
link: RSS::Util.item_source_url(i),
|
83
|
+
image: RSS::Util.item_image_url(i),
|
84
|
+
category: i.xpath('category').text,
|
85
|
+
pubDate: Time.parse(i.xpath('pubDate').text)
|
86
|
+
}
|
87
|
+
end
|
88
|
+
end
|
89
|
+
}
|
90
|
+
items.sort_by { |k| k[:pubDate] }.reverse
|
91
|
+
end
|
92
|
+
|
93
|
+
# Filter the output feed items based on optional constraints
|
94
|
+
def filter items
|
95
|
+
items = items.first(options[:max_items]) if options[:max_items] > 0
|
96
|
+
end
|
97
|
+
|
98
|
+
def save rss
|
99
|
+
File.write(options[:output_path], rss)
|
100
|
+
#File.open(options[:output_path], 'w') { |f| rss }
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Ausca
|
2
|
+
module RSS
|
3
|
+
class Util
|
4
|
+
class << self
|
5
|
+
|
6
|
+
# Get the source URL for an RSS item
|
7
|
+
def item_source_url node
|
8
|
+
url = node.at_xpath('source').attr('url') if node.at_xpath('source')
|
9
|
+
url = (node.xpath('link').text if node.at_xpath('link')) unless url
|
10
|
+
url
|
11
|
+
end
|
12
|
+
|
13
|
+
# Get an image from the image or content element
|
14
|
+
def item_image_url item
|
15
|
+
url = i.at_xpath('media|thumbnail').attr('url') if i.at_xpath('media|thumbnail') rescue nil
|
16
|
+
url = i.at_xpath('enclosure').attr('url') unless url rescue nil
|
17
|
+
#url = item.content.to_s[/img.*?src=\\\"(.*?)\\\"/i,1] unless url rescue nil
|
18
|
+
url
|
19
|
+
end
|
20
|
+
|
21
|
+
def default_text item
|
22
|
+
s = "#{item[:title]} #{item[:link]}"
|
23
|
+
s += " ##{item[:category].gsub(/\s+/, "").downcase}" if item[:category]
|
24
|
+
CGI::unescape_html s #.html_safe
|
25
|
+
end
|
26
|
+
|
27
|
+
def default_text_with_description item
|
28
|
+
s = "#{item[:title]}: #{item[:description]} #{item[:link]}"
|
29
|
+
s += " ##{item[:category].gsub(/\s+/, "").downcase}" if item[:category]
|
30
|
+
CGI::unescape_html s #.html_safe
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,180 @@
|
|
1
|
+
require 'twitter'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module Ausca
|
5
|
+
module Twitter
|
6
|
+
|
7
|
+
# Twitter bot for gaining followers by following, favouriting and retweeting
|
8
|
+
# targeted users and content.
|
9
|
+
#
|
10
|
+
# TODO: Unfollow users after a few days if no followback
|
11
|
+
class Bot
|
12
|
+
def options
|
13
|
+
@options ||= {
|
14
|
+
:consumer_key => nil,
|
15
|
+
:consumer_secret => nil,
|
16
|
+
:access_token => nil,
|
17
|
+
:access_token_secret => nil,
|
18
|
+
:config => nil,
|
19
|
+
:config_filename => "config.json",
|
20
|
+
:search => "#popular -rt",
|
21
|
+
:freind_follower_ratio => 0.75,
|
22
|
+
:retweet_min_follower_count => 100,
|
23
|
+
:want_num_retweets => 1,
|
24
|
+
:want_num_favorites => 5,
|
25
|
+
:max_loops => 5
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
def initialize(opts)
|
30
|
+
options.merge!(opts)
|
31
|
+
load_config
|
32
|
+
end
|
33
|
+
|
34
|
+
# Create the Twitter REST client instance
|
35
|
+
def client
|
36
|
+
@client ||= Twitter::REST::Client.new do |config|
|
37
|
+
config.consumer_key = options[:consumer_key]
|
38
|
+
config.consumer_secret = options[:consumer_secret]
|
39
|
+
config.access_token = options[:access_token]
|
40
|
+
config.access_token_secret = options[:access_token_secret]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Load the config file if a filename option was provided
|
45
|
+
def load_config
|
46
|
+
# Load from options or file
|
47
|
+
@config = options[:config]
|
48
|
+
@config ||= (JSON.parse(IO.read(
|
49
|
+
File.expand_path(options[:config_filename],
|
50
|
+
File.dirname(__FILE__)))) rescue {}) if options[:config_filename]
|
51
|
+
@config['following'] ||= {}
|
52
|
+
end
|
53
|
+
|
54
|
+
# Save the config file if a filename option was provided
|
55
|
+
def save_config
|
56
|
+
p @config.inspect
|
57
|
+
File.open(options[:config_filename], 'w'){ |f| JSON.dump(@config, f) } if options[:config_filename]
|
58
|
+
end
|
59
|
+
|
60
|
+
# Run the bot action
|
61
|
+
def run
|
62
|
+
num_retweets = 0
|
63
|
+
num_favorites = 0
|
64
|
+
num_loops = 0
|
65
|
+
filters = { max_id: nil }
|
66
|
+
|
67
|
+
# Loop until we have reached our target number of follows, retweets and favs,
|
68
|
+
# or hit the max number of loops
|
69
|
+
while num_loops < options[:max_loops] &&
|
70
|
+
(num_retweets < options[:want_num_retweets] ||
|
71
|
+
num_favorites < options[:want_num_favorites])
|
72
|
+
num_loops += 1
|
73
|
+
p "*** Looping #{num_loops}"
|
74
|
+
|
75
|
+
# @option options [String] :geocode Returns tweets by users located within a given radius of the given latitude/longitude. The location is preferentially taking from the Geotagging API, but will fall back to their Twitter profile. The parameter value is specified by "latitude,longitude,radius", where radius units must be specified as either "mi" (miles) or "km" (kilometers). Note that you cannot use the near operator via the API to geocode arbitrary locations; however you can use this geocode parameter to search near geocodes directly.
|
76
|
+
# @option options [String] :lang Restricts tweets to the given language, given by an ISO 639-1 code.
|
77
|
+
# @option options [String] :locale Specify the language of the query you are sending (only ja is currently effective). This is intended for language-specific clients and the default should work in the majority of cases.
|
78
|
+
# @option options [String] :result_type Specifies what type of search results you would prefer to receive. Options are "mixed", "recent", and "popular". The current default is "mixed."
|
79
|
+
# @option options [Integer] :count The number of tweets to return per page, up to a maximum of 100.
|
80
|
+
# @option options [String] :until Optional. Returns tweets generated before the given date. Date should be formatted as YYYY-MM-DD.
|
81
|
+
# @option options [Integer] :since_id Returns results with an ID greater than (that is, more recent than) the specified ID. There are limits to the number of Tweets which can be accessed through the API. If the limit of Tweets has occured since the since_id, the since_id will be forced to the oldest ID available.
|
82
|
+
# @option options [Integer] :max_id Returns results with an ID less than (that is, older than) or equal to the specified ID.
|
83
|
+
# @option options [Boolean, String, Integer] :include_entities The tweet entities node will be disincluded when set to false.
|
84
|
+
client.search(options[:search], filters).each do |tweet|
|
85
|
+
filters[:max_id] = tweet.id
|
86
|
+
|
87
|
+
#p "*** Looping #{tweet.text}"
|
88
|
+
|
89
|
+
# Skip dead tweets
|
90
|
+
next if tweet.lang != 'en'
|
91
|
+
|
92
|
+
# Skip dead tweets
|
93
|
+
next if tweet.retweet_count == 0 || tweet.favorite_count == 0
|
94
|
+
|
95
|
+
# Skip unpopular or overpopular tweets
|
96
|
+
next if tweet.retweet_count < 3 || tweet.retweet_count > 100#0
|
97
|
+
|
98
|
+
# Skip tweets we have interacted with
|
99
|
+
#next if tweet.retweeted || tweet.favorited
|
100
|
+
|
101
|
+
# Skip users that aren't easy marks
|
102
|
+
next if tweet.user.friends_count < (tweet.user.followers_count * options[:freind_follower_ratio])
|
103
|
+
|
104
|
+
# Skip if already following
|
105
|
+
next if @config['following'].has_key? tweet.user.id
|
106
|
+
|
107
|
+
# Retweet the first most suitable tweet, and follow that user
|
108
|
+
if num_retweets < options[:want_num_retweets] &&
|
109
|
+
tweet.retweet_count > tweet.favorite_count &&
|
110
|
+
|
111
|
+
# Ensure min followers count is met before we retweet
|
112
|
+
tweet.user.followers_count > options[:retweet_min_follower_count]
|
113
|
+
|
114
|
+
p "*** DO RT"
|
115
|
+
print_tweet tweet
|
116
|
+
|
117
|
+
begin
|
118
|
+
@config['following'][tweet.user.id] = Time.now.utc
|
119
|
+
client.follow!(tweet.user)
|
120
|
+
client.retweet!(tweet)
|
121
|
+
num_retweets += 1
|
122
|
+
rescue => e
|
123
|
+
p "*** RT ERROR: #{e}"
|
124
|
+
ensure
|
125
|
+
end
|
126
|
+
next
|
127
|
+
end
|
128
|
+
|
129
|
+
# Favourite the first most suitable tweet, and follow that user
|
130
|
+
if num_favorites < options[:want_num_favorites] #&& tweet.favorite_count > tweet.retweet_count
|
131
|
+
p "*** DO FAV"
|
132
|
+
print_tweet tweet
|
133
|
+
|
134
|
+
begin
|
135
|
+
@config['following'][tweet.user.id] = Time.now.utc
|
136
|
+
client.follow!(tweet.user)
|
137
|
+
client.favorite!(tweet)
|
138
|
+
num_favorites += 1
|
139
|
+
rescue => e
|
140
|
+
p "*** FAV ERROR: #{e}"
|
141
|
+
ensure
|
142
|
+
end
|
143
|
+
next
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
# # Loop followed users and unfollow if no followback after 5 days
|
149
|
+
# now = Time.now
|
150
|
+
# days = 5
|
151
|
+
# p @config.inspect
|
152
|
+
# @config['following'].each do |id,time|
|
153
|
+
# expired = (Time.parse(time) + (60 * 60 * 24 * days)) < now
|
154
|
+
# if expired
|
155
|
+
# # TODO
|
156
|
+
# # check if following us
|
157
|
+
# # => - remove entry if true
|
158
|
+
# # => - remove firend and entry if false
|
159
|
+
# end
|
160
|
+
# end
|
161
|
+
|
162
|
+
save_config
|
163
|
+
end
|
164
|
+
|
165
|
+
# Print useful information about a tweet
|
166
|
+
def print_tweet tweet
|
167
|
+
puts '----------------------------------------------------------------------'
|
168
|
+
puts tweet.text
|
169
|
+
puts "favorite_count: #{tweet.favorite_count}"
|
170
|
+
puts "retweet_count: #{tweet.retweet_count}"
|
171
|
+
puts "retweeted #{tweet.retweeted}"
|
172
|
+
puts "favorited #{tweet.favorited}"
|
173
|
+
puts "source #{tweet.source}"
|
174
|
+
puts "lang #{tweet.lang}"
|
175
|
+
puts "user friends #{tweet.user.friends_count}"
|
176
|
+
puts "user followers #{tweet.user.followers_count}"
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
data/lib/ausca/util.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
module Ausca
|
2
|
+
class Util
|
3
|
+
|
4
|
+
# Load a JSON config file
|
5
|
+
#def load_json_config path
|
6
|
+
# JSON.parse(IO.read(File.expand_path(path, File.dirname(__FILE__)))) rescue {}
|
7
|
+
#end
|
8
|
+
|
9
|
+
# Save a JSON config file if a filename option was provided
|
10
|
+
#def save_json_config path, object
|
11
|
+
# File.open(path, 'w') { |f| JSON.dump(object, f) }
|
12
|
+
#end
|
13
|
+
end
|
14
|
+
end
|
data/tests/feed.rss
ADDED
@@ -0,0 +1,309 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<rss version="2.0">
|
3
|
+
<channel>
|
4
|
+
<title>test title</title>
|
5
|
+
<description>test description</description>
|
6
|
+
<link>test link</link>
|
7
|
+
<author>test author</author>
|
8
|
+
<item>
|
9
|
+
<title>Active mums 'have active children'</title>
|
10
|
+
<description><![CDATA[There is a direct link between how physically active mothers are and how active their young children are, suggests a UK study.]]></description>
|
11
|
+
<link>http://www.bbc.co.uk/news/health-26679906#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
12
|
+
<pubDate>Mon, 24 Mar 2014 06:02:39 GMT</pubDate>
|
13
|
+
</item>
|
14
|
+
<item>
|
15
|
+
<title>Police incompetent, says acid victim</title>
|
16
|
+
<description><![CDATA[A woman left scarred when he friend attacked her with acid accuses Scotland Yard of incompetence, saying they initially claimed she had done it to herself.]]></description>
|
17
|
+
<link>http://www.bbc.co.uk/news/uk-26710956#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
18
|
+
<pubDate>Mon, 24 Mar 2014 06:01:06 GMT</pubDate>
|
19
|
+
</item>
|
20
|
+
<item>
|
21
|
+
<title>Rain could increase river pollution</title>
|
22
|
+
<description><![CDATA[Wetter winters in the future could increase agricultural pollution in Britain's rivers, say scientists.]]></description>
|
23
|
+
<link>http://www.bbc.co.uk/news/science-environment-26682750#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
24
|
+
<pubDate>Mon, 24 Mar 2014 06:00:20 GMT</pubDate>
|
25
|
+
</item>
|
26
|
+
<item>
|
27
|
+
<title>Russian troops 'overrun Crimea base'</title>
|
28
|
+
<description><![CDATA[Russian troops seize control of a Crimean naval base at Feodosia, the third such attack in 48 hours, Ukrainian officials tell the BBC.]]></description>
|
29
|
+
<link>http://www.bbc.co.uk/news/world-europe-26710884#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
30
|
+
<pubDate>Mon, 24 Mar 2014 05:49:47 GMT</pubDate>
|
31
|
+
</item>
|
32
|
+
<item>
|
33
|
+
<title>Missing plane: China spots 'objects'</title>
|
34
|
+
<description><![CDATA[A Chinese plane spots possible debris hours after it joined the search for the missing Malaysia Airlines plane in the southern Indian Ocean.]]></description>
|
35
|
+
<link>http://www.bbc.co.uk/news/world-asia-26678492#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
36
|
+
<pubDate>Mon, 24 Mar 2014 05:46:09 GMT</pubDate>
|
37
|
+
</item>
|
38
|
+
<item>
|
39
|
+
<title>Taiwan students storm government HQ</title>
|
40
|
+
<description><![CDATA[Dozens hurt as Taiwan police disperse students who had occupied government headquarters to protest at a trade deal with China.]]></description>
|
41
|
+
<link>http://www.bbc.co.uk/news/world-asia-26705779#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
42
|
+
<pubDate>Mon, 24 Mar 2014 05:06:07 GMT</pubDate>
|
43
|
+
</item>
|
44
|
+
<item>
|
45
|
+
<title>Ex-Army chief calls for more troops</title>
|
46
|
+
<description><![CDATA[The UK needs 3,000 extra troops to show it "takes its defence responsibilities seriously" in light of the Ukraine crisis, says a former head of the Army.]]></description>
|
47
|
+
<link>http://www.bbc.co.uk/news/uk-26710855#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
48
|
+
<pubDate>Mon, 24 Mar 2014 04:22:30 GMT</pubDate>
|
49
|
+
</item>
|
50
|
+
<item>
|
51
|
+
<title>Rising death toll from US landslide</title>
|
52
|
+
<description><![CDATA[Rescuers searching the area of Saturday's massive mudslide in the US state of Washington find eight bodies, with a number of people still missing.]]></description>
|
53
|
+
<link>http://www.bbc.co.uk/news/world-us-canada-26703994#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
54
|
+
<pubDate>Mon, 24 Mar 2014 03:58:55 GMT</pubDate>
|
55
|
+
</item>
|
56
|
+
<item>
|
57
|
+
<title>Banners to line Crow funeral route</title>
|
58
|
+
<description><![CDATA[Hundreds of trade unionists are expected to join the funeral procession of Rail, Maritime and Transport union leader Bob Crow.]]></description>
|
59
|
+
<link>http://www.bbc.co.uk/news/uk-26707611#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
60
|
+
<pubDate>Mon, 24 Mar 2014 03:45:35 GMT</pubDate>
|
61
|
+
</item>
|
62
|
+
<item>
|
63
|
+
<title>Fraud 'costing NHS £5bn a year'</title>
|
64
|
+
<description><![CDATA[Fraud is costing the NHS £5bn a year, with a further £2bn lost to financial errors, the former head of its anti-fraud section tells BBC Panorama.]]></description>
|
65
|
+
<link>http://www.bbc.co.uk/news/health-26654001#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
66
|
+
<pubDate>Mon, 24 Mar 2014 03:40:22 GMT</pubDate>
|
67
|
+
</item>
|
68
|
+
<item>
|
69
|
+
<title>VIDEO: Deadly landslide in Washington state</title>
|
70
|
+
<description><![CDATA[At least eight people have been killed and several badly injured in a huge landslide in a rural area of the north-western American state of Washington, officials say.]]></description>
|
71
|
+
<link>http://www.bbc.co.uk/news/world-us-canada-26710342#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
72
|
+
<pubDate>Mon, 24 Mar 2014 03:37:09 GMT</pubDate>
|
73
|
+
</item>
|
74
|
+
<item>
|
75
|
+
<title>Japan PM Abe visits Ann Frank museum</title>
|
76
|
+
<description><![CDATA[Japan's Shinzo Abe visits Amsterdam's Anne Frank House museum, weeks after 300 copies of her famous diary were vandalised in Tokyo.]]></description>
|
77
|
+
<link>http://www.bbc.co.uk/news/world-asia-26710575#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
78
|
+
<pubDate>Mon, 24 Mar 2014 02:58:01 GMT</pubDate>
|
79
|
+
</item>
|
80
|
+
<item>
|
81
|
+
<title>Ceremony honours 'The Great Escape'</title>
|
82
|
+
<description><![CDATA[A ceremony to commemorate the Great Escape, the famous breakout from German prisoner of war camp Stalag Luft III in 1944, is due to take place later.]]></description>
|
83
|
+
<link>http://www.bbc.co.uk/news/uk-26706141#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
84
|
+
<pubDate>Mon, 24 Mar 2014 02:13:37 GMT</pubDate>
|
85
|
+
</item>
|
86
|
+
<item>
|
87
|
+
<title>VIDEO: Mexico's mariachi academy run by American</title>
|
88
|
+
<description><![CDATA[Mexico's first mariachi academy plans global domination]]></description>
|
89
|
+
<link>http://www.bbc.co.uk/news/magazine-26686725#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
90
|
+
<pubDate>Mon, 24 Mar 2014 01:18:35 GMT</pubDate>
|
91
|
+
</item>
|
92
|
+
<item>
|
93
|
+
<title>Elton John: On the Yellow Brick Road</title>
|
94
|
+
<description><![CDATA[The story of Goodbye Yellow Brick Road by the people who made it]]></description>
|
95
|
+
<link>http://www.bbc.co.uk/news/entertainment-arts-26648532#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
96
|
+
<pubDate>Mon, 24 Mar 2014 01:17:41 GMT</pubDate>
|
97
|
+
</item>
|
98
|
+
<item>
|
99
|
+
<title>Did Hyman Minsky find the secret behind financial crashes?</title>
|
100
|
+
<description><![CDATA[Did this man find the secret behind financial crashes?]]></description>
|
101
|
+
<link>http://www.bbc.co.uk/news/magazine-26680993#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
102
|
+
<pubDate>Mon, 24 Mar 2014 01:14:46 GMT</pubDate>
|
103
|
+
</item>
|
104
|
+
<item>
|
105
|
+
<title>Cows connected to web to boost milk</title>
|
106
|
+
<description><![CDATA[Scottish dairy famers are connecting their cows to the internet to help track the animal's health and improve their milk yield.]]></description>
|
107
|
+
<link>http://www.bbc.co.uk/news/uk-scotland-scotland-business-26705812#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
108
|
+
<pubDate>Mon, 24 Mar 2014 01:09:34 GMT</pubDate>
|
109
|
+
</item>
|
110
|
+
<item>
|
111
|
+
<title>Scots constitution to be published</title>
|
112
|
+
<description><![CDATA[An interim written Scottish constitution will be published this summer, the country's deputy first minister announces.]]></description>
|
113
|
+
<link>http://www.bbc.co.uk/news/uk-scotland-scotland-politics-26707495#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
114
|
+
<pubDate>Mon, 24 Mar 2014 00:53:24 GMT</pubDate>
|
115
|
+
</item>
|
116
|
+
<item>
|
117
|
+
<title>New tool to help catch child abusers</title>
|
118
|
+
<description><![CDATA[Victims of child sexual abuse could soon be identified more quickly, thanks to law enforcement agency work on a cloud-based archive of abuse material.]]></description>
|
119
|
+
<link>http://www.bbc.co.uk/news/technology-26612059#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
120
|
+
<pubDate>Mon, 24 Mar 2014 00:43:44 GMT</pubDate>
|
121
|
+
</item>
|
122
|
+
<item>
|
123
|
+
<title>Apollo collapse due to 'old' materials</title>
|
124
|
+
<description><![CDATA[A ceiling collapse at London's Apollo Theatre has been put down to weak and old materials, the BBC has learned.]]></description>
|
125
|
+
<link>http://www.bbc.co.uk/news/entertainment-arts-26689705#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
126
|
+
<pubDate>Mon, 24 Mar 2014 00:41:05 GMT</pubDate>
|
127
|
+
</item>
|
128
|
+
<item>
|
129
|
+
<title>Boy, 15, charged with girl's murder</title>
|
130
|
+
<description><![CDATA[A teenage boy is charged with murdering 15-year-old Shereka Fab-Ann Marsh, who was shot in the neck in Hackney, east London.]]></description>
|
131
|
+
<link>http://www.bbc.co.uk/news/uk-england-london-26710714#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
132
|
+
<pubDate>Mon, 24 Mar 2014 00:38:30 GMT</pubDate>
|
133
|
+
</item>
|
134
|
+
<item>
|
135
|
+
<title>Stamps honour 10 greats born in 1914</title>
|
136
|
+
<description><![CDATA[Actor Sir Alec Guinness and poet Dylan Thomas are among 10 "remarkable" people - all born in 1914- who feature on a new set of stamps.]]></description>
|
137
|
+
<link>http://www.bbc.co.uk/news/uk-26709537#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
138
|
+
<pubDate>Mon, 24 Mar 2014 00:31:20 GMT</pubDate>
|
139
|
+
</item>
|
140
|
+
<item>
|
141
|
+
<title>VIDEO: Five ways Crimea is becoming Russian</title>
|
142
|
+
<description><![CDATA[Five ways Crimea will change as it becomes part of Russia]]></description>
|
143
|
+
<link>http://www.bbc.co.uk/news/world-europe-26679240#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
144
|
+
<pubDate>Mon, 24 Mar 2014 00:10:32 GMT</pubDate>
|
145
|
+
</item>
|
146
|
+
<item>
|
147
|
+
<title>Johnnie Boden's passion for fashion</title>
|
148
|
+
<description><![CDATA[How Johnnie Boden came to dress the UK's yummy mummies]]></description>
|
149
|
+
<link>http://www.bbc.co.uk/news/business-26334330#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
150
|
+
<pubDate>Mon, 24 Mar 2014 00:07:45 GMT</pubDate>
|
151
|
+
</item>
|
152
|
+
<item>
|
153
|
+
<title>Fathers 'not taking paternity leave'</title>
|
154
|
+
<description><![CDATA["Ingrained" attitudes among employers and fears about the loss of salary is preventing many men from taking paternity leave, a report has suggested.]]></description>
|
155
|
+
<link>http://www.bbc.co.uk/news/business-26710507#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
156
|
+
<pubDate>Mon, 24 Mar 2014 00:04:22 GMT</pubDate>
|
157
|
+
</item>
|
158
|
+
<item>
|
159
|
+
<title>Russian UK tourist spending dives</title>
|
160
|
+
<description><![CDATA[The UK's hotels and shops sees income from Russians fall 17% last month as visitor numbers fell back amid political unrest in Ukraine, says a report.]]></description>
|
161
|
+
<link>http://www.bbc.co.uk/news/business-26708117#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
162
|
+
<pubDate>Mon, 24 Mar 2014 00:02:47 GMT</pubDate>
|
163
|
+
</item>
|
164
|
+
<item>
|
165
|
+
<title>New push for energy firm probe</title>
|
166
|
+
<description><![CDATA[The consumer group Which? and the Federation of Small Businesses are asking regulators to investigate the "broken" energy market.]]></description>
|
167
|
+
<link>http://www.bbc.co.uk/news/business-26704915#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
168
|
+
<pubDate>Mon, 24 Mar 2014 00:00:12 GMT</pubDate>
|
169
|
+
</item>
|
170
|
+
<item>
|
171
|
+
<title>Russia invasion fears and NHS fraud - front pages</title>
|
172
|
+
<description><![CDATA[Tensions between Russia and the international community, NHS fraud claims and Samantha Cameron's onesie make headlines.]]></description>
|
173
|
+
<link>http://www.bbc.co.uk/news/blogs-the-papers-26710333#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
174
|
+
<pubDate>Sun, 23 Mar 2014 23:47:28 GMT</pubDate>
|
175
|
+
</item>
|
176
|
+
<item>
|
177
|
+
<title>US actor James Rebhorn dies aged 65</title>
|
178
|
+
<description><![CDATA[US character actor James Rebhorn, whose most recent role was in TV series Homeland, dies at the age of 65 after a long battle with skin cancer.]]></description>
|
179
|
+
<link>http://www.bbc.co.uk/news/entertainment-arts-26710547#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
180
|
+
<pubDate>Sun, 23 Mar 2014 23:30:12 GMT</pubDate>
|
181
|
+
</item>
|
182
|
+
<item>
|
183
|
+
<title>Poll gains for French National Front</title>
|
184
|
+
<description><![CDATA[France's far-right anti-immigration National Front party has made significant gains in local elections, according to early results and projections.]]></description>
|
185
|
+
<link>http://www.bbc.co.uk/news/world-europe-26707588#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
186
|
+
<pubDate>Sun, 23 Mar 2014 22:47:14 GMT</pubDate>
|
187
|
+
</item>
|
188
|
+
<item>
|
189
|
+
<title>Real Madrid 3-4 Barcelona</title>
|
190
|
+
<description><![CDATA[Lionel Messi's hat-trick helps Barcelona beat 10-man Real Madrid in a thrilling match to boost their La Liga title hopes.]]></description>
|
191
|
+
<link>http://www.bbc.co.uk/sport/0/football/26690210</link>
|
192
|
+
<pubDate>Sun, 23 Mar 2014 22:43:58 GMT</pubDate>
|
193
|
+
</item>
|
194
|
+
<item>
|
195
|
+
<title>Afghanistan's first spaceman returns home</title>
|
196
|
+
<description><![CDATA[From heroic spaceman to humble accountant]]></description>
|
197
|
+
<link>http://www.bbc.co.uk/news/magazine-26648270#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
198
|
+
<pubDate>Sun, 23 Mar 2014 21:47:21 GMT</pubDate>
|
199
|
+
</item>
|
200
|
+
<item>
|
201
|
+
<title>Venezuela probes protest abuses</title>
|
202
|
+
<description><![CDATA[Venezuela's attorney general, Luiza Ortega Diaz, says 60 cases of alleged human rights abuses during recent street protests are being investigated.]]></description>
|
203
|
+
<link>http://www.bbc.co.uk/news/world-latin-america-26709707#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
204
|
+
<pubDate>Sun, 23 Mar 2014 20:33:13 GMT</pubDate>
|
205
|
+
</item>
|
206
|
+
<item>
|
207
|
+
<title>Turkey downs Syrian military jet</title>
|
208
|
+
<description><![CDATA[Turkey shoots down a Syrian military jet it says violated its airspace, but Damascus condemns what it calls "blatant aggression".]]></description>
|
209
|
+
<link>http://www.bbc.co.uk/news/world-middle-east-26706417#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
210
|
+
<pubDate>Sun, 23 Mar 2014 20:07:21 GMT</pubDate>
|
211
|
+
</item>
|
212
|
+
<item>
|
213
|
+
<title>Player arrested over taxi damage</title>
|
214
|
+
<description><![CDATA[Former Newcastle United footballer Nile Ranger is arrested on suspicion of causing criminal damage to a taxi in Liverpool.]]></description>
|
215
|
+
<link>http://www.bbc.co.uk/news/uk-england-merseyside-26706371#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
216
|
+
<pubDate>Sun, 23 Mar 2014 19:26:31 GMT</pubDate>
|
217
|
+
</item>
|
218
|
+
<item>
|
219
|
+
<title>Murray eases past Lopez in Miami</title>
|
220
|
+
<description><![CDATA[Britain's Andy Murray beats Spaniard Feliciano Lopez in straight sets to reach the last 16 at the Sony Open in Miami.]]></description>
|
221
|
+
<link>http://www.bbc.co.uk/sport/0/tennis/26705843</link>
|
222
|
+
<pubDate>Sun, 23 Mar 2014 19:00:09 GMT</pubDate>
|
223
|
+
</item>
|
224
|
+
<item>
|
225
|
+
<title>Deadly Ebola reaches Guinea capital</title>
|
226
|
+
<description><![CDATA[An outbreak of the Ebola virus - which has already killed 59 people in Guinea - has reached the capital Conakry, the UN's children agency warns.]]></description>
|
227
|
+
<link>http://www.bbc.co.uk/news/world-africa-26701733#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
228
|
+
<pubDate>Sun, 23 Mar 2014 18:09:23 GMT</pubDate>
|
229
|
+
</item>
|
230
|
+
<item>
|
231
|
+
<title>Where now for Wenger and Arsenal?</title>
|
232
|
+
<description><![CDATA[Where does Arsenal manager Arsene Wenger go now after his 1,000th game in charge of the Gunners turned into a nightmare?]]></description>
|
233
|
+
<link>http://www.bbc.co.uk/sport/0/football/26705642</link>
|
234
|
+
<pubDate>Sun, 23 Mar 2014 17:39:50 GMT</pubDate>
|
235
|
+
</item>
|
236
|
+
<item>
|
237
|
+
<title>Three arrested over city sex attack</title>
|
238
|
+
<description><![CDATA[Three men are arrested following a serious sexual assault on a woman in north Belfast.]]></description>
|
239
|
+
<link>http://www.bbc.co.uk/news/uk-northern-ireland-26708351#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
240
|
+
<pubDate>Sun, 23 Mar 2014 17:12:00 GMT</pubDate>
|
241
|
+
</item>
|
242
|
+
<item>
|
243
|
+
<title>Broad fined for umpire criticism</title>
|
244
|
+
<description><![CDATA[England captain Stuart Broad is fined for questioning the umpires' decision to play on in a storm at the World Twenty20.]]></description>
|
245
|
+
<link>http://www.bbc.co.uk/sport/0/cricket/26708635</link>
|
246
|
+
<pubDate>Sun, 23 Mar 2014 17:04:19 GMT</pubDate>
|
247
|
+
</item>
|
248
|
+
<item>
|
249
|
+
<title>Dewani 'to be extradited on 7 April'</title>
|
250
|
+
<description><![CDATA[A man accused of arranging the murder of his wife on their honeymoon will be extradited to South Africa on 7 April, the government there says.]]></description>
|
251
|
+
<link>http://www.bbc.co.uk/news/uk-england-bristol-26705011#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
252
|
+
<pubDate>Sun, 23 Mar 2014 16:47:20 GMT</pubDate>
|
253
|
+
</item>
|
254
|
+
<item>
|
255
|
+
<title>Tottenham Hotspur 3-2 Southampton</title>
|
256
|
+
<description><![CDATA[Gylfi Sigurdsson comes off the bench to score a late winner for Tottenham against Southampton at White Hart Lane.]]></description>
|
257
|
+
<link>http://www.bbc.co.uk/sport/0/football/26599215</link>
|
258
|
+
<pubDate>Sun, 23 Mar 2014 16:12:52 GMT</pubDate>
|
259
|
+
</item>
|
260
|
+
<item>
|
261
|
+
<title>VIDEO: Kinnock name 'not always an advantage'</title>
|
262
|
+
<description><![CDATA[Stephen Kinnock, son of the former Labour leader Neil Kinnock, has been selected as the Labour candidate for Aberavon at the 2015 general election but says his family name does not necessarily work to his advantage.]]></description>
|
263
|
+
<link>http://www.bbc.co.uk/news/uk-wales-26706905#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
264
|
+
<pubDate>Sun, 23 Mar 2014 15:53:40 GMT</pubDate>
|
265
|
+
</item>
|
266
|
+
<item>
|
267
|
+
<title>Police probe 'tragic' toddler death</title>
|
268
|
+
<description><![CDATA[Police are investigating the "unexplained" death of a two-year-old boy after being called to what was described as a "serious incident" at a house.]]></description>
|
269
|
+
<link>http://www.bbc.co.uk/news/uk-scotland-edinburgh-east-fife-26705113#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
270
|
+
<pubDate>Sun, 23 Mar 2014 15:43:35 GMT</pubDate>
|
271
|
+
</item>
|
272
|
+
<item>
|
273
|
+
<title>Four killed in Kenya church attack</title>
|
274
|
+
<description><![CDATA[Four people are killed and a number are injured when gunmen open fire in a church near the Kenyan city of Mombasa, officials say.]]></description>
|
275
|
+
<link>http://www.bbc.co.uk/news/world-africa-26707242#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
276
|
+
<pubDate>Sun, 23 Mar 2014 14:55:49 GMT</pubDate>
|
277
|
+
</item>
|
278
|
+
<item>
|
279
|
+
<title>NHS criticisms 'worry for patients'</title>
|
280
|
+
<description><![CDATA[A nurses' leader says constant criticism of care in the NHS is "worrying for patients" and unfair to staff if claims are not investigated and substantiated.]]></description>
|
281
|
+
<link>http://www.bbc.co.uk/news/uk-wales-26705033#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
282
|
+
<pubDate>Sun, 23 Mar 2014 13:49:47 GMT</pubDate>
|
283
|
+
</item>
|
284
|
+
<item>
|
285
|
+
<title>VIDEO: Bez on his plan to stand as MP</title>
|
286
|
+
<description><![CDATA[Mark Berry, better known as Bez from Manchester band Happy Mondays, is planning to stand for parliament.]]></description>
|
287
|
+
<link>http://www.bbc.co.uk/news/uk-politics-26697322#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
288
|
+
<pubDate>Sun, 23 Mar 2014 13:24:06 GMT</pubDate>
|
289
|
+
</item>
|
290
|
+
<item>
|
291
|
+
<title>Blackrock outlines Yes vote 'risks'</title>
|
292
|
+
<description><![CDATA[The world's biggest investment fund manager says Scottish independence would bring "major uncertainties, costs and risks," for Scotland and the rest of the UK.]]></description>
|
293
|
+
<link>http://www.bbc.co.uk/news/uk-scotland-scotland-politics-26705466#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
294
|
+
<pubDate>Sun, 23 Mar 2014 13:15:31 GMT</pubDate>
|
295
|
+
</item>
|
296
|
+
<item>
|
297
|
+
<title>VIDEO: Obamas visit Great Wall of China</title>
|
298
|
+
<description><![CDATA[US First Lady Michelle Obama and her daughters visit the Great Wall of China on the fourth day of their week-long visit to the country.]]></description>
|
299
|
+
<link>http://www.bbc.co.uk/news/world-us-canada-26705887#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
300
|
+
<pubDate>Sun, 23 Mar 2014 12:35:17 GMT</pubDate>
|
301
|
+
</item>
|
302
|
+
<item>
|
303
|
+
<title>Man charged in river murder inquiry</title>
|
304
|
+
<description><![CDATA[A 28-year-old man is charged with murder after the body of a 45-year-old man was discovered partially submerged in a Cardiff river.]]></description>
|
305
|
+
<link>http://www.bbc.co.uk/news/uk-wales-south-east-wales-26706019#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa</link>
|
306
|
+
<pubDate>Sun, 23 Mar 2014 12:11:41 GMT</pubDate>
|
307
|
+
</item>
|
308
|
+
</channel>
|
309
|
+
</rss>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative "../lib/ausca"
|
2
|
+
|
3
|
+
rss = Ausca::RSS::Joiner.new({
|
4
|
+
:feeds =>
|
5
|
+
# http://www.topix.com/rss/popular/topstories
|
6
|
+
# http://feeds.bbci.co.uk/news/rss.xml
|
7
|
+
# http://www.nasa.gov/rss/lg_image_of_the_day.rss
|
8
|
+
[ "http://www.topix.com/rss/popular/topstories", "http://feeds.bbci.co.uk/news/rss.xml" ],
|
9
|
+
:max_items => 50,
|
10
|
+
:output_path => "feed.rss",
|
11
|
+
|
12
|
+
# RSS variables
|
13
|
+
:version => "2.0",
|
14
|
+
:title => "test title",
|
15
|
+
:description => "test description",
|
16
|
+
:link => "test link",
|
17
|
+
:author => "test author"
|
18
|
+
})
|
19
|
+
rss.generate
|
metadata
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ausca
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kam Low
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Ausca is a collection of automation utilities that you can use to fast-track
|
42
|
+
the development of your online empire.
|
43
|
+
email:
|
44
|
+
- hello@sourcey.com
|
45
|
+
executables: []
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- .gitignore
|
50
|
+
- Gemfile
|
51
|
+
- LICENSE.txt
|
52
|
+
- README.md
|
53
|
+
- Rakefile
|
54
|
+
- ausca.gemspec
|
55
|
+
- lib/ausca.rb
|
56
|
+
- lib/ausca/rss/joiner.rb
|
57
|
+
- lib/ausca/rss/util.rb
|
58
|
+
- lib/ausca/twitter/bot.rb
|
59
|
+
- lib/ausca/util.rb
|
60
|
+
- lib/ausca/version.rb
|
61
|
+
- tests/feed.rss
|
62
|
+
- tests/feed_joiner.rb
|
63
|
+
homepage: http://ausca.com
|
64
|
+
licenses:
|
65
|
+
- MIT
|
66
|
+
metadata: {}
|
67
|
+
post_install_message:
|
68
|
+
rdoc_options: []
|
69
|
+
require_paths:
|
70
|
+
- lib
|
71
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ! '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
requirements: []
|
82
|
+
rubyforge_project:
|
83
|
+
rubygems_version: 2.1.9
|
84
|
+
signing_key:
|
85
|
+
specification_version: 4
|
86
|
+
summary: Automation utilities and bots.
|
87
|
+
test_files: []
|