organo 0.3.3 → 0.3.4
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7145d1efb8ac5804c2c0d786c2854dd9d92b209fceb33ca02192ae86fe0e65a
|
4
|
+
data.tar.gz: 77ff5845dd17c7ec583cbe5dace3833e52c3ca02e3d36b1b479d2140a97d908e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03c4f273847259ab1af9319ec390df5badfdcf448a9208bb20992b5e1b3d8d06bd7a22580a1c54bdd7268e0595825d560ae9269bf8556b1c9178967e03aa9a26
|
7
|
+
data.tar.gz: 5003d8cbac8a154dbcb57c2698504b86faef172a705d20b9d070f786a70c0ac53013e7ac5e24dac9699fec73808bcc244e1721531a43a47d5364459f3560213e
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require_relative '../../config'
|
2
2
|
require_relative '../../writer'
|
3
3
|
require_relative '../../reader'
|
4
|
+
require_relative '../../tools/local_search'
|
4
5
|
|
5
6
|
module Organo
|
6
7
|
module CLI
|
@@ -13,15 +14,15 @@ module Organo
|
|
13
14
|
argument :mal_id, type: :integer, required: true, desc: 'MyAnimeList ID'
|
14
15
|
|
15
16
|
def call(mal_id:, **)
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
if LocalSearch.find_anime_by_id(mal_id).nil?
|
18
|
+
json_obj = Query.get_anime_by_id(mal_id)
|
19
|
+
show = SearchShow.new(json_obj['mal_id'], json_obj['title'], json_obj['images']['jpg']['image_url'])
|
20
|
+
show_type = json_obj['type']
|
21
|
+
file_name = (show_type == 'TV' ? "#{json_obj['year']}_#{json_obj['season']}" : show_type.downcase)
|
22
|
+
file_path = "#{Config::DEFAULT_DIR}/#{file_name}.json"
|
23
|
+
show_list = File.exist?(file_path) ? Reader.read_file(file_path) : []
|
23
24
|
Writer.to_file(show_list.push(show).sort_by(&:title), file_path)
|
24
|
-
puts "Added anime \"#{show.title}\" (#{mal_id})"
|
25
|
+
puts "Added anime \"#{show.title}\" (#{mal_id}) in #{file_path}"
|
25
26
|
else
|
26
27
|
puts 'Cannot add an already existing anime'
|
27
28
|
end
|
@@ -1,6 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../../config'
|
2
4
|
require_relative '../../writer'
|
3
5
|
require_relative '../../reader'
|
6
|
+
require_relative '../../tools/local_search'
|
4
7
|
|
5
8
|
module Organo
|
6
9
|
module CLI
|
@@ -17,21 +20,25 @@ module Organo
|
|
17
20
|
argument :type_num, type: :integer, required: false, default: 0, desc: 'The sequel type number'
|
18
21
|
|
19
22
|
def call(anime_mal_id:, sequel_mal_id:, season_num:, type:, type_num:, **)
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
23
|
+
if LocalSearch.find_anime_by_id(sequel_mal_id).nil?
|
24
|
+
json_obj = Query.get_anime_by_id(sequel_mal_id)
|
25
|
+
sequel = Sequel.new(
|
26
|
+
json_obj['mal_id'],
|
27
|
+
json_obj['title'],
|
28
|
+
json_obj['images']['jpg']['image_url'],
|
29
|
+
season_num,
|
30
|
+
type,
|
31
|
+
type_num
|
32
|
+
)
|
33
|
+
file_path = LocalSearch.find_file_by_anime_id(anime_mal_id)
|
34
|
+
show_list = Reader.read_file(file_path).each do |show|
|
35
|
+
show.sequels.push(sequel) if show.id == anime_mal_id.to_i
|
33
36
|
end
|
34
|
-
|
37
|
+
show_info = show_list.find { |show| show.id == anime_mal_id.to_i }
|
38
|
+
Writer.to_file(show_list, file_path)
|
39
|
+
puts "Added sequel \"#{sequel.title}\" (#{sequel.id}) to anime \"#{show_info.title}\" (#{anime_mal_id}) in #{file_path}."
|
40
|
+
else
|
41
|
+
puts 'This sequel already exists.'
|
35
42
|
end
|
36
43
|
end
|
37
44
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative '../../config'
|
4
|
+
require_relative '../../tools/local_search'
|
4
5
|
|
5
6
|
module Organo
|
6
7
|
module CLI
|
@@ -12,13 +13,7 @@ module Organo
|
|
12
13
|
argument :query, type: :string, required: true, desc: 'Search query'
|
13
14
|
|
14
15
|
def call(query:, **)
|
15
|
-
|
16
|
-
Dir["#{Config::DEFAULT_DIR}/*.json"].each do |file_path|
|
17
|
-
shows_list = Reader.read_file(file_path)
|
18
|
-
show = shows_list.find { |s| s.title.downcase.include? query }
|
19
|
-
found_list.push(show) unless show.nil?
|
20
|
-
end
|
21
|
-
puts found_list.to_json
|
16
|
+
puts (LocalSearch.find_anime_by_query(query).map{ |anime| anime.to_json })
|
22
17
|
end
|
23
18
|
end
|
24
19
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require_relative '../reader'
|
5
|
+
|
6
|
+
module Organo
|
7
|
+
class LocalSearch
|
8
|
+
|
9
|
+
def self.find_anime_by_id(mal_id)
|
10
|
+
anime_list = Reader.read_all_files
|
11
|
+
get_anime_obj(mal_id, anime_list)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.get_anime_obj(mal_id, anime_list)
|
15
|
+
return_value = nil
|
16
|
+
anime_list.each do |anime|
|
17
|
+
if anime.id == mal_id.to_i || anime.sequels.find { |sequel| sequel['id'] == mal_id.to_i }
|
18
|
+
return_value = anime
|
19
|
+
break
|
20
|
+
end
|
21
|
+
end
|
22
|
+
return_value
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.find_file_by_anime_id(mal_id)
|
26
|
+
return_value = nil
|
27
|
+
Dir["#{Config::DEFAULT_DIR}/*.json"].each do |file_path|
|
28
|
+
anime_list = Reader.read_file(file_path)
|
29
|
+
unless get_anime_obj(mal_id, anime_list).nil?
|
30
|
+
return_value = file_path
|
31
|
+
break
|
32
|
+
end
|
33
|
+
end
|
34
|
+
return_value
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.find_anime_by_query(query)
|
38
|
+
anime_list = Reader.read_all_files
|
39
|
+
return_value = []
|
40
|
+
anime_list.each do |anime|
|
41
|
+
if (anime.title.downcase.include? query.downcase) ||
|
42
|
+
(anime.sequels.find { |sequel| sequel['title'].downcase.include? query.downcase })
|
43
|
+
return_value.push(anime)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
return_value
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/organo/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: organo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Louis-Philippe Fortin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-cli
|
@@ -117,6 +117,7 @@ files:
|
|
117
117
|
- lib/organo/sequel.rb
|
118
118
|
- lib/organo/show.rb
|
119
119
|
- lib/organo/show_list.rb
|
120
|
+
- lib/organo/tools/local_search.rb
|
120
121
|
- lib/organo/version.rb
|
121
122
|
- lib/organo/writer.rb
|
122
123
|
homepage: https://gitlab.com/dkb-weeblets/organo
|