organo 0.3.2 → 0.3.3

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: 8691436aa9cdcb12c5de1da33b147103bcfa5d2459a3ad6b0ad868b4b49b2b44
4
- data.tar.gz: 3f1b7419aaee87053d5b74f0227e6b9c5e4c36d783b672dafebbd6f3d1c07091
3
+ metadata.gz: 16bba44699065f0d0afb4bd22c4c877243dbeeb11c5d3568d146a957f00cfb69
4
+ data.tar.gz: 4825637f9a142536d395f859d2309f5741f5fba336ad48eed68822c1c336f29e
5
5
  SHA512:
6
- metadata.gz: 7e3e5e6c5e8898ab4552bd2b9cf108aef4de0075f13e5e1731cf4bda3917534cc19c88ecfc545ac41396d7f33e01311408d600b33e2331bbbfcd28a2f4decdad
7
- data.tar.gz: 14046ec16b3a0986312e78567e226089346d1bba28a0d05b0c10996d7916e7c5a9787f9312ce567dcbf0f588f43485b17a57df2d0b526eb4ddacde29b9810bb7
6
+ metadata.gz: 6144b9c1d789c2618a18e1dcf2ce9eac84c25d5e534fdc3d444102db216657cb4bee82186170bee45f6b5346dd6d0ac0ed6a9781b3137947cd61d1eed3f2a66d
7
+ data.tar.gz: f3fc2a18ceb87932457bb11de19cdf3a88f15fa6a1b1665e5a19dbc8bc92459387e9fd293fa985efeabbb78909c40a4754a707c34519c4c889f40499aad2a023
data/README.md CHANGED
@@ -2,6 +2,27 @@
2
2
 
3
3
  Organo is named after the mafia group that runs the city of Lux in the anime [Texhnolyze](https://myanimelist.net/anime/26/Texhnolyze).
4
4
 
5
- This tool has been made to manage data that is shown on the DKB Anime Community website. It uses to the [JikanAPI](https://jikan.moe), an unofficial MyAnimeList API, to get data.
5
+ ## Description
6
6
 
7
- **This tool is still under construction. Documentation is coming soon.**
7
+ This tool has been made to manage data that is shown on the DKB Anime Community website. It uses to the [JikanAPI](https://jikan.moe), an unofficial MyAnimeList API, and [AnimeSchedule](https://animeschedule.net) to get data.
8
+
9
+ **This tool is still under construction.**
10
+
11
+ ## Requirements
12
+
13
+ - Ruby 3.0+
14
+
15
+ Earlier versions of ruby might work, but the tool will not be tested against them.
16
+
17
+ ## Installation
18
+
19
+ The tool is available through [Rubygems](https://rubygems.org)
20
+ ```shell
21
+ gem install organo
22
+ ```
23
+
24
+ ## Documentation
25
+
26
+ **Documentation is still incomplete.**
27
+
28
+ The documentation is available in the `doc/` directory. Follow this [link](doc/readme.md).
data/doc/anime.md ADDED
@@ -0,0 +1,28 @@
1
+ # Anime
2
+
3
+ ## add
4
+
5
+ Add anime entry to files.
6
+ ```shell
7
+ organo anime add MAL_ID
8
+ ```
9
+
10
+ ## add sequel
11
+
12
+ Add anime sequel entry to anime in file.
13
+ ```shell
14
+ organo anime add sequel ANIME_MAL_ID SEQUEL_MAL_ID
15
+ ```
16
+
17
+ ## get broken_links
18
+
19
+ Get list of anime IDs that have broken links.
20
+ ```shell
21
+ organo anime get broken_links
22
+ ```
23
+
24
+ ## remove
25
+ ## search
26
+ ## show
27
+ ## update image
28
+ ## update query
data/doc/api.md ADDED
@@ -0,0 +1,6 @@
1
+ # API
2
+
3
+ ## get anime
4
+ ## get season
5
+ ## get sequels
6
+ ## search anime
data/doc/readme.md ADDED
@@ -0,0 +1,12 @@
1
+ # Organo documentation
2
+
3
+ The tool is broken into 4 main subcommands.
4
+
5
+ - [Anime](anime.md)
6
+ - Manage and browse the local data files.
7
+ - [API](api.md)
8
+ - Get data from Jikan API.
9
+ - [Remote](remote.md)
10
+ - Add FTP remote information to push the data to the website.
11
+ - [Schedule](schedule.md)
12
+ - Manage the weekly schedule.
data/doc/remote.md ADDED
@@ -0,0 +1,6 @@
1
+ # Remote
2
+
3
+ ## add
4
+ ## download
5
+ ## remove
6
+ ## upload
data/doc/schedule.md ADDED
@@ -0,0 +1,3 @@
1
+ # Schedule
2
+
3
+ ## create
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Organo
4
+ class AnimeScheduleAPI
5
+ BASE_URL = 'https://animeschedule.net/api/'
6
+
7
+ def self.get_url(endpoint, api_version = 'v3', key = '')
8
+ "#{BASE_URL}#{api_version}/#{endpoint}"
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative '../../config'
2
4
 
3
5
  module Organo
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../config'
4
+ require_relative '../../animeschedule_api'
5
+
6
+ module Organo
7
+ module CLI
8
+ module Commands
9
+ module API
10
+ module Get
11
+
12
+ class Schedule < Dry::CLI::Command
13
+ desc 'Get anime release schedule of a specified season'
14
+ argument :season, type: :string, required: true, desc: 'Winter, Spring, Summer or Fall'
15
+ argument :year, type: :integer, required: true, desc: 'Year'
16
+
17
+ def call(season:, year:, **)
18
+ # Get the list of anime mal_id
19
+ # show_list = Reader.read_file("#{Config::DEFAULT_DIR}/#{year}-#{season.downcase}.json")
20
+
21
+ config = JSON.parse(File.read(Config::DEFAULT_FILE))
22
+ section = config.find { |option| option['section'] == 'api' }
23
+ key = (section['entries'].find { |entry| entry['name'] == 'AnimeSchedule' })['key']
24
+
25
+ count = 0
26
+ page = 1
27
+ total = 0
28
+ anime_list = []
29
+ loop do
30
+ data = JSON.parse(
31
+ RestClient.get(
32
+ "#{AnimeScheduleAPI.get_url('anime', 'v3')}?mt=all&years=#{year}&seasons=#{season}&media-types=tv&page=#{page}",
33
+ { Authorization: "Bearer #{key}" }
34
+ )
35
+ )
36
+ total = data['totalAmount'].to_i
37
+ page += 1
38
+ count += data['anime'].size
39
+ anime_list.concat(data['anime'])
40
+ break if count >= total
41
+ end
42
+
43
+ draft_schedule = []
44
+ anime_list.each do |anime|
45
+ air_time = DateTime.parse(anime['premier'])
46
+ draft_schedule.push(
47
+ {
48
+ slug: anime['route'],
49
+ title: anime['title'],
50
+ weekday: air_time.strftime('%A').downcase
51
+ }
52
+ )
53
+ end
54
+
55
+ file = File.read('schedule.json')
56
+ schedule = JSON.parse(file)
57
+ schedule.each do |weekday|
58
+ draft_schedule.each do |anime|
59
+ next unless anime[:weekday].eql? weekday['weekday']
60
+
61
+ weekday['shows'].push(
62
+ { slug: anime[:slug], title: anime[:title], time: '' }
63
+ )
64
+ end
65
+ end
66
+ Writer.to_file(schedule, 'schedule.json')
67
+ end
68
+ end
69
+
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -6,10 +6,10 @@ module Organo
6
6
  module Schedule
7
7
 
8
8
  class Create < Dry::CLI::Command
9
- desc "Initialize directory with default files and directories"
9
+ desc 'Initialize directory with default files and directories'
10
10
 
11
11
  def call(*)
12
- content = Array.new
12
+ content = []
13
13
  Date::DAYNAMES.each do |dname|
14
14
  content.push({ 'weekday' => dname.downcase, 'shows' => [] } )
15
15
  end
data/lib/organo/config.rb CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Organo
2
4
  class Config
3
5
  DEFAULT_FILE = './.organo/config.json'
4
6
  DEFAULT_DIR = './.organo/datafiles'
5
7
  end
6
- end
8
+ end
@@ -8,4 +8,4 @@ module Organo
8
8
  "#{BASE_URL}#{api_version}/#{endpoint}"
9
9
  end
10
10
  end
11
- end
11
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Organo
4
- VERSION = '0.3.2'
4
+ VERSION = '0.3.3'
5
5
  end
data/lib/organo.rb CHANGED
@@ -13,6 +13,7 @@ require_relative 'organo/commands/api/api_get_anime'
13
13
  require_relative 'organo/commands/api/api_get_sequels'
14
14
  require_relative 'organo/commands/api/api_get_season'
15
15
  require_relative 'organo/commands/api/api_search_anime'
16
+ require_relative 'organo/commands/api/api_get_schedule'
16
17
  require_relative 'organo/commands/remote/remote_add'
17
18
  require_relative 'organo/commands/remote/remote_remove'
18
19
  require_relative 'organo/commands/remote/remote_download'
@@ -46,6 +47,7 @@ module Organo
46
47
  prefix.register 'get season', API::Get::Season
47
48
  prefix.register 'get sequels', API::Get::Sequels
48
49
  prefix.register 'search anime', API::Search::Anime
50
+ prefix.register 'get schedule', API::Get::Schedule
49
51
  end
50
52
  register 'merge', Merge
51
53
  register 'statistics', Statistics
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.2
4
+ version: 0.3.3
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-03-21 00:00:00.000000000 Z
11
+ date: 2023-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-cli
@@ -78,8 +78,14 @@ files:
78
78
  - Gemfile
79
79
  - LICENSE.txt
80
80
  - README.md
81
+ - doc/anime.md
82
+ - doc/api.md
83
+ - doc/readme.md
84
+ - doc/remote.md
85
+ - doc/schedule.md
81
86
  - exe/organo
82
87
  - lib/organo.rb
88
+ - lib/organo/animeschedule_api.rb
83
89
  - lib/organo/commands/anime/anime_add.rb
84
90
  - lib/organo/commands/anime/anime_add_sequel.rb
85
91
  - lib/organo/commands/anime/anime_get_broken_links.rb
@@ -89,6 +95,7 @@ files:
89
95
  - lib/organo/commands/anime/anime_update_image.rb
90
96
  - lib/organo/commands/anime/anime_update_query.rb
91
97
  - lib/organo/commands/api/api_get_anime.rb
98
+ - lib/organo/commands/api/api_get_schedule.rb
92
99
  - lib/organo/commands/api/api_get_season.rb
93
100
  - lib/organo/commands/api/api_get_sequels.rb
94
101
  - lib/organo/commands/api/api_search_anime.rb