feedlrop 0.1.23 → 0.1.24

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 66b1fa52387eda08ee59e2ba53f4c399aae65c38
4
- data.tar.gz: 9b47154fb2ff63f5325382945bc554becbebcb4d
2
+ SHA256:
3
+ metadata.gz: 78db68bfb40f6b07770276e3f479b79e30fa8f8fe710d71a9c91e2ed1e576133
4
+ data.tar.gz: '0870817dffecf5fb13af7abdb09ee76fdacedd242c5cf8eb87551cff02cd6774'
5
5
  SHA512:
6
- metadata.gz: 4c7c4a7ccce9de4cb3eb19e7d78722a3f20c9a4aed70b089c428c98b14d0fcde2882e4f1abc201f7df86c4bc8d4e8ff8cfa0c3ce0f0ee065c203e4ae10576e31
7
- data.tar.gz: 101e3abe3651bd871457a40d45680909cd1a6a76b50d814114a0c445397d74a7188f87c592ec0537ad104a3bb4f2886e96ab54275dc0e1f4b631a1f2624b0b95
6
+ metadata.gz: 29bce63e36709640c0faa8a813fde0735aba01848c04fcd6c26ca95841dcce7e01c16847e6713b1fd73d2aebc6ea4fa91c20aea21896f06fe4593e5e4c982107
7
+ data.tar.gz: 4c9ffd2a625231e5c8da879e2bd978738405700f1e1a6fca4c6a0213608fbbf0a02f57732caa713987b35e6e74182b592d67d9fd9976783ff09fa26aaa26946d
data/.gitignore CHANGED
@@ -14,4 +14,19 @@
14
14
  /memo/
15
15
  /TAGS
16
16
  /*.bat
17
+ /OLD-DATA
18
+ /exe/get_access*
19
+ *~
20
+ xdoc.txt
21
+ xdoc2.txt
22
+ /logs
23
+ /vendor
24
+ /output
25
+ /lib/feedlrop/dbutil/dbrelation.rb
26
+ /exe2
27
+ a.rb
28
+ f.sh
29
+ lib/dbrelation.rb
30
+ /pstore*/
31
+ /lib/dbacrecord.rb
17
32
 
data/.rubocop.yml ADDED
@@ -0,0 +1,8 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ require:
4
+ - rubocop-rake
5
+ - rubocop-rspec
6
+
7
+ AllCops:
8
+ NewCops: enable
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,73 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2022-09-22 09:32:47 UTC using RuboCop version 1.36.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ # Configuration parameters: Include.
11
+ # Include: **/*.gemspec
12
+ Gemspec/RequiredRubyVersion:
13
+ Exclude:
14
+ # - 'feedlrop.gemspec'
15
+
16
+ # Offense count: 1
17
+ # Configuration parameters: AllowSafeAssignment.
18
+ Lint/AssignmentInCondition:
19
+ Exclude:
20
+ # - 'exe/feedlrop'
21
+
22
+ # Offense count: 4
23
+ Lint/UselessAssignment:
24
+ Exclude:
25
+ # - 'exe/feedlrop'
26
+
27
+ # Offense count: 3
28
+ # Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods, CountRepeatedAttributes.
29
+ Metrics/AbcSize:
30
+ Max: 24
31
+
32
+ # Offense count: 4
33
+ # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods.
34
+ Metrics/MethodLength:
35
+ Max: 25
36
+
37
+ # Offense count: 3
38
+ Naming/AccessorMethodName:
39
+ Exclude:
40
+ # - 'lib/feedlrop/feedlrop.rb'
41
+
42
+ # Offense count: 3
43
+ # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
44
+ # AllowedNames: as, at, by, db, id, in, io, ip, of, on, os, pp, to
45
+ Naming/MethodParameterName:
46
+ Exclude:
47
+ # - 'exe/feedlrop'
48
+ # - 'lib/feedlrop/feedlrop.rb'
49
+
50
+ # Offense count: 5
51
+ # Configuration parameters: AllowedConstants.
52
+ Style/Documentation:
53
+ Exclude:
54
+ - 'spec/**/*'
55
+ - 'test/**/*'
56
+ - 'db/migrate/010_create_countdatetime.rb'
57
+ - 'db/migrate/020_create_evnb.rb'
58
+ - 'db/migrate/030_create_ennblist.rb'
59
+ - 'db/migrate/040_create_invalidennblist.rb'
60
+ - 'db/migrate/050_create_currentennblist.rb'
61
+
62
+ # Offense count: 1
63
+ # Configuration parameters: MinBodyLength, AllowConsecutiveConditionals.
64
+ Style/GuardClause:
65
+ Exclude:
66
+ - 'feedlrop.gemspec'
67
+
68
+ # Offense count: 1
69
+ # This cop supports safe autocorrection (--autocorrect).
70
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns, IgnoredPatterns.
71
+ # URISchemes: http, https
72
+ Layout/LineLength:
73
+ Max: 163
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.6.10
data/Gemfile CHANGED
@@ -1,4 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in feedlrop.gemspec
4
6
  gemspec
7
+ gem 'awesome_print'
8
+ gem 'feedlr'
9
+ # gem "faraday"
10
+
11
+ gem "arxutils_sqlite3"
12
+ # gem 'arxutils_sqlite3', path: '../arxutils_sqlite3_3'
13
+ gem "simpleoptparse"
14
+ gem 'ykxutils'
15
+
16
+ gem 'rake', '~> 13.0'
17
+ gem 'rspec', '~> 3.0'
18
+
19
+ gem 'rubocop', '~> 1.7'
20
+ gem 'rubocop-rake'
21
+ gem 'rubocop-rspec'
22
+
23
+ group :development do
24
+ gem 'yard'
25
+ end
data/Rakefile CHANGED
@@ -1,6 +1,22 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
2
+
3
+ require 'feedlrop'
4
+ require 'arxutils_sqlite3/rake_task'
5
+
6
+ require 'bundler/gem_tasks'
7
+ require 'rspec/core/rake_task'
3
8
 
4
9
  RSpec::Core::RakeTask.new(:spec)
5
10
 
6
- task :default => :spec
11
+ require 'rubocop/rake_task'
12
+
13
+ RuboCop::RakeTask.new
14
+
15
+ # task :default => :spec
16
+ desc 'Feedlr related operation'
17
+ task :feedlrop do
18
+ sh 'bundle exec feedlrop'
19
+ end
20
+
21
+ desc 'Feedlr related operation'
22
+ task default: %i[spec rubocop]
data/bin/console CHANGED
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "feedlrop"
4
+ require 'bundler/setup'
5
+ require 'feedlrop'
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +11,5 @@ require "feedlrop"
10
11
  # require "pry"
11
12
  # Pry.start
12
13
 
13
- require "irb"
14
+ require 'irb'
14
15
  IRB.start
data/exe/feedlrop CHANGED
@@ -1,26 +1,54 @@
1
1
  #!/usr/bin/env ruby
2
-
3
- require 'arxutils'
2
+ # frozen_string_literal: true
4
3
  require 'feedlrop'
4
+ require "simpleoptparse"
5
+ require 'yaml'
6
+
7
+ token, user_id, hash = Feedlrop::Cli.setup
8
+
9
+ banner = "Usage: bundle exec feedlrop --cmd=(lp|lpd|r)"
10
+ opts = {}
11
+ Simpleoptparse::Simpleoptparse.parse(ARGV, opts, banner, Arxutils_Sqlite3::VERSION, nil) do |parser|
12
+ parser.on("--cmd X", %w[lp lpd r]) { |x| opts["cmd"] = x }
13
+ end
5
14
 
6
- dbconfig = Arxutils::Dbutil::DBCONFIG_MYSQL
7
- dbconfig = Arxutils::Dbutil::DBCONFIG_SQLITE3
15
+ flop = Feedlrop::Feedlrop.new(
16
+ token,
17
+ hash
18
+ )
8
19
 
9
- token = ARGV[0]
10
- hs = {
11
- "db_dir" => Arxutils::Dbutil::DB_DIR,
12
- "migrate_dir" => Arxutils::Dbutil::MIGRATE_DIR,
13
- "config_dir" => Arxutils::Dbutil::CONFIG_DIR,
14
- "dbconfig" => dbconfig,
15
- "log_fname" => Arxutils::Dbutil::DATABASELOG,
16
- }
20
+ cmd = opts["cmd"]
21
+ # way = :REMOTE
22
+ # way = :LOCAL
23
+ # way = :LOCAL_PSTORE
24
+ # way = :LOCAL_PSTORE_AND_DB
25
+ # way = :REMOTE
17
26
 
18
- fo = Feedlrop::Feedlrop.new(
19
- token ,
20
- :db,
21
- hs
22
- )
23
- fo.csv_open
24
- fo.get_all_unread_count
25
- fo.csv_close
27
+ ERROR_CODE_INVALID_CMD = 100
26
28
 
29
+ case cmd
30
+ when "lp"
31
+ # :LOCAL_PSTORE
32
+ # puts "way=#{way}"
33
+ # exit
34
+ flop.check_backup
35
+ # exit
36
+ when "lpd"
37
+ # :LOCAL_PSTORE_AND_DB
38
+ # puts "way=#{way}"
39
+ # exit
40
+ # flop.check_backup
41
+ flop.csv_to_db
42
+ # exit
43
+ when "r"
44
+ # :REMOTE
45
+ puts "cmd=#{cmd}"
46
+ # exit
47
+ flop.csv_open(hash['output_dir'])
48
+ ret = flop.all_unread_count
49
+ puts "all_unread_count=#{ret.size}"
50
+ flop.csv_close
51
+ else
52
+ puts "cmd=#{cmd}"
53
+ exit ERROR_CODE_INVALID_CMD
54
+ end
data/f.bat CHANGED
File without changes
data/feedlrop.gemspec CHANGED
@@ -1,40 +1,46 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'feedlrop/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "feedlrop"
8
+ spec.name = 'feedlrop'
8
9
  spec.version = Feedlrop::VERSION
9
- spec.authors = ["yasuo kominami"]
10
- spec.email = ["ykominami@gmail.com"]
11
-
12
- spec.summary = %q{utility functions for Feedly API.}
13
- spec.description = %q{utility functions for Feedly API.}
14
- spec.homepage = ""
15
-
16
- spec.license = "MIT"
10
+ spec.authors = ['yasuo kominami']
11
+ spec.email = ['ykominami@gmail.com']
12
+
13
+ spec.summary = 'utility functions for Feedly API.'
14
+ spec.description = 'utility functions for Feedly API.'
15
+ spec.homepage = ''
16
+ spec.license = 'MIT'
17
+ spec.required_ruby_version = '>= 2.6.10'
18
+
17
19
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
20
  # delete this section to allow pushing this gem to any host.
19
21
  if spec.respond_to?(:metadata)
20
- # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
22
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
23
  else
22
- raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
24
+ raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
23
25
  end
24
26
 
25
27
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
- spec.bindir = "exe"
28
+ spec.bindir = 'exe'
27
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
29
-
30
- spec.add_dependency "feedlr"
31
-
32
- spec.add_runtime_dependency "activerecord"
33
- spec.add_runtime_dependency "sqlite3"
34
- spec.add_runtime_dependency "arxutils", "~> 0.1.10"
35
- spec.add_runtime_dependency "awesome_print"
36
-
37
- spec.add_development_dependency "bundler", "~> 1.10"
38
- spec.add_development_dependency "rake", "~> 10.0"
39
- spec.add_development_dependency "rspec"
30
+ spec.require_paths = ['lib']
31
+
32
+ spec.add_dependency 'feedlr'
33
+ spec.add_runtime_dependency 'awesome_print'
34
+ spec.add_runtime_dependency 'faraday'
35
+
36
+ # spec.add_runtime_dependency "activerecord" , "~> 4.2"
37
+ # spec.add_runtime_dependency "sqlite3"
38
+ # spec.add_runtime_dependency "mysql2" , "~> 0.4.1"
39
+ # spec.add_runtime_dependency "arxutils", "~> 0.1.10"
40
+ spec.add_runtime_dependency 'arxutils_sqlite3'
41
+
42
+ spec.add_development_dependency 'bundler'
43
+ spec.add_development_dependency 'rake'
44
+ spec.add_development_dependency 'rspec'
45
+ spec.metadata['rubygems_mfa_required'] = 'true'
40
46
  end
@@ -0,0 +1,26 @@
1
+ require "arxutils_sqlite3"
2
+
3
+ module Feedlrop
4
+ class Cli
5
+ def self.setup
6
+ token = ENV.fetch("FEEDLY_DEVELOPER_ACCESS_TOKEN", nil)
7
+ user_id = ENV.fetch("FEEDLER_USE_ID", nil)
8
+ env = ENV.fetch("ENV", nil)
9
+ # env ||= "development"
10
+ env ||= "production"
11
+
12
+ hash = {
13
+ 'db_dir' => Arxutils_Sqlite3::Config::DB_DIR,
14
+ 'migrate_dir' => Arxutils_Sqlite3::Config::MIGRATE_DIR,
15
+ 'config_dir' => Arxutils_Sqlite3::Config::CONFIG_DIR,
16
+ "dbconfig" => Arxutils_Sqlite3::Config::DBCONFIG_SQLITE3,
17
+ 'env' => env,
18
+ 'log_fname' => Arxutils_Sqlite3::Config::DATABASELOG,
19
+ 'output_dir' => ::Feedlrop::OUTPUT_DIR,
20
+ 'pstore_dir' => ::Feedlrop::PSTORE_DIR,
21
+ }
22
+
23
+ [token, user_id, hash]
24
+ end
25
+ end
26
+ end
@@ -1,36 +1,32 @@
1
- # -*- coding: utf-8 -*-
2
- require 'active_record'
3
- require 'forwardable'
1
+ # frozen_string_literal: true
4
2
  require 'pp'
5
3
 
6
4
  module Feedlrop
5
+ # DB操作用ユーティリティモジュール
7
6
  module Dbutil
8
- class Unreadfeed < ActiveRecord::Base
9
- end
10
-
11
- class Countdatetime < ActiveRecord::Base
12
- end
13
-
7
+ # Feedlrに関する情報用DB操作クラス
14
8
  class FeedlropMgr
15
- extend Forwardable
16
-
9
+ # 初期化
17
10
  def initialize(register_time)
18
11
  @register_time = register_time
19
- @ct = Countdatetime.create( countdatetime: @register_time )
12
+ @ct = Dbutil::Countdatetime.create(countdatetime: @register_time)
20
13
  end
21
14
 
22
- def add( category, url , unread_count )
15
+ # 指定フィードの未読情報登録
16
+ def add(category, url, unread_count)
23
17
  begin
24
- uf = Unreadfeed.create( time_id: @ct.id , category: category , url: url , unread_count: unread_count , start_datetime: @register_time )
25
- rescue => ex
26
- p ex.class
27
- p ex.message
28
- pp ex.backtrace
18
+ uf = Dbutil::Unreadfeed.create(time_id: @ct.id, category: category, url: url, unread_count: unread_count,
19
+ start_datetime: @register_time)
20
+ rescue StandardError => e
21
+ p e.class
22
+ p e.message
23
+ pp e.backtrace
29
24
  end
30
25
 
31
26
  uf
32
27
  end
33
28
 
29
+ # IDで指定したフィードの未読情報取得
34
30
  def find(id)
35
31
  Unreadfeed.find(id)
36
32
  end
@@ -1,8 +1,4 @@
1
- # -*- coding: utf-8 -*-
2
- require 'feedlrop/dbutil/dbmgr'
3
- require 'feedlrop/dbutil/feedlropmgr'
1
+ # frozen_string_literal: true
4
2
 
5
- module Feedlrop
6
- module Dbutil
7
- end
8
- end
3
+ require_relative 'dbutil/feedlropmgr'
4
+ # require 'feedlrop/dbutil/dbrelation'
@@ -1,77 +1,183 @@
1
- # -*- coding: utf-8 -*-
2
- require 'arxutils'
3
- require 'arxutils/store'
1
+ # frozen_string_literal: true
2
+
3
+ require 'arxutils_sqlite3'
4
4
  require 'csv'
5
5
  require 'pp'
6
6
  require 'feedlr'
7
7
  require 'awesome_print'
8
+ require 'fileutils'
9
+ require 'ykxutils'
8
10
 
9
11
  module Feedlrop
12
+ # Feedlr操作クラス
10
13
  class Feedlrop
11
-
12
- def initialize( token , kind, hs )
14
+ attr_reader :categories, :profile
15
+
16
+ # 初期化
17
+ def initialize(token, hash)
18
+ # OAuthアクセストークン
13
19
  @oauth_access_token = token
14
- @dbmgr = Arxutils::Store.init(kind , hs ){ | register_time |
15
- Dbutil::DbMgr.new( register_time )
16
- }
17
-
18
- @client = Feedlr::Client.new(sandbox: false , oauth_access_token: @oauth_access_token)
20
+
21
+ db_dir = hash['db_dir']
22
+ config_dir = hash['config_dir']
23
+ env = hash['env']
24
+ dbconfig = hash['dbconfig']
25
+ @output_dir = hash['output_dir']
26
+ @pstore_dir = hash['pstore_dir']
27
+
28
+ dbconfig_path = Arxutils_Sqlite3::Util.make_dbconfig_path(config_dir, dbconfig)
29
+ log_path = Arxutils_Sqlite3::Util.make_log_path(db_dir, dbconfig)
30
+ dbconnect = Arxutils_Sqlite3::Dbutil::Dbconnect.new(
31
+ dbconfig_path,
32
+ env,
33
+ log_path
34
+ )
35
+ register_time = dbconnect.connect
36
+ # register_time = Arxutils::Dbutil::Dbconnect.init( hs["db_dir"], hs["migrate_dir"] , hs["config_dir"], hs["dbconfig"] , hs["env"] , hs["log_fname"] , opts )
37
+ # 保存用DBマネージャ
38
+ # @dbmgr = ::Feedlrop::Dbutil::FeedlropMgr.new(register_time)
39
+ @dbmgr = Dbutil::FeedlropMgr.new(register_time)
40
+ # Feedlrクライアント
41
+ @client = Feedlr::Client.new(sandbox: false, oauth_access_token: @oauth_access_token)
42
+ # ユーザプロファイル
19
43
  @profile = @client.user_profile
44
+ # カテゴリ
20
45
  @categories = @client.user_categories
46
+
47
+ @pstorex = Ykxutils::Pstorex.new(@pstore_dir)
48
+ @pstore_key = ::Feedlrop::PSTORE_KEY
49
+ @pstore_default_value = []
50
+ load_pstore
51
+ end
52
+
53
+ # psotreからの取得
54
+ def pstore_fetch(key, default_value)
55
+ @pstorex.fetch(key, default_value)
21
56
  end
22
57
 
23
- def get_output_file( ext )
58
+ # pstore更新
59
+ def pstore_store(key, value)
60
+ @pstorex.store(key, value)
61
+ end
62
+
63
+ # DBへ登録
64
+ def dbmgr_add(category_id, url, count)
65
+ @dbmgr.add(category_id, url, count)
66
+ end
67
+
68
+ # 出力ファイル取得
69
+ def get_output_file(parent_dir, ext)
24
70
  n = Time.now
25
- fname = %Q!#{n.year}-#{n.month}-#{n.day}-#{n.hour}-#{n.min}-#{n.sec}.#{ext}!
26
- File.open( fname , "w")
71
+ fname = %(#{n.year}-#{n.month}-#{n.day}-#{n.hour}-#{n.min}-#{n.sec}.#{ext})
72
+ FileUtils.mkdir_p(parent_dir)
73
+ outfname = File.join(parent_dir, fname)
74
+ File.open(outfname, 'w')
27
75
  end
28
76
 
29
- def get_all_unread_count
30
- @categories.each do | x |
77
+ # 各フィードの未読数を全て取得
78
+ def all_unread_count
79
+ @categories.each do |x|
80
+ if x.instance_of?(Array)
81
+ _err, error_code = x
82
+ next
83
+ end
31
84
  f = true
32
- if x.class != String
33
- category_id = x.id.split('/')[-1]
34
- else
85
+ if x.instance_of?(String)
35
86
  f = false
87
+ else
88
+ category_id = x.id.split('/')[-1]
36
89
  end
37
90
  next unless f
38
91
 
39
- en = @client.user_unread_counts( {:streamId => x.id } )
92
+ en = @client.user_unread_counts({ streamId: x.id })
93
+ next if en.nil?
40
94
  en.unreadcounts.each do |y|
41
- if y.id =~ /^feed\/(.+)/
42
- url = $1
43
- csv_add( category_id , url , y[:count] )
44
- @dbmgr.add( category_id , url , y[:count] )
45
- end
95
+ next unless y.id =~ %r{^feed/(.+)}
96
+
97
+ url = ::Regexp.last_match(1)
98
+ csv_add(category_id, url, y[:count])
99
+ @dbmgr.add(category_id, url, y[:count])
46
100
  end
47
101
  end
48
102
  end
49
103
 
104
+ # ユーザプロファイルをコンソールへ出力
50
105
  def print_user_profile
51
106
  pp @profile
52
107
  end
53
108
 
109
+ # ユーザサブスクリプションをコンソールへ出力
54
110
  def print_subscription
55
- option = {:plain => true }
56
- puts @client.user_subscriptions.size
57
- @client.user_subscriptions.map{|m| puts m.id}
58
- puts "==============="
59
- @client.user_subscriptions.map{|m| ap m , option }
111
+ option = { plain: true }
112
+ # puts @client.user_subscriptions.size
113
+ @client.user_subscriptions.map { |m| puts m.id }
114
+ # puts '==============='
60
115
  end
61
-
62
- def csv_open
63
- @csv = CSV.new(get_output_file("csv") , {
64
- :headers => %w!category_id id count!,
65
- :write_headers => true
66
- } )
116
+
117
+ # 指定ディレクトリに出力準備(CVS形式)
118
+ def csv_open(parent_dir)
119
+ csv_file = get_output_file(parent_dir, 'csv')
120
+ @csv = CSV.new(csv_file,
121
+ headers: %w[category_id id count],
122
+ write_headers: true)
67
123
  end
68
124
 
69
- def csv_add(category_id , id , count)
70
- @csv << [category_id , id , count ]
125
+ # 出力先にカテゴリID、フィードID、未読数を出力
126
+ def csv_add(category_id, id, count)
127
+ @csv << [category_id, id, count]
71
128
  end
72
129
 
130
+ # 出力先クローズ
73
131
  def csv_close
74
132
  @csv.close
75
133
  end
134
+
135
+ def load_pstore
136
+ value = pstore_fetch(@pstore_key, @pstore_default_value)
137
+
138
+ if value == @pstore_default_value
139
+ new_value = {
140
+ key => {
141
+ profile: @profile,
142
+ categories: @categories
143
+ }
144
+ }
145
+ pstore_store(@pstore_key, new_value)
146
+ end
147
+ end
148
+
149
+ def check_backup
150
+ value2 = pstore_fetch(@pstore_key, @pstore_default_value)
151
+ return if value2 == @pstore_default_value
152
+
153
+ top = value2[@pstore_key]
154
+ profile = top[:profile]
155
+ categories = top[:categories]
156
+ # p "profile=#{profile}"
157
+ # p "categories.size=#{categories.size}"
158
+ # categories.map{ |x| puts x.label }
159
+ end
160
+
161
+ def csv_to_db
162
+ ary = Pathname.new(@output_dir).children.sort_by(&:ctime)
163
+ latest_file = ary.last
164
+ f = latest_file.open
165
+ csv = CSV.new(f,
166
+ headers: true,
167
+ write_headers: true)
168
+ csv.each do |row|
169
+ category_id = row['category_id']
170
+ id = row['id']
171
+ count = row['count']
172
+ if !category_id.nil? && !id.nil? && !count.nil?
173
+ dbmgr_add(category_id, id, count)
174
+ else
175
+ p category_id
176
+ p id
177
+ p count
178
+ p '=='
179
+ end
180
+ end
181
+ end
76
182
  end
77
183
  end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedlrop
2
- VERSION = "0.1.23"
4
+ # バージョン番号
5
+ VERSION = '0.1.24'
3
6
  end
data/lib/feedlrop.rb CHANGED
@@ -1,11 +1,16 @@
1
- # -*- coding: utf-8 -*-
2
- require 'arxutils'
3
- require "feedlrop/version"
4
- require "feedlrop/feedlrop"
5
- require "feedlrop/dbutil"
1
+ # frozen_string_literal: true
6
2
 
7
- require 'feedlr'
3
+ require 'arxutils_sqlite3'
4
+ require_relative 'dbacrecord'
5
+ require_relative 'feedlrop/version'
6
+ require_relative 'feedlrop/feedlrop'
7
+ require_relative 'feedlrop/dbutil'
8
+ require_relative 'feedlrop/cli'
8
9
 
10
+ # Feedlr操作用モジュール
9
11
  module Feedlrop
12
+ OUTPUT_DIR = "output"
13
+ # PSTORE_DIR = "pstore"
14
+ PSTORE_DIR = "pstore_2"
15
+ PSTORE_KEY = :TOP
10
16
  end
11
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feedlrop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.23
4
+ version: 0.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - yasuo kominami
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-07 00:00:00.000000000 Z
11
+ date: 2022-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: feedlr
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: activerecord
28
+ name: awesome_print
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: sqlite3
42
+ name: faraday
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,21 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: arxutils
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 0.1.10
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 0.1.10
69
- - !ruby/object:Gem::Dependency
70
- name: awesome_print
56
+ name: arxutils_sqlite3
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - ">="
@@ -84,30 +70,30 @@ dependencies:
84
70
  name: bundler
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - "~>"
73
+ - - ">="
88
74
  - !ruby/object:Gem::Version
89
- version: '1.10'
75
+ version: '0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - "~>"
80
+ - - ">="
95
81
  - !ruby/object:Gem::Version
96
- version: '1.10'
82
+ version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: rake
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - "~>"
87
+ - - ">="
102
88
  - !ruby/object:Gem::Version
103
- version: '10.0'
89
+ version: '0'
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
- - - "~>"
94
+ - - ">="
109
95
  - !ruby/object:Gem::Version
110
- version: '10.0'
96
+ version: '0'
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: rspec
113
99
  requirement: !ruby/object:Gem::Requirement
@@ -126,35 +112,35 @@ description: utility functions for Feedly API.
126
112
  email:
127
113
  - ykominami@gmail.com
128
114
  executables:
129
- - f
130
115
  - feedlrop
131
- - makemigrate
132
116
  extensions: []
133
117
  extra_rdoc_files: []
134
118
  files:
135
119
  - ".gitignore"
136
120
  - ".rspec"
121
+ - ".rubocop.yml"
122
+ - ".rubocop_todo.yml"
123
+ - ".ruby-version"
137
124
  - ".travis.yml"
138
125
  - Gemfile
139
126
  - README.md
140
127
  - Rakefile
141
128
  - bin/console
142
129
  - bin/setup
143
- - exe/f
144
130
  - exe/feedlrop
145
- - exe/makemigrate
146
131
  - f.bat
147
132
  - feedlrop.gemspec
148
133
  - lib/feedlrop.rb
134
+ - lib/feedlrop/cli.rb
149
135
  - lib/feedlrop/dbutil.rb
150
- - lib/feedlrop/dbutil/dbmgr.rb
151
136
  - lib/feedlrop/dbutil/feedlropmgr.rb
152
137
  - lib/feedlrop/feedlrop.rb
153
138
  - lib/feedlrop/version.rb
154
139
  homepage: ''
155
140
  licenses:
156
141
  - MIT
157
- metadata: {}
142
+ metadata:
143
+ rubygems_mfa_required: 'true'
158
144
  post_install_message:
159
145
  rdoc_options: []
160
146
  require_paths:
@@ -163,15 +149,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
163
149
  requirements:
164
150
  - - ">="
165
151
  - !ruby/object:Gem::Version
166
- version: '0'
152
+ version: 2.6.10
167
153
  required_rubygems_version: !ruby/object:Gem::Requirement
168
154
  requirements:
169
155
  - - ">="
170
156
  - !ruby/object:Gem::Version
171
157
  version: '0'
172
158
  requirements: []
173
- rubyforge_project:
174
- rubygems_version: 2.4.5.1
159
+ rubygems_version: 3.0.3.1
175
160
  signing_key:
176
161
  specification_version: 4
177
162
  summary: utility functions for Feedly API.
data/exe/f DELETED
@@ -1,27 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'arxutils'
4
- require 'feedlrop'
5
-
6
- dbconfig = Arxutils::Dbutil::DBCONFIG_MYSQL
7
- dbconfig = Arxutils::Dbutil::DBCONFIG_SQLITE3
8
-
9
- token = ARGV[0]
10
- hs = {
11
- "db_dir" => Arxutils::Dbutil::DB_DIR,
12
- "migrate_dir" => Arxutils::Dbutil::MIGRATE_DIR,
13
- "config_dir" => Arxutils::Dbutil::CONFIG_DIR,
14
- "dbconfig" => dbconfig,
15
- "log_fname" => Arxutils::Dbutil::DATABASELOG,
16
- }
17
-
18
- fo = Feedlrop::Feedlrop.new(
19
- token ,
20
- :db,
21
- hs
22
- )
23
- #fo.get_all_unread_count
24
- fo.print_user_profile
25
- fo.print_subscription
26
-
27
-
data/exe/makemigrate DELETED
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
-
4
- require 'arxutils'
5
- require 'feedlrop'
6
-
7
- db_def_ary = [
8
- {
9
- :flist => %W!noitem!,
10
- :classname => "Countdatetime",
11
- :classname_downcase => "countdatetime",
12
- :items => [
13
- ["countdatetime" , "datetime", "false"],
14
- ],
15
- :plural => "countdatetimes"
16
- },
17
-
18
- {
19
- :flist => %W!base!,
20
- :classname => "Unreadfeed",
21
- :classname_downcase => "unreadfeed",
22
-
23
- :items => [
24
- ["time_id" , "integer", "false"],
25
- ["category" , "string", "false"],
26
- ["url" , "string", "false"],
27
- ["unread_count" , "integer", "false"],
28
- ],
29
- :plural => "unreadfeeds"
30
- },
31
- ]
32
-
33
- dbconfig = Arxutils::Dbutil::DBCONFIG_MYSQL
34
- dbconfig = Arxutils::Dbutil::DBCONFIG_SQLITE3
35
-
36
- forced = true
37
- Arxutils::Migrate.migrate(
38
- db_def_ary,
39
- 0,
40
- dbconfig,
41
- forced
42
- )
@@ -1,17 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require 'forwardable'
3
- require 'feedlrop/dbutil/feedlropmgr'
4
-
5
- module Feedlrop
6
- module Dbutil
7
- class DbMgr
8
- extend Forwardable
9
-
10
- def_delegator( :@feedlropmgr , :add, :add)
11
-
12
- def initialize( register_time )
13
- @feedlropmgr = FeedlropMgr.new( register_time )
14
- end
15
- end
16
- end
17
- end