Initial commit

This commit is contained in:
Anna Rose 2016-04-11 03:52:26 -04:00
commit 321d770263
4 changed files with 63 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
config.yml

3
Gemfile Normal file
View File

@ -0,0 +1,3 @@
source 'https://rubygems.org'
gem 'pinboard'

16
Gemfile.lock Normal file
View File

@ -0,0 +1,16 @@
GEM
remote: https://rubygems.org/
specs:
httparty (0.11.0)
multi_json (~> 1.0)
multi_xml (>= 0.5.2)
multi_json (1.11.2)
multi_xml (0.5.5)
pinboard (1.0.0)
httparty (= 0.11.0)
PLATFORMS
ruby
DEPENDENCIES
pinboard

43
serialboard.rb Executable file
View File

@ -0,0 +1,43 @@
#!/usr/bin/env ruby
#
# Use pinboard to keep your place in web serials.
require 'pinboard'
# Set up metrics
metric = {}
metric[:posts] = 0
metric[:posts_deleted] = 0
# Initialize the config
config = YAML.load_file('config.yml')
config['active_tag_name'] ||= 'serial'
config['deleted_tag_name'] ||= 'serial_deleted'
if config['api_token'].nil?
puts "Couldn't find API token. Please see the Configuration section of Readme.md."
return
end
# Get our data from the API
api = Pinboard.new(token: config['api_token'])
serial_posts = api.posts(tag: config['active_tag_name'])
serial_posts.sort! { |x,y| y.time <=> x.time }
domains = []
serial_posts.each do |post|
metric[:posts] += 1
domain = post.href.sub(/^https?:\/\/(.*?)\/.*$/, "\\1")
if !domains.include? domain
# Record that we've seen the domain now.
domains.push domain
else
post.tag.delete config['active_tag_name']
post.tag.push config['deleted_tag_name']
post.shared = false
api.add post.api_hash(true)
metric[:posts_deleted] += 1
end
end
puts "#{metric[:posts]} posts found. #{metric[:posts_deleted]} posts deleted."