organo 0.3.4 → 0.4.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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/doc/anime.md +30 -8
  3. data/doc/readme.md +2 -2
  4. data/lib/organo/commands/anime/anime_add.rb +27 -22
  5. data/lib/organo/commands/anime/anime_find_broken_links.rb +31 -0
  6. data/lib/organo/commands/anime/anime_remove.rb +12 -12
  7. data/lib/organo/commands/anime/anime_set_sequel.rb +49 -0
  8. data/lib/organo/commands/anime/anime_show.rb +11 -13
  9. data/lib/organo/commands/anime/anime_update_image.rb +18 -33
  10. data/lib/organo/commands/anime/anime_update_query.rb +18 -19
  11. data/lib/organo/commands/api/api_get_anime.rb +5 -6
  12. data/lib/organo/commands/api/api_get_season.rb +6 -7
  13. data/lib/organo/commands/api/api_get_sequels.rb +5 -5
  14. data/lib/organo/commands/init.rb +32 -8
  15. data/lib/organo/commands/remote/remote_add.rb +14 -14
  16. data/lib/organo/commands/remote/remote_download.rb +10 -7
  17. data/lib/organo/commands/remote/remote_remove.rb +6 -4
  18. data/lib/organo/commands/remote/remote_upload.rb +6 -3
  19. data/lib/organo/commands/statistics.rb +8 -12
  20. data/lib/organo/commands/version.rb +3 -1
  21. data/lib/organo/query.rb +0 -1
  22. data/lib/organo/tools/string_utils.rb +28 -0
  23. data/lib/organo/{writer.rb → tools/writer.rb} +0 -5
  24. data/lib/organo/version.rb +1 -1
  25. data/lib/organo.rb +33 -47
  26. metadata +37 -17
  27. data/lib/organo/commands/anime/anime_add_sequel.rb +0 -50
  28. data/lib/organo/commands/anime/anime_get_broken_links.rb +0 -30
  29. data/lib/organo/commands/anime/anime_search.rb +0 -23
  30. data/lib/organo/commands/api/api_search_anime.rb +0 -27
  31. data/lib/organo/commands/merge.rb +0 -20
  32. data/lib/organo/reader.rb +0 -38
  33. data/lib/organo/search_show.rb +0 -58
  34. data/lib/organo/sequel.rb +0 -39
  35. data/lib/organo/show.rb +0 -36
  36. data/lib/organo/show_list.rb +0 -32
  37. data/lib/organo/tools/local_search.rb +0 -49
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../../config'
2
4
 
3
5
  module Organo
@@ -6,17 +8,17 @@ module Organo
6
8
  module Remote
7
9
 
8
10
  class Remove < Dry::CLI::Command
9
- desc "Remove remote FTP server from config file"
10
- argument :env, type: :string, required: true, desc: "Remote environment name"
11
+ desc 'Remove remote FTP server from config file'
12
+ argument :env, type: :string, required: true, desc: 'Remote environment name'
11
13
 
12
14
  def call(env:, **)
13
15
  config = File.exist?(Config::DEFAULT_FILE) ? JSON.parse(File.read(Config::DEFAULT_FILE)) : nil
14
16
  unless config.nil?
15
17
  section = config.find { |option| option['section'] == 'remotes' }
16
- unless section.nil?
18
+ if !section.nil?
17
19
  index = section['entries'].find_index { |entry| entry['env'] == env }
18
20
  if index.nil?
19
- puts "Specified environment does not exist"
21
+ puts 'Specified environment does not exist'
20
22
  elsif !section['entries'].delete_at(index).nil?
21
23
  puts "Removed \"#{env}\" entry"
22
24
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'net/ftp'
2
4
 
3
5
  module Organo
@@ -6,14 +8,14 @@ module Organo
6
8
  module Remote
7
9
 
8
10
  class Upload < Dry::CLI::Command
9
- desc "Upload data to the website FTP"
10
- argument :env, type: :string, required: true, desc: "Environment"
11
+ desc 'Upload data to the website FTP'
12
+ argument :env, type: :string, required: true, desc: 'Environment'
11
13
 
12
14
  def call(env:, **)
13
15
  config = File.exist?(Config::DEFAULT_FILE) ? JSON.parse(File.read(Config::DEFAULT_FILE)) : nil
14
16
  section = config.find { |option| option['section'] == 'remotes' }
15
17
  if section.nil?
16
- puts "No remote is configured in the configuration file"
18
+ puts 'No remote is configured in the configuration file'
17
19
  else
18
20
  credentials = section['entries'].find { |entry| entry['env'] == env }
19
21
  if credentials.nil?
@@ -21,6 +23,7 @@ module Organo
21
23
  else
22
24
  local_files = Dir['./*.{data,config}.json']
23
25
  local_files.push('./schedule.json')
26
+ local_files.push('./dkb_edited.db')
24
27
  Net::FTP.open(credentials['url']) do |ftp|
25
28
  ftp.login(credentials['username'], credentials['password'])
26
29
  ftp.chdir(credentials['directory'])
@@ -1,23 +1,19 @@
1
- require_relative '../reader'
1
+ # frozen_string_literal: true
2
+
3
+ require 'sequel'
2
4
 
3
5
  module Organo
4
6
  module CLI
5
7
  module Commands
6
8
 
7
9
  class Statistics < Dry::CLI::Command
8
- desc "Merge edited seasonal files into one main file"
10
+ desc 'Get statistics from data'
9
11
 
10
12
  def call(*)
11
- i = 0
12
- total_size = 0
13
- Dir["#{Config::DEFAULT_DIR}/*.json"].each do |file_path|
14
- shows = Reader.read_file(file_path)
15
- file_size = File.size(file_path)
16
- puts "#{File.basename(file_path)}: #{shows.count} (#{file_size} b)"
17
- i += shows.count
18
- total_size += file_size
19
- end
20
- puts "Total count: #{i} (#{total_size} o)"
13
+ db = Sequel.sqlite('dkb_edited.db')
14
+ puts "Total show count: #{db.from(:shows).count}"
15
+ puts "Non-sequel show count #{db.from(:shows).where(is_sequel: false).count}"
16
+ puts "Sequel show count: #{db.from(:sequels).count}"
21
17
  end
22
18
  end
23
19
 
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../version'
2
4
 
3
5
  module Organo
4
6
  module CLI
5
7
  module Commands
6
8
  class Version < Dry::CLI::Command
7
- desc "Print version"
9
+ desc 'Print version'
8
10
 
9
11
  def call(*)
10
12
  puts Organo::VERSION
data/lib/organo/query.rb CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  require_relative 'jikan_api'
4
4
  require_relative 'request'
5
- require_relative 'search_show'
6
5
 
7
6
  module Organo
8
7
  class Query
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Organo
4
+ class StringUtils
5
+ def self.create_slug(title)
6
+ # strip the string
7
+ ret = title.strip
8
+
9
+ # blow away apostrophes
10
+ ret.gsub!(/['`]/, '')
11
+
12
+ # @ --> at, and & --> and
13
+ ret.gsub!(/\s*@\s*/, ' at ')
14
+ ret.gsub!(/\s*&\s*/, ' and ')
15
+
16
+ # replace all non alphanumeric with dash
17
+ ret.gsub!(/\s*[^A-Za-z0-9]\s*/, '-')
18
+
19
+ # convert double underscores to single
20
+ ret.gsub!(/-+/, '-')
21
+
22
+ # strip off leading/trailing dash
23
+ ret.gsub!(/\A-+|-+\z/, '')
24
+
25
+ ret.downcase
26
+ end
27
+ end
28
+ end
@@ -4,11 +4,6 @@ require 'json'
4
4
 
5
5
  module Organo
6
6
  class Writer
7
- def self.to_data_file(obj, file_name)
8
- file_path = "./#{file_name}.data.json"
9
- File.write(file_path, JSON.pretty_generate(obj))
10
- end
11
-
12
7
  def self.to_file(obj, file_path)
13
8
  File.write(file_path, JSON.pretty_generate(obj))
14
9
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Organo
4
- VERSION = '0.3.4'
4
+ VERSION = '0.4.1'
5
5
  end
data/lib/organo.rb CHANGED
@@ -1,68 +1,54 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'dry/cli'
2
4
 
5
+ require_relative 'organo/commands/version'
3
6
  require_relative 'organo/commands/init'
7
+ require_relative 'organo/commands/statistics'
8
+ require_relative 'organo/commands/anime/anime_show'
4
9
  require_relative 'organo/commands/anime/anime_add'
5
- require_relative 'organo/commands/anime/anime_add_sequel'
6
- require_relative 'organo/commands/anime/anime_get_broken_links'
7
10
  require_relative 'organo/commands/anime/anime_remove'
8
- require_relative 'organo/commands/anime/anime_show'
9
- require_relative 'organo/commands/anime/anime_search'
11
+ require_relative 'organo/commands/anime/anime_set_sequel'
12
+ require_relative 'organo/commands/anime/anime_find_broken_links'
10
13
  require_relative 'organo/commands/anime/anime_update_image'
11
14
  require_relative 'organo/commands/anime/anime_update_query'
12
- require_relative 'organo/commands/api/api_get_anime'
13
- require_relative 'organo/commands/api/api_get_sequels'
14
- require_relative 'organo/commands/api/api_get_season'
15
- require_relative 'organo/commands/api/api_search_anime'
16
- require_relative 'organo/commands/api/api_get_schedule'
17
15
  require_relative 'organo/commands/remote/remote_add'
18
16
  require_relative 'organo/commands/remote/remote_remove'
19
17
  require_relative 'organo/commands/remote/remote_download'
20
18
  require_relative 'organo/commands/remote/remote_upload'
21
- require_relative 'organo/commands/merge'
22
- require_relative 'organo/commands/version'
23
- require_relative 'organo/commands/statistics'
24
- require_relative 'organo/commands/schedule/schedule_create'
19
+ require_relative 'organo/commands/api/api_get_anime'
20
+ require_relative 'organo/commands/api/api_get_season'
21
+ require_relative 'organo/commands/api/api_get_sequels'
22
+ require_relative 'organo/commands/api/api_search_anime'
25
23
 
26
24
  module Organo
27
25
  module CLI
28
26
  module Commands
29
27
  extend Dry::CLI::Registry
28
+ # Misc commands
29
+ register 'version', Organo::CLI::Commands::Version, aliases: %w[v -v --version]
30
+ register 'init', Organo::CLI::Commands::Init
31
+ register 'stats', Organo::CLI::Commands::Statistics
32
+
33
+ # Anime commands
34
+ register 'anime show', Organo::CLI::Commands::Anime::ShowEntry
35
+ register 'anime add', Organo::CLI::Commands::Anime::AddEntry
36
+ register 'anime remove', Organo::CLI::Commands::Anime::RemoveEntry
37
+ register 'anime set_sequel', Organo::CLI::Commands::Anime::SequelEntry
38
+ register 'anime find_broken_links', Organo::CLI::Commands::Anime::FindBrokenLinks
39
+ register 'anime update image', Organo::CLI::Commands::Anime::UpdateImage
40
+ register 'anime update search_query', Organo::CLI::Commands::Anime::UpdateSearchQuery
30
41
 
31
- register 'version', Version, aliases: %w[v -v --version]
32
- register 'init', Init
42
+ # Remote commands
43
+ register 'remote add', Organo::CLI::Commands::Remote::AddEntry
44
+ register 'remote remove', Organo::CLI::Commands::Remote::Remove
45
+ register 'remote download', Organo::CLI::Commands::Remote::Download
46
+ register 'remote download', Organo::CLI::Commands::Remote::Upload
33
47
 
34
- if Dir.exist?('.organo')
35
- register 'anime' do |prefix|
36
- prefix.register 'add', Anime::Add::AnimeEntry
37
- prefix.register 'add sequel', Anime::Add::SequelEntry
38
- prefix.register 'remove', Anime::Remove
39
- prefix.register 'show', Anime::Show
40
- prefix.register 'search', Anime::Search
41
- prefix.register 'update image', Anime::Update::Image
42
- prefix.register 'update search_query', Anime::Update::SearchQuery
43
- prefix.register 'get broken_links', Anime::Get::BrokenLinks
44
- end
45
- register 'api' do |prefix|
46
- prefix.register 'get anime', API::Get::Anime
47
- prefix.register 'get season', API::Get::Season
48
- prefix.register 'get sequels', API::Get::Sequels
49
- prefix.register 'search anime', API::Search::Anime
50
- prefix.register 'get schedule', API::Get::Schedule
51
- end
52
- register 'merge', Merge
53
- register 'statistics', Statistics
54
- register 'remote' do |prefix|
55
- prefix.register 'add', Remote::Add
56
- prefix.register 'remove', Remote::Remove
57
- prefix.register 'download', Remote::Download
58
- prefix.register 'upload', Remote::Upload
59
- end
60
- register 'schedule' do |prefix|
61
- prefix.register 'create', Schedule::Create
62
- end
63
- else
64
- puts 'This directory has not been initialized.'
65
- end
48
+ # API commands
49
+ register 'api get anime', Organo::CLI::Commands::API::Get::Anime
50
+ register 'api get season', Organo::CLI::Commands::API::Get::Season
51
+ register 'api get sequels', Organo::CLI::Commands::API::Get::Sequels
66
52
  end
67
53
  end
68
54
  end
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
4
+ version: 0.4.1
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-08-26 00:00:00.000000000 Z
11
+ date: 2023-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-cli
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sequel
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.74'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.74'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.6'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.6'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rubocop
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -66,8 +94,8 @@ dependencies:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
96
  version: '1.44'
69
- description: Get JSON data from Jikan, an unofficial MyAnimeList API, that can be
70
- used on an anime website
97
+ description: Gets JSON data from different APIs to build a local database that can
98
+ be used in other applications
71
99
  email:
72
100
  - timemaster.lpf@gmail.com
73
101
  executables:
@@ -87,10 +115,9 @@ files:
87
115
  - lib/organo.rb
88
116
  - lib/organo/animeschedule_api.rb
89
117
  - lib/organo/commands/anime/anime_add.rb
90
- - lib/organo/commands/anime/anime_add_sequel.rb
91
- - lib/organo/commands/anime/anime_get_broken_links.rb
118
+ - lib/organo/commands/anime/anime_find_broken_links.rb
92
119
  - lib/organo/commands/anime/anime_remove.rb
93
- - lib/organo/commands/anime/anime_search.rb
120
+ - lib/organo/commands/anime/anime_set_sequel.rb
94
121
  - lib/organo/commands/anime/anime_show.rb
95
122
  - lib/organo/commands/anime/anime_update_image.rb
96
123
  - lib/organo/commands/anime/anime_update_query.rb
@@ -98,9 +125,7 @@ files:
98
125
  - lib/organo/commands/api/api_get_schedule.rb
99
126
  - lib/organo/commands/api/api_get_season.rb
100
127
  - lib/organo/commands/api/api_get_sequels.rb
101
- - lib/organo/commands/api/api_search_anime.rb
102
128
  - lib/organo/commands/init.rb
103
- - lib/organo/commands/merge.rb
104
129
  - lib/organo/commands/remote/remote_add.rb
105
130
  - lib/organo/commands/remote/remote_download.rb
106
131
  - lib/organo/commands/remote/remote_remove.rb
@@ -111,15 +136,10 @@ files:
111
136
  - lib/organo/config.rb
112
137
  - lib/organo/jikan_api.rb
113
138
  - lib/organo/query.rb
114
- - lib/organo/reader.rb
115
139
  - lib/organo/request.rb
116
- - lib/organo/search_show.rb
117
- - lib/organo/sequel.rb
118
- - lib/organo/show.rb
119
- - lib/organo/show_list.rb
120
- - lib/organo/tools/local_search.rb
140
+ - lib/organo/tools/string_utils.rb
141
+ - lib/organo/tools/writer.rb
121
142
  - lib/organo/version.rb
122
- - lib/organo/writer.rb
123
143
  homepage: https://gitlab.com/dkb-weeblets/organo
124
144
  licenses:
125
145
  - MIT
@@ -145,5 +165,5 @@ requirements: []
145
165
  rubygems_version: 3.2.33
146
166
  signing_key:
147
167
  specification_version: 4
148
- summary: Tool to build dataset from Jikan API
168
+ summary: Tool to build dataset from Anime database APIs
149
169
  test_files: []
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../config'
4
- require_relative '../../writer'
5
- require_relative '../../reader'
6
- require_relative '../../tools/local_search'
7
-
8
- module Organo
9
- module CLI
10
- module Commands
11
- module Anime
12
- module Add
13
-
14
- class SequelEntry < Dry::CLI::Command
15
- desc 'Add anime sequel entry to anime in file'
16
- argument :anime_mal_id, type: :integer, required: true, desc: 'Anime MyAnimeList ID'
17
- argument :sequel_mal_id, type: :integer, required: true, desc: 'Sequel MyAnimeList ID'
18
- argument :season_num, type: :integer, required: false, default: 0, desc: 'Season number'
19
- argument :type, type: :string, required: false, default: '', values: %w[part movie special], desc: 'Type of sequel (part, movie, special)'
20
- argument :type_num, type: :integer, required: false, default: 0, desc: 'The sequel type number'
21
-
22
- def call(anime_mal_id:, sequel_mal_id:, season_num:, type:, type_num:, **)
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
36
- end
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.'
42
- end
43
- end
44
- end
45
-
46
- end
47
- end
48
- end
49
- end
50
- end
@@ -1,30 +0,0 @@
1
- require 'httparty'
2
- require_relative '../../reader'
3
-
4
- module Organo
5
- module CLI
6
- module Commands
7
- module Anime
8
- module Get
9
-
10
- class BrokenLinks < Dry::CLI::Command
11
- desc 'Get list of anime IDs that have broken links'
12
-
13
- def call(*)
14
- show_list = Reader.read_all_files
15
- broken_list = []
16
- show_list.each do |show|
17
- response = HTTParty.get(show.image_url)
18
- next unless response.code == 404
19
-
20
- broken_list.push(show.id)
21
- end
22
- puts broken_list.join(' ') unless broken_list.empty?
23
- end
24
- end
25
-
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../config'
4
- require_relative '../../tools/local_search'
5
-
6
- module Organo
7
- module CLI
8
- module Commands
9
- module Anime
10
-
11
- class Search < Dry::CLI::Command
12
- desc 'Search anime by query from files'
13
- argument :query, type: :string, required: true, desc: 'Search query'
14
-
15
- def call(query:, **)
16
- puts (LocalSearch.find_anime_by_query(query).map{ |anime| anime.to_json })
17
- end
18
- end
19
-
20
- end
21
- end
22
- end
23
- end
@@ -1,27 +0,0 @@
1
- require_relative '../../query'
2
- require_relative '../../show_list'
3
-
4
- module Organo
5
- module CLI
6
- module Commands
7
- module API
8
- module Search
9
-
10
- class Anime < Dry::CLI::Command
11
- desc "Get a list anime from query"
12
- argument :query, type: :string, required: true, desc: "Search query"
13
- option :type, type: :string, required: false, default: '', values: %w[tv movie ova special ona music], desc: "Type of anime"
14
- option :limit, type: :integer, required: false, default: 5, desc: "Limit number of results"
15
-
16
- def call(query:, type:, limit:, **)
17
- json_obj = Query.search_anime(query, { 'type' => type, 'limit' => limit})
18
- show_list = ShowList.create_search_show_list(json_obj)
19
- puts show_list.to_json
20
- end
21
- end
22
-
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,20 +0,0 @@
1
- require_relative '../reader'
2
- require_relative '../writer'
3
-
4
- module Organo
5
- module CLI
6
- module Commands
7
-
8
- class Merge < Dry::CLI::Command
9
- desc "Merge edited seasonal files into one main file"
10
-
11
- def call(*)
12
- show_list = Reader.read_all_files
13
- Writer.to_data_file(show_list, 'shows')
14
- puts 'Edited files have been merged.'
15
- end
16
- end
17
-
18
- end
19
- end
20
- end
data/lib/organo/reader.rb DELETED
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'json'
4
- require_relative 'config'
5
- require_relative 'show'
6
-
7
- module Organo
8
- class Reader
9
- def self.read_all_files
10
- shows = []
11
- Dir["#{Config::DEFAULT_DIR}/*.json"].each do |file_path|
12
- shows = shows.union(Reader.read_file(file_path))
13
- end
14
- shows.sort_by(&:title)
15
- end
16
-
17
- def self.read_file(file_path)
18
- shows = []
19
- file = File.read(file_path)
20
- data = JSON.parse(file)
21
- data.each do |show|
22
- shows.push(
23
- Show.new(
24
- show['id'],
25
- show['slug'],
26
- show['title'],
27
- show['image_url'],
28
- show['search_query'],
29
- show['links'],
30
- show['sequels']
31
- )
32
- )
33
- end
34
- shows
35
- end
36
-
37
- end
38
- end
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'json'
4
-
5
- module Organo
6
- class SearchShow
7
- attr_accessor :id, :title, :image_url, :search_query
8
-
9
- def initialize(id, title, image_url)
10
- @id = id
11
- @slug = create_slug(title)
12
- @title = title.to_s
13
- @image_url = image_url
14
- @search_query = title
15
- end
16
-
17
- def create_slug(title)
18
- # strip the string
19
- ret = title.strip
20
-
21
- # blow away apostrophes
22
- ret.gsub!(/['`]/, '')
23
-
24
- # @ --> at, and & --> and
25
- ret.gsub!(/\s*@\s*/, ' at ')
26
- ret.gsub!(/\s*&\s*/, ' and ')
27
-
28
- # replace all non alphanumeric with dash
29
- ret.gsub!(/\s*[^A-Za-z0-9]\s*/, '-')
30
-
31
- # convert double underscores to single
32
- ret.gsub!(/-+/, '-')
33
-
34
- # strip off leading/trailing dash
35
- ret.gsub!(/\A-+|-+\z/, '')
36
-
37
- ret.downcase
38
- end
39
-
40
- def to_s
41
- "title: #{@title}, synopsis: #{@description}, image_url: #{@image_url}"
42
- end
43
-
44
- def as_json(_options = {})
45
- {
46
- id: @id,
47
- slug: @slug,
48
- title: @title,
49
- image_url: @image_url,
50
- search_query: @search_query
51
- }
52
- end
53
-
54
- def to_json(*options)
55
- as_json(*options).to_json(*options)
56
- end
57
- end
58
- end
data/lib/organo/sequel.rb DELETED
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'json'
4
-
5
- module Organo
6
- class Sequel
7
- attr_accessor :id, :type, :title, :image_url, :selector
8
-
9
- def initialize(id, title, image_url, season_num = 0, type = "", type_num = 0, selector = -1)
10
- @id = id
11
- @title = title.to_s
12
- @image_url = image_url
13
- @season_num = season_num
14
- @type = type.to_s
15
- @type_num = type_num
16
- @selector = selector
17
- end
18
-
19
- def to_s
20
- "id: #{@id}, title: #{@title}, image_url: #{@image_url}"
21
- end
22
-
23
- def as_json(_options = {})
24
- {
25
- id: @id,
26
- title: @title,
27
- image_url: @image_url,
28
- season_num: @season_num.to_i,
29
- type: @type,
30
- type_num: @type_num.to_i,
31
- selector: @selector.to_i
32
- }
33
- end
34
-
35
- def to_json(*options)
36
- as_json(*options).to_json(*options)
37
- end
38
- end
39
- end