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 ADDED
@@ -0,0 +1,3 @@
1
+ .bundle/
2
+ vendor/
3
+ pkg/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in uniq-frd.gemspec
4
+ gemspec
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
@@ -0,0 +1,5 @@
1
+ module Uniq
2
+ module RedProcess
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
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: []