unclekryon 0.4.9.pre.alpha → 0.4.12.pre.alpha
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +10 -26
- data/Gemfile.lock +20 -24
- data/README.md +3 -2
- data/Rakefile +11 -30
- data/bin/unclekryon +4 -15
- data/hax/kryon.yaml +28 -0
- data/hax/kryon_aums_2002-2005.yaml +460 -0
- data/hax/kryon_aums_2006.yaml +601 -0
- data/hax/kryon_aums_2007.yaml +1024 -0
- data/hax/kryon_aums_2008.yaml +950 -0
- data/hax/kryon_aums_2009.yaml +496 -0
- data/hax/kryon_aums_2010.yaml +1443 -0
- data/hax/kryon_aums_2011.yaml +1458 -0
- data/hax/kryon_aums_2012.yaml +2123 -0
- data/hax/kryon_aums_2013.yaml +1647 -0
- data/hax/kryon_aums_2014.yaml +2478 -0
- data/hax/kryon_aums_2015.yaml +3386 -0
- data/hax/kryon_aums_2016.yaml +3476 -0
- data/hax/kryon_aums_2017.yaml +3712 -0
- data/hax/kryon_aums_2018.yaml +3654 -0
- data/lib/unclekryon/data/album_data.rb +74 -82
- data/lib/unclekryon/data/artist_data.rb +24 -36
- data/lib/unclekryon/data/artist_data_data.rb +29 -41
- data/lib/unclekryon/data/aum_data.rb +20 -32
- data/lib/unclekryon/data/base_data.rb +27 -39
- data/lib/unclekryon/data/pic_data.rb +25 -37
- data/lib/unclekryon/data/release_data.rb +14 -26
- data/lib/unclekryon/data/social_data.rb +6 -18
- data/lib/unclekryon/data/timespan_data.rb +16 -28
- data/lib/unclekryon/dev_opts.rb +7 -19
- data/lib/unclekryon/hacker.rb +121 -135
- data/lib/unclekryon/iso/base_iso.rb +69 -81
- data/lib/unclekryon/iso/can_prov_terr.rb +34 -47
- data/lib/unclekryon/iso/country.rb +34 -51
- data/lib/unclekryon/iso/language.rb +84 -98
- data/lib/unclekryon/iso/region.rb +8 -29
- data/lib/unclekryon/iso/subregion.rb +8 -29
- data/lib/unclekryon/iso/usa_state.rb +28 -41
- data/lib/unclekryon/iso.rb +128 -138
- data/lib/unclekryon/jsoner.rb +31 -50
- data/lib/unclekryon/log.rb +34 -46
- data/lib/unclekryon/parsers/kryon_aum_year_album_parser.rb +163 -167
- data/lib/unclekryon/parsers/kryon_aum_year_parser.rb +122 -127
- data/lib/unclekryon/server.rb +8 -17
- data/lib/unclekryon/trainer.rb +68 -85
- data/lib/unclekryon/uploader.rb +8 -17
- data/lib/unclekryon/util.rb +80 -92
- data/lib/unclekryon/version.rb +4 -16
- data/lib/unclekryon.rb +166 -166
- data/train/kryon.yaml +6077 -0
- data/unclekryon.gemspec +49 -49
- metadata +50 -22
@@ -1,23 +1,11 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
1
|
# encoding: UTF-8
|
3
2
|
# frozen_string_literal: true
|
4
3
|
|
5
4
|
#--
|
6
5
|
# This file is part of UncleKryon-server.
|
7
|
-
# Copyright (c) 2017-
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# it under the terms of the GNU General Public License as published by
|
11
|
-
# the Free Software Foundation, either version 3 of the License, or
|
12
|
-
# (at your option) any later version.
|
13
|
-
#
|
14
|
-
# UncleKryon-server is distributed in the hope that it will be useful,
|
15
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17
|
-
# GNU General Public License for more details.
|
18
|
-
#
|
19
|
-
# You should have received a copy of the GNU General Public License
|
20
|
-
# along with UncleKryon-server. If not, see <https://www.gnu.org/licenses/>.
|
6
|
+
# Copyright (c) 2017-2021 Jonathan Bradley Whited
|
7
|
+
#
|
8
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
21
9
|
#++
|
22
10
|
|
23
11
|
|
@@ -32,115 +20,119 @@ module UncleKryon
|
|
32
20
|
attr_accessor :title
|
33
21
|
attr_accessor :locations
|
34
22
|
attr_accessor :languages
|
35
|
-
|
23
|
+
|
36
24
|
attr_accessor :url
|
37
25
|
attr_accessor :mirrors
|
38
|
-
|
26
|
+
|
39
27
|
attr_accessor :desc
|
40
|
-
|
28
|
+
|
41
29
|
attr_accessor :pics
|
42
30
|
attr_accessor :aums
|
43
31
|
attr_accessor :scrolls
|
44
32
|
attr_accessor :visions
|
45
|
-
|
33
|
+
|
46
34
|
attr_accessor :dump
|
47
|
-
|
48
|
-
def initialize
|
35
|
+
|
36
|
+
def initialize
|
49
37
|
super()
|
50
|
-
|
38
|
+
|
51
39
|
@date_begin = ''
|
52
40
|
@date_end = ''
|
53
41
|
@title = ''
|
54
42
|
@locations = []
|
55
43
|
@languages = []
|
56
|
-
|
44
|
+
|
57
45
|
@url = ''
|
58
46
|
@mirrors = {}
|
59
|
-
|
47
|
+
|
60
48
|
@desc = ''
|
61
|
-
|
49
|
+
|
62
50
|
@pics = {}
|
63
51
|
@aums = {}
|
64
52
|
@scrolls = {}
|
65
53
|
@visions = {}
|
66
|
-
|
54
|
+
|
67
55
|
@dump = []
|
68
56
|
end
|
69
|
-
|
57
|
+
|
70
58
|
def initialize_copy(original)
|
71
59
|
super(original)
|
72
|
-
|
73
|
-
@date_begin = @date_begin.clone
|
74
|
-
@date_end = @date_end.clone
|
75
|
-
@title = @title.clone
|
76
|
-
@locations = @locations.clone
|
77
|
-
@languages = @languages.clone
|
78
|
-
|
79
|
-
@url = @url.clone
|
80
|
-
@mirrors = @mirrors.clone
|
81
|
-
|
82
|
-
@desc = @desc.clone
|
83
|
-
|
84
|
-
@pics = @pics.clone
|
85
|
-
@aums = @aums.clone
|
86
|
-
@scrolls = @scrolls.clone
|
87
|
-
@visions = @visions.clone
|
88
|
-
|
89
|
-
@dump = @dump.clone
|
60
|
+
|
61
|
+
@date_begin = @date_begin.clone
|
62
|
+
@date_end = @date_end.clone
|
63
|
+
@title = @title.clone
|
64
|
+
@locations = @locations.clone
|
65
|
+
@languages = @languages.clone
|
66
|
+
|
67
|
+
@url = @url.clone
|
68
|
+
@mirrors = @mirrors.clone
|
69
|
+
|
70
|
+
@desc = @desc.clone
|
71
|
+
|
72
|
+
@pics = @pics.clone
|
73
|
+
@aums = @aums.clone
|
74
|
+
@scrolls = @scrolls.clone
|
75
|
+
@visions = @visions.clone
|
76
|
+
|
77
|
+
@dump = @dump.clone
|
90
78
|
end
|
91
|
-
|
92
|
-
def
|
79
|
+
|
80
|
+
def update_if_not_empty!(album)
|
93
81
|
@date_begin = album.date_begin unless Util.empty_s?(album.date_begin)
|
94
82
|
@date_end = album.date_end unless Util.empty_s?(album.date_end)
|
95
83
|
@title = album.title unless Util.empty_s?(album.title)
|
96
|
-
@locations |= album.locations unless album.locations.nil?
|
97
|
-
@languages |= album.languages unless album.languages.nil?
|
98
|
-
|
84
|
+
@locations |= album.locations unless album.locations.nil?
|
85
|
+
@languages |= album.languages unless album.languages.nil?
|
86
|
+
|
99
87
|
@desc = album.desc unless Util.empty_s?(album.desc)
|
100
|
-
|
101
|
-
@pics |= album.pics unless album.pics.nil?
|
102
|
-
@aums |= album.aums unless album.aums.nil?
|
103
|
-
@scrolls |= album.scrolls unless album.scrolls.nil?
|
104
|
-
@visions |= album.visions unless album.visions.nil?
|
105
|
-
|
106
|
-
@dump |= album.dump unless album.dump.nil?
|
88
|
+
|
89
|
+
@pics |= album.pics unless album.pics.nil?
|
90
|
+
@aums |= album.aums unless album.aums.nil?
|
91
|
+
@scrolls |= album.scrolls unless album.scrolls.nil?
|
92
|
+
@visions |= album.visions unless album.visions.nil?
|
93
|
+
|
94
|
+
@dump |= album.dump unless album.dump.nil?
|
107
95
|
end
|
108
|
-
|
96
|
+
|
109
97
|
# Excludes @updated_on and @dump
|
110
|
-
def ==(
|
111
|
-
return @date_begin ==
|
112
|
-
@date_end ==
|
113
|
-
@title ==
|
114
|
-
@locations ==
|
115
|
-
@languages ==
|
116
|
-
@url ==
|
117
|
-
@mirrors ==
|
118
|
-
@desc ==
|
119
|
-
@pics ==
|
120
|
-
@aums ==
|
121
|
-
@scrolls ==
|
122
|
-
@visions ==
|
98
|
+
def ==(other)
|
99
|
+
return @date_begin == other.date_begin &&
|
100
|
+
@date_end == other.date_end &&
|
101
|
+
@title == other.title &&
|
102
|
+
@locations == other.locations &&
|
103
|
+
@languages == other.languages &&
|
104
|
+
@url == other.url &&
|
105
|
+
@mirrors == other.mirrors &&
|
106
|
+
@desc == other.desc &&
|
107
|
+
@pics == other.pics &&
|
108
|
+
@aums == other.aums &&
|
109
|
+
@scrolls == other.scrolls &&
|
110
|
+
@visions == other.visions
|
123
111
|
end
|
124
|
-
|
125
|
-
def to_mini_s
|
112
|
+
|
113
|
+
def to_mini_s
|
126
114
|
return to_s(true)
|
127
115
|
end
|
128
|
-
|
116
|
+
|
129
117
|
def to_s(mini=false)
|
130
118
|
s = ''
|
131
119
|
s << ('%-10s=>%-10s' % [@date_begin,@date_end])
|
132
120
|
s << (' | %60s' % [@title])
|
133
121
|
s << (' | %25s' % [@locations.join(';')])
|
134
122
|
s << (' | %10s' % [@languages.join(';')])
|
135
|
-
|
123
|
+
|
136
124
|
s << "\n- #{@desc}" unless mini
|
137
|
-
|
138
|
-
#s << (mini ? (' | pics:%3d' % [@pics.length()])
|
139
|
-
#
|
140
|
-
#s << (mini ? (' |
|
141
|
-
#
|
142
|
-
|
143
|
-
|
125
|
+
|
126
|
+
#s << (mini ? (' | pics:%3d' % [@pics.length()]) :
|
127
|
+
# ("\n- Pics:\n - " << @pics.join("\n - ")))
|
128
|
+
#s << (mini ? (' | aums:%3d' % [@aums.length()]) :
|
129
|
+
# ("\n- Aums:\n - " << @aums.join("\n - ")))
|
130
|
+
#s << (mini ? (' | scrolls:%3d' % [@scrolls.length()]) :
|
131
|
+
# ("\n- Scrolls:\n - " << @scrolls.join("\n - ")))
|
132
|
+
#s << (mini ? (' | visions:%3d' % [@visions.length()]) :
|
133
|
+
# ("\n- Visions:\n - " << @visions.join("\n - ")))
|
134
|
+
|
135
|
+
s << (mini ? (' | dump:%3d' % [@dump.length]) : ("\n- Dump:\n - " << @dump.join("\n - ")))
|
144
136
|
return s
|
145
137
|
end
|
146
138
|
end
|
@@ -1,23 +1,11 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
1
|
# encoding: UTF-8
|
3
2
|
# frozen_string_literal: true
|
4
3
|
|
5
4
|
#--
|
6
5
|
# This file is part of UncleKryon-server.
|
7
|
-
# Copyright (c) 2017-
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# it under the terms of the GNU General Public License as published by
|
11
|
-
# the Free Software Foundation, either version 3 of the License, or
|
12
|
-
# (at your option) any later version.
|
13
|
-
#
|
14
|
-
# UncleKryon-server is distributed in the hope that it will be useful,
|
15
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17
|
-
# GNU General Public License for more details.
|
18
|
-
#
|
19
|
-
# You should have received a copy of the GNU General Public License
|
20
|
-
# along with UncleKryon-server. If not, see <https://www.gnu.org/licenses/>.
|
6
|
+
# Copyright (c) 2017-2021 Jonathan Bradley Whited
|
7
|
+
#
|
8
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
21
9
|
#++
|
22
10
|
|
23
11
|
|
@@ -31,69 +19,69 @@ require 'unclekryon/data/social_data'
|
|
31
19
|
module UncleKryon
|
32
20
|
class ArtistData < BaseData
|
33
21
|
ID = 'Artist'
|
34
|
-
|
22
|
+
|
35
23
|
attr_accessor :updated_releases_on
|
36
24
|
attr_accessor :updated_albums_on
|
37
25
|
attr_accessor :updated_aums_on
|
38
26
|
attr_accessor :updated_scrolls_on
|
39
27
|
attr_accessor :updated_visions_on
|
40
28
|
attr_accessor :updated_pics_on
|
41
|
-
|
29
|
+
|
42
30
|
attr_accessor :id
|
43
31
|
attr_accessor :name
|
44
32
|
attr_accessor :long_name
|
45
33
|
attr_accessor :desc
|
46
|
-
|
34
|
+
|
47
35
|
attr_accessor :url
|
48
36
|
attr_accessor :mirrors
|
49
|
-
|
37
|
+
|
50
38
|
attr_accessor :facebook
|
51
39
|
attr_accessor :twitter
|
52
40
|
attr_accessor :youtube
|
53
|
-
|
54
|
-
def initialize
|
41
|
+
|
42
|
+
def initialize
|
55
43
|
super()
|
56
|
-
|
44
|
+
|
57
45
|
@updated_releases_on = ''
|
58
46
|
@updated_albums_on = ''
|
59
47
|
@updated_aums_on = ''
|
60
48
|
@updated_scrolls_on = ''
|
61
49
|
@updated_visions_on = ''
|
62
50
|
@updated_pics_on = ''
|
63
|
-
|
51
|
+
|
64
52
|
@id = ''
|
65
53
|
@name = ''
|
66
54
|
@long_name = ''
|
67
55
|
@desc = ''
|
68
|
-
|
56
|
+
|
69
57
|
@url = ''
|
70
58
|
@mirrors = {}
|
71
|
-
|
72
|
-
@facebook = SocialData.new
|
73
|
-
@twitter = SocialData.new
|
74
|
-
@youtube = SocialData.new
|
59
|
+
|
60
|
+
@facebook = SocialData.new
|
61
|
+
@twitter = SocialData.new
|
62
|
+
@youtube = SocialData.new
|
75
63
|
end
|
76
|
-
|
64
|
+
|
77
65
|
def self.load_file(filepath)
|
78
66
|
y = YAML.load_file(filepath)
|
79
67
|
artist = y[ID]
|
80
68
|
return artist
|
81
69
|
end
|
82
|
-
|
70
|
+
|
83
71
|
def save_to_file(filepath,**options)
|
84
|
-
raise "Empty filepath: #{filepath}" if filepath.nil?
|
85
|
-
|
72
|
+
raise "Empty filepath: #{filepath}" if filepath.nil? || (filepath = filepath.strip).empty?
|
73
|
+
|
86
74
|
Util.mk_dirs_from_filepath(filepath)
|
87
75
|
File.open(filepath,'w') do |f|
|
88
|
-
artist = {ID=>self}
|
76
|
+
artist = {ID => self}
|
89
77
|
YAML.dump(artist,f)
|
90
78
|
end
|
91
79
|
end
|
92
|
-
|
93
|
-
def to_mini_s
|
80
|
+
|
81
|
+
def to_mini_s
|
94
82
|
return to_s(true)
|
95
83
|
end
|
96
|
-
|
84
|
+
|
97
85
|
def to_s(mini=false)
|
98
86
|
s = ''
|
99
87
|
s << ('%-5s' % [@id])
|
@@ -1,23 +1,11 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
1
|
# encoding: UTF-8
|
3
2
|
# frozen_string_literal: true
|
4
3
|
|
5
4
|
#--
|
6
5
|
# This file is part of UncleKryon-server.
|
7
|
-
# Copyright (c) 2017-
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# it under the terms of the GNU General Public License as published by
|
11
|
-
# the Free Software Foundation, either version 3 of the License, or
|
12
|
-
# (at your option) any later version.
|
13
|
-
#
|
14
|
-
# UncleKryon-server is distributed in the hope that it will be useful,
|
15
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17
|
-
# GNU General Public License for more details.
|
18
|
-
#
|
19
|
-
# You should have received a copy of the GNU General Public License
|
20
|
-
# along with UncleKryon-server. If not, see <https://www.gnu.org/licenses/>.
|
6
|
+
# Copyright (c) 2017-2021 Jonathan Bradley Whited
|
7
|
+
#
|
8
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
21
9
|
#++
|
22
10
|
|
23
11
|
|
@@ -43,17 +31,17 @@ module UncleKryon
|
|
43
31
|
SCROLLS_ID = 'Scrolls'
|
44
32
|
VISIONS_ID = 'Visions'
|
45
33
|
PICS_ID = 'Pics'
|
46
|
-
|
34
|
+
|
47
35
|
attr_accessor :releases
|
48
36
|
attr_accessor :albums
|
49
37
|
#attr_accessor :aums
|
50
38
|
#attr_accessor :scrolls
|
51
39
|
#attr_accessor :visions
|
52
40
|
#attr_accessor :pics
|
53
|
-
|
54
|
-
def initialize
|
41
|
+
|
42
|
+
def initialize
|
55
43
|
super()
|
56
|
-
|
44
|
+
|
57
45
|
@releases = {}
|
58
46
|
@albums = {}
|
59
47
|
#@aums = {}
|
@@ -61,12 +49,12 @@ module UncleKryon
|
|
61
49
|
#@visions = {}
|
62
50
|
#@pics = {}
|
63
51
|
end
|
64
|
-
|
52
|
+
|
65
53
|
def self.load_file(filepath)
|
66
54
|
filedata = YAML.load_file(filepath) if File.exist?(filepath)
|
67
55
|
filedata = {} if !filedata
|
68
|
-
|
69
|
-
artist = ArtistDataData.new
|
56
|
+
|
57
|
+
artist = ArtistDataData.new
|
70
58
|
Util.hash_def(filedata,[ID],{})
|
71
59
|
artist.releases = Util.hash_def(filedata,[ID,RELEASES_ID],artist.releases)
|
72
60
|
artist.albums = Util.hash_def(filedata,[ID,ALBUMS_ID],artist.albums)
|
@@ -74,28 +62,28 @@ module UncleKryon
|
|
74
62
|
#artist.scrolls = Util.hash_def(filedata,[ID,SCROLLS_ID],artist.scrolls)
|
75
63
|
#artist.visions = Util.hash_def(filedata,[ID,VISIONS_ID],artist.visions)
|
76
64
|
#artist.pics = Util.hash_def(filedata,[ID,PICS_ID],artist.pics)
|
77
|
-
|
65
|
+
|
78
66
|
return artist
|
79
67
|
end
|
80
|
-
|
68
|
+
|
81
69
|
def save_to_file(filepath,**options)
|
82
|
-
raise "Empty filepath: #{filepath}" if filepath.nil?
|
83
|
-
|
84
|
-
filedata = {ID=>{}}
|
70
|
+
raise "Empty filepath: #{filepath}" if filepath.nil? || (filepath = filepath.strip).empty?
|
71
|
+
|
72
|
+
filedata = {ID => {}}
|
85
73
|
filedata[ID][RELEASES_ID] = @releases
|
86
74
|
filedata[ID][ALBUMS_ID] = @albums
|
87
75
|
#filedata[ID][AUMS_ID] = @aums
|
88
76
|
#filedata[ID][SCROLLS_ID] = @scrolls
|
89
77
|
#filedata[ID][VISIONS_ID] = @visions
|
90
78
|
#filedata[ID][PICS_ID] = @pics
|
91
|
-
|
79
|
+
|
92
80
|
Util.mk_dirs_from_filepath(filepath)
|
93
81
|
File.open(filepath,'w') do |f|
|
94
82
|
YAML.dump(filedata,f)
|
95
83
|
end
|
96
84
|
end
|
97
|
-
|
98
|
-
def max_updated_on
|
85
|
+
|
86
|
+
def max_updated_on
|
99
87
|
max = nil
|
100
88
|
max = Util.safe_max(max,BaseData.max_updated_on(@releases))
|
101
89
|
max = Util.safe_max(max,BaseData.max_updated_on(@albums))
|
@@ -103,26 +91,26 @@ module UncleKryon
|
|
103
91
|
#max = Util.safe_max(max,BaseData.max_updated_on(@scrolls))
|
104
92
|
#max = Util.safe_max(max,BaseData.max_updated_on(@visions))
|
105
93
|
#max = Util.safe_max(max,BaseData.max_updated_on(@pics))
|
106
|
-
|
94
|
+
|
107
95
|
return Util.format_datetime(max)
|
108
96
|
end
|
109
|
-
|
110
|
-
def to_mini_s
|
97
|
+
|
98
|
+
def to_mini_s
|
111
99
|
return to_s(true)
|
112
100
|
end
|
113
|
-
|
101
|
+
|
114
102
|
def to_s(mini=false)
|
115
103
|
s = ''
|
116
|
-
|
104
|
+
|
117
105
|
s << "- Releases:\n"
|
118
|
-
@releases.each
|
119
|
-
s <<
|
106
|
+
@releases.each do |k,v|
|
107
|
+
s << ' - ' << v.to_s(mini).gsub("\n","\n ") << "\n"
|
120
108
|
end
|
121
109
|
s << "- Albums:\n"
|
122
|
-
@albums.each
|
123
|
-
s <<
|
110
|
+
@albums.each do |k,v|
|
111
|
+
s << ' - ' << v.to_s(mini).gsub("\n","\n ") << "\n"
|
124
112
|
end
|
125
|
-
|
113
|
+
|
126
114
|
#s << "- Aums:\n"
|
127
115
|
#@aums.each() do |k,v|
|
128
116
|
# s << " - #{v.to_s()}\n"
|
@@ -139,7 +127,7 @@ module UncleKryon
|
|
139
127
|
#@pics.each() do |k,v|
|
140
128
|
# s << " - #{v.to_s()}\n"
|
141
129
|
#end
|
142
|
-
|
130
|
+
|
143
131
|
return s
|
144
132
|
end
|
145
133
|
end
|
@@ -1,23 +1,11 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
1
|
# encoding: UTF-8
|
3
2
|
# frozen_string_literal: true
|
4
3
|
|
5
4
|
#--
|
6
5
|
# This file is part of UncleKryon-server.
|
7
|
-
# Copyright (c) 2017-
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# it under the terms of the GNU General Public License as published by
|
11
|
-
# the Free Software Foundation, either version 3 of the License, or
|
12
|
-
# (at your option) any later version.
|
13
|
-
#
|
14
|
-
# UncleKryon-server is distributed in the hope that it will be useful,
|
15
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17
|
-
# GNU General Public License for more details.
|
18
|
-
#
|
19
|
-
# You should have received a copy of the GNU General Public License
|
20
|
-
# along with UncleKryon-server. If not, see <https://www.gnu.org/licenses/>.
|
6
|
+
# Copyright (c) 2017-2021 Jonathan Bradley Whited
|
7
|
+
#
|
8
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
21
9
|
#++
|
22
10
|
|
23
11
|
|
@@ -31,37 +19,37 @@ module UncleKryon
|
|
31
19
|
attr_accessor :timespan
|
32
20
|
attr_accessor :filesize
|
33
21
|
attr_accessor :filename
|
34
|
-
|
22
|
+
|
35
23
|
attr_accessor :url
|
36
24
|
attr_accessor :mirrors
|
37
|
-
|
38
|
-
def initialize
|
25
|
+
|
26
|
+
def initialize
|
39
27
|
super()
|
40
|
-
|
28
|
+
|
41
29
|
@title = ''
|
42
30
|
@subtitle = ''
|
43
31
|
@languages = []
|
44
32
|
@timespan = ''
|
45
33
|
@filesize = ''
|
46
34
|
@filename = ''
|
47
|
-
|
35
|
+
|
48
36
|
@url = ''
|
49
37
|
@mirrors = {}
|
50
38
|
end
|
51
|
-
|
39
|
+
|
52
40
|
# Excludes @updated_on
|
53
|
-
def ==(
|
54
|
-
return @title ==
|
55
|
-
@subtitle ==
|
56
|
-
@languages ==
|
57
|
-
@timespan ==
|
58
|
-
@filesize ==
|
59
|
-
@filename ==
|
60
|
-
@url ==
|
61
|
-
@mirrors ==
|
41
|
+
def ==(other)
|
42
|
+
return @title == other.title &&
|
43
|
+
@subtitle == other.subtitle &&
|
44
|
+
@languages == other.languages &&
|
45
|
+
@timespan == other.timespan &&
|
46
|
+
@filesize == other.filesize &&
|
47
|
+
@filename == other.filename &&
|
48
|
+
@url == other.url &&
|
49
|
+
@mirrors == other.mirrors
|
62
50
|
end
|
63
|
-
|
64
|
-
def to_s
|
51
|
+
|
52
|
+
def to_s
|
65
53
|
s = ''
|
66
54
|
s << ('%-40s' % [@title])
|
67
55
|
s << (' | %30s' % [@subtitle])
|
@@ -1,23 +1,11 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
1
|
# encoding: UTF-8
|
3
2
|
# frozen_string_literal: true
|
4
3
|
|
5
4
|
#--
|
6
5
|
# This file is part of UncleKryon-server.
|
7
|
-
# Copyright (c) 2018-
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# it under the terms of the GNU General Public License as published by
|
11
|
-
# the Free Software Foundation, either version 3 of the License, or
|
12
|
-
# (at your option) any later version.
|
13
|
-
#
|
14
|
-
# UncleKryon-server is distributed in the hope that it will be useful,
|
15
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17
|
-
# GNU General Public License for more details.
|
18
|
-
#
|
19
|
-
# You should have received a copy of the GNU General Public License
|
20
|
-
# along with UncleKryon-server. If not, see <https://www.gnu.org/licenses/>.
|
6
|
+
# Copyright (c) 2018-2021 Jonathan Bradley Whited
|
7
|
+
#
|
8
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
21
9
|
#++
|
22
10
|
|
23
11
|
|
@@ -28,50 +16,50 @@ require 'unclekryon/util'
|
|
28
16
|
module UncleKryon
|
29
17
|
class BaseData
|
30
18
|
attr_accessor :updated_on
|
31
|
-
|
32
|
-
def initialize
|
33
|
-
update
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
update
|
34
22
|
end
|
35
|
-
|
23
|
+
|
36
24
|
def initialize_copy(original)
|
37
25
|
super(original)
|
38
|
-
|
39
|
-
@updated_on = @updated_on.clone
|
26
|
+
|
27
|
+
@updated_on = @updated_on.clone
|
40
28
|
end
|
41
|
-
|
42
|
-
def update
|
43
|
-
@updated_on = Util.format_datetime(DateTime.now
|
29
|
+
|
30
|
+
def update
|
31
|
+
@updated_on = Util.format_datetime(DateTime.now)
|
44
32
|
return @updated_on
|
45
33
|
end
|
46
|
-
|
47
|
-
def max_updated_on
|
34
|
+
|
35
|
+
def max_updated_on
|
48
36
|
max = nil
|
49
|
-
|
37
|
+
|
50
38
|
instance_variables.each do |iv|
|
51
|
-
vuo = Util.parse_datetime_s(instance_variable_get(iv)) if iv.to_s
|
52
|
-
max = vuo if max.nil?
|
39
|
+
vuo = Util.parse_datetime_s(instance_variable_get(iv)) if iv.to_s =~ /\A@updated_.+_on\z/
|
40
|
+
max = vuo if max.nil? || vuo > max
|
53
41
|
end
|
54
|
-
|
42
|
+
|
55
43
|
return max
|
56
44
|
end
|
57
|
-
|
45
|
+
|
58
46
|
def self.max_updated_on(data)
|
59
47
|
max = nil
|
60
|
-
|
48
|
+
|
61
49
|
if data.is_a?(Hash)
|
62
|
-
data.each
|
50
|
+
data.each do |k,v|
|
63
51
|
vuo = Util.parse_datetime_s(v.updated_on)
|
64
|
-
max = vuo if max.nil?
|
52
|
+
max = vuo if max.nil? || vuo > max
|
65
53
|
end
|
66
54
|
end
|
67
|
-
|
55
|
+
|
68
56
|
return max
|
69
57
|
end
|
70
|
-
|
71
|
-
def max_updated_on_s
|
72
|
-
return Util.format_datetime(max_updated_on
|
58
|
+
|
59
|
+
def max_updated_on_s
|
60
|
+
return Util.format_datetime(max_updated_on)
|
73
61
|
end
|
74
|
-
|
62
|
+
|
75
63
|
def self.max_updated_on_s(data)
|
76
64
|
return Util.format_datetime(max_updated_on(data))
|
77
65
|
end
|