uniq-red-process 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +19 -0
- data/Rakefile +1 -0
- data/bin/uniq-red-process +94 -0
- data/lib/uniq-red-process.rb +0 -0
- data/lib/uniq/red_process/version.rb +5 -0
- data/process_red.rb +94 -0
- data/uniq-red-process.gemspec +30 -0
- metadata +87 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
GIT
|
2
|
+
remote: git://github.com/SkyWriter/GoogleReaderAPI.git
|
3
|
+
revision: bca91aea4ce45ffac90df714eee4c475bc2c1b18
|
4
|
+
specs:
|
5
|
+
GoogleReaderApi (0.3.6)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
addressable (2.2.8)
|
11
|
+
launchy (2.1.0)
|
12
|
+
addressable (~> 2.2.6)
|
13
|
+
|
14
|
+
PLATFORMS
|
15
|
+
ruby
|
16
|
+
|
17
|
+
DEPENDENCIES
|
18
|
+
GoogleReaderApi!
|
19
|
+
launchy
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
@@ -0,0 +1,94 @@
|
|
1
|
+
#!ruby
|
2
|
+
|
3
|
+
require 'launchy'
|
4
|
+
require 'google_reader_api_uniq'
|
5
|
+
require 'readline'
|
6
|
+
|
7
|
+
begin
|
8
|
+
require File.expand_path('~/.process_red')
|
9
|
+
raise "Undefined credetials" unless CREDENTIALS
|
10
|
+
rescue Exception => ex
|
11
|
+
puts "Please define your Google Reader credentials in the ~/.process_red file:"
|
12
|
+
puts "CREDENTIALS = { email: 'user@gmail.com', password: 'p4assword' }"
|
13
|
+
exit
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
HOST = "red.uniqsys.ru"
|
18
|
+
BASE = "https://#{HOST}"
|
19
|
+
|
20
|
+
def user
|
21
|
+
@user ||= GoogleReaderApi::User.new CREDENTIALS
|
22
|
+
rescue GoogleLogin::ClientLogin::BadAuthentication
|
23
|
+
puts "Invalid Google Reader username and/or password, specified in the configuration file."
|
24
|
+
puts "Cowardly refusing to continue."
|
25
|
+
exit
|
26
|
+
end
|
27
|
+
|
28
|
+
def red_feed
|
29
|
+
@red_feed ||= user.feeds.find {|feed| feed.url.include?(HOST) }
|
30
|
+
end
|
31
|
+
|
32
|
+
def new_red_feed_items
|
33
|
+
red_feed.unread_items(red_feed.unread_count)
|
34
|
+
end
|
35
|
+
|
36
|
+
def issues_entries_hash
|
37
|
+
@issues_entries_hash ||= { }.tap do |entries_hash|
|
38
|
+
new_red_feed_items.each do |entry|
|
39
|
+
if entry.entry.link.to_s =~ /issues\/(\d+)/m
|
40
|
+
entries_hash[$1.to_i] ||= [ ]
|
41
|
+
entries_hash[$1.to_i] << entry
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def mark_issue_read(issue_no)
|
48
|
+
issues_entries_hash[issue_no.to_i].each do |entry|
|
49
|
+
entry.toggle_read
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def issue_updates_count(issue_no)
|
54
|
+
return 0 unless issues_entries_hash[issue_no.to_i].kind_of?(Array)
|
55
|
+
issues_entries_hash[issue_no.to_i].size
|
56
|
+
end
|
57
|
+
|
58
|
+
def issue_url(issue_no)
|
59
|
+
"#{BASE}/issues/#{issue_no}"
|
60
|
+
end
|
61
|
+
|
62
|
+
def read_next_issue
|
63
|
+
next_issue_no = issues_entries_hash.to_a.flatten.first
|
64
|
+
Launchy.open issue_url(next_issue_no)
|
65
|
+
return next_issue_no
|
66
|
+
end
|
67
|
+
|
68
|
+
puts "Preloading issues..."
|
69
|
+
issues_entries_hash
|
70
|
+
puts "Done!"
|
71
|
+
puts ""
|
72
|
+
puts "Try: n - to read the next issue"
|
73
|
+
|
74
|
+
cmd = ''
|
75
|
+
while cmd != 'q'
|
76
|
+
if cmd == 'n'
|
77
|
+
issue_no = read_next_issue
|
78
|
+
puts "Opening #{issue_no}..."
|
79
|
+
should_mark_read = Readline.readline('Mark as read? [Yes/No/Skip] ')
|
80
|
+
if should_mark_read == 'y'
|
81
|
+
puts "Marking #{issue_updates_count(issue_no)} update(s) of the ##{issue_no} as read"
|
82
|
+
mark_issue_read(issue_no)
|
83
|
+
puts "Marked!"
|
84
|
+
elsif should_mark_read == 's'
|
85
|
+
puts "OK, skipping it, you hesitating bastard"
|
86
|
+
issues_entries_hash.delete(issue_no)
|
87
|
+
else
|
88
|
+
puts "NOT marking as read"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
puts ""
|
92
|
+
cmd = Readline.readline('> ', true)
|
93
|
+
end
|
94
|
+
|
File without changes
|
data/process_red.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
require "bundler"
|
2
|
+
Bundler.require
|
3
|
+
|
4
|
+
require 'google_reader_api'
|
5
|
+
require 'readline'
|
6
|
+
|
7
|
+
begin
|
8
|
+
require File.expand_path('~/.process_red')
|
9
|
+
raise "Undefined credetials" unless CREDENTIALS
|
10
|
+
rescue Exception => ex
|
11
|
+
puts "Please define your Google Reader credentials in the ~/.process_red file:"
|
12
|
+
puts "CREDENTIALS = { email: 'user@gmail.com', password: 'p4assword' }"
|
13
|
+
exit
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
HOST = "red.uniqsys.ru"
|
18
|
+
BASE = "https://#{HOST}"
|
19
|
+
|
20
|
+
def user
|
21
|
+
@user ||= GoogleReaderApi::User.new CREDENTIALS
|
22
|
+
rescue GoogleLogin::ClientLogin::BadAuthentication
|
23
|
+
puts "Invalid Google Reader username and/or password, specified in the configuration file."
|
24
|
+
puts "Cowardly refusing to continue."
|
25
|
+
exit
|
26
|
+
end
|
27
|
+
|
28
|
+
def red_feed
|
29
|
+
@red_feed ||= user.feeds.find {|feed| feed.url.include?(HOST) }
|
30
|
+
end
|
31
|
+
|
32
|
+
def new_red_feed_items
|
33
|
+
red_feed.unread_items(red_feed.unread_count)
|
34
|
+
end
|
35
|
+
|
36
|
+
def issues_entries_hash
|
37
|
+
@issues_entries_hash ||= { }.tap do |entries_hash|
|
38
|
+
new_red_feed_items.each do |entry|
|
39
|
+
if entry.entry.link.to_s =~ /issues\/(\d+)/m
|
40
|
+
entries_hash[$1.to_i] ||= [ ]
|
41
|
+
entries_hash[$1.to_i] << entry
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def mark_issue_read(issue_no)
|
48
|
+
issues_entries_hash[issue_no.to_i].each do |entry|
|
49
|
+
entry.toggle_read
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def issue_updates_count(issue_no)
|
54
|
+
return 0 unless issues_entries_hash[issue_no.to_i].kind_of?(Array)
|
55
|
+
issues_entries_hash[issue_no.to_i].size
|
56
|
+
end
|
57
|
+
|
58
|
+
def issue_url(issue_no)
|
59
|
+
"#{BASE}/issues/#{issue_no}"
|
60
|
+
end
|
61
|
+
|
62
|
+
def read_next_issue
|
63
|
+
next_issue_no = issues_entries_hash.to_a.flatten.first
|
64
|
+
Launchy.open issue_url(next_issue_no)
|
65
|
+
return next_issue_no
|
66
|
+
end
|
67
|
+
|
68
|
+
puts "Preloading issues..."
|
69
|
+
issues_entries_hash
|
70
|
+
puts "Done!"
|
71
|
+
puts ""
|
72
|
+
puts "Try: n - to read the next issue"
|
73
|
+
|
74
|
+
cmd = ''
|
75
|
+
while cmd != 'q'
|
76
|
+
if cmd == 'n'
|
77
|
+
issue_no = read_next_issue
|
78
|
+
puts "Opening #{issue_no}..."
|
79
|
+
should_mark_read = Readline.readline('Mark as read? [Yes/No/Skip] ')
|
80
|
+
if should_mark_read == 'y'
|
81
|
+
puts "Marking #{issue_updates_count(issue_no)} update(s) of the ##{issue_no} as read"
|
82
|
+
mark_issue_read(issue_no)
|
83
|
+
puts "Marked!"
|
84
|
+
elsif should_mark_read == 's'
|
85
|
+
puts "OK, skipping it, you hesitating bastard"
|
86
|
+
issues_entries_hash.delete(issue_no)
|
87
|
+
else
|
88
|
+
puts "NOT marking as read"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
puts ""
|
92
|
+
cmd = Readline.readline('> ', true)
|
93
|
+
end
|
94
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "uniq/red_process/version"
|
4
|
+
|
5
|
+
require 'bundler'
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = "uniq-red-process"
|
9
|
+
s.version = Uniq::RedProcess::VERSION
|
10
|
+
s.authors = ["Ivan Kasatenko"]
|
11
|
+
s.email = ["sky.31338@gmail.com"]
|
12
|
+
s.homepage = "http://uniqsystems.ru/"
|
13
|
+
s.summary = %q{UNIQ Systems Google Reader Red processor}
|
14
|
+
s.description = %q{UNIQ Systems Google Reader Red processor}
|
15
|
+
|
16
|
+
s.rubyforge_project = "uniq-red-process"
|
17
|
+
|
18
|
+
s.files = `git ls-files`.split("\n").map { |file|
|
19
|
+
file.gsub('"', '').gsub(/\\(\d\d\d)/) { |match|
|
20
|
+
[($1[0].to_i*64+$1[1].to_i*8+$1[2].to_i)].pack('c')
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
25
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
26
|
+
s.require_paths = ["lib"]
|
27
|
+
|
28
|
+
s.add_dependency('GoogleReaderApiUniq', '~> 0.3.8')
|
29
|
+
s.add_dependency('launchy', '~> 2.1')
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: uniq-red-process
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Ivan Kasatenko
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-06-05 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: GoogleReaderApiUniq
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.3.8
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.3.8
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: launchy
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '2.1'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '2.1'
|
46
|
+
description: UNIQ Systems Google Reader Red processor
|
47
|
+
email:
|
48
|
+
- sky.31338@gmail.com
|
49
|
+
executables:
|
50
|
+
- uniq-red-process
|
51
|
+
extensions: []
|
52
|
+
extra_rdoc_files: []
|
53
|
+
files:
|
54
|
+
- .gitignore
|
55
|
+
- Gemfile
|
56
|
+
- Gemfile.lock
|
57
|
+
- Rakefile
|
58
|
+
- bin/uniq-red-process
|
59
|
+
- lib/uniq-red-process.rb
|
60
|
+
- lib/uniq/red_process/version.rb
|
61
|
+
- process_red.rb
|
62
|
+
- uniq-red-process.gemspec
|
63
|
+
homepage: http://uniqsystems.ru/
|
64
|
+
licenses: []
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options: []
|
67
|
+
require_paths:
|
68
|
+
- lib
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
77
|
+
requirements:
|
78
|
+
- - ! '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
requirements: []
|
82
|
+
rubyforge_project: uniq-red-process
|
83
|
+
rubygems_version: 1.8.24
|
84
|
+
signing_key:
|
85
|
+
specification_version: 3
|
86
|
+
summary: UNIQ Systems Google Reader Red processor
|
87
|
+
test_files: []
|