aniview 1.3.0 → 2.0.0
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 +4 -4
- data/bin/aniview +2 -3
- data/lib/aniview.rb +50 -243
- data/lib/aniview/client/aniclient.rb +111 -53
- data/lib/aniview/interface/animeio/animefile.rb +73 -64
- data/lib/aniview/interface/animeio/animeio.rb +184 -181
- data/lib/aniview/interface/animeio/animeseries.rb +53 -48
- data/lib/aniview/interface/deluge/delugec.rb +158 -153
- data/lib/aniview/interface/deluge/torrentitem.rb +21 -16
- data/lib/aniview/interface/item.rb +21 -17
- data/lib/aniview/interface/mpv/mpvbridge.rb +78 -73
- data/lib/aniview/interface/pref/pref.rb +135 -132
- data/lib/aniview/interface/pref/prefitem.rb +16 -15
- data/lib/aniview/interface/schedule/schedule.rb +89 -83
- data/lib/aniview/interface/schedule/scheduleitem.rb +54 -51
- data/lib/aniview/interface/subscription/subscription.rb +111 -108
- data/lib/aniview/util/term.rb +39 -36
- data/lib/aniview/util/util.rb +149 -0
- data/lib/aniview/view/aiomenu.rb +68 -63
- data/lib/aniview/view/color.rb +69 -67
- data/lib/aniview/view/delugemenu.rb +44 -40
- data/lib/aniview/view/menu.rb +281 -286
- data/lib/aniview/view/prefmenu.rb +36 -34
- data/lib/aniview/view/schedulemenu.rb +32 -29
- data/lib/aniview/view/statusline.rb +19 -14
- data/lib/aniview/view/subscriptionmenu.rb +35 -32
- data/lib/application.rb +260 -0
- data/lib/daemon.rb +174 -0
- metadata +5 -12
- data/bin/aniviewd +0 -20
- data/lib/aniview/util/alogger.rb +0 -18
- data/lib/aniview/util/command.rb +0 -25
- data/lib/aniview/util/format.rb +0 -123
- data/lib/aniview/util/online.rb +0 -12
- data/lib/aniview/util/serializer.rb +0 -19
- data/lib/aniview/util/stringhelp.rb +0 -50
- data/lib/aniview/view/emote.rb +0 -345
- data/lib/aniviewd.rb +0 -179
@@ -1,50 +0,0 @@
|
|
1
|
-
class StringHelp
|
2
|
-
|
3
|
-
#returns the minimum of three numbers
|
4
|
-
def self.minimum(a, b, c)
|
5
|
-
if a > b
|
6
|
-
return c if b > c
|
7
|
-
return b
|
8
|
-
else
|
9
|
-
return c if a > c
|
10
|
-
return a
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
#returns the levenshitein distance between two strings s and t
|
15
|
-
def self.levenshteinDistance(s, t)
|
16
|
-
s = "_" + s
|
17
|
-
t = "_" + t
|
18
|
-
|
19
|
-
d = []
|
20
|
-
for i in 0..s.length
|
21
|
-
r = []
|
22
|
-
for j in 0..t.length
|
23
|
-
r << 0
|
24
|
-
end
|
25
|
-
d << r
|
26
|
-
end
|
27
|
-
|
28
|
-
for i in 1..s.length
|
29
|
-
d[i][0]=i
|
30
|
-
end
|
31
|
-
|
32
|
-
for j in 1..t.length
|
33
|
-
d[0][j]=j
|
34
|
-
end
|
35
|
-
|
36
|
-
for j in 1..t.length
|
37
|
-
for i in 1..s.length
|
38
|
-
cost = 1
|
39
|
-
cost = 0 if s[i] == t[j]
|
40
|
-
d[i][j] = self.minimum(
|
41
|
-
d[i-1][ j ] + 1,
|
42
|
-
d[ i ][j-1] + 1,
|
43
|
-
d[i-1][j-1] + cost
|
44
|
-
)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
return d[s.length][t.length]
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
data/lib/aniview/view/emote.rb
DELETED
@@ -1,345 +0,0 @@
|
|
1
|
-
class Emote
|
2
|
-
|
3
|
-
def self.amazed
|
4
|
-
'( ゚д゚)'
|
5
|
-
end
|
6
|
-
|
7
|
-
def self.a
|
8
|
-
'( ゚д゚)'
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.angry
|
12
|
-
'(#゚Д゚)'
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.b
|
16
|
-
'(#゚Д゚)'
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.bad
|
20
|
-
'(・A・)'
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.c
|
24
|
-
'(・A・)'
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.bowing
|
28
|
-
'm(_ _)m'
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.d
|
32
|
-
'm(_ _)m'
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.bun
|
36
|
-
'⊂二二二( ^ω^)二⊃'
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.e
|
40
|
-
'⊂二二二( ^ω^)二⊃'
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.carefree
|
44
|
-
'(´∀`)'
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.f
|
48
|
-
'(´∀`)'
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.chinese
|
52
|
-
'(`ハ´)'
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.g
|
56
|
-
'(`ハ´)'
|
57
|
-
end
|
58
|
-
|
59
|
-
def self.crying
|
60
|
-
'( ´Д⊂ヽ'
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.h
|
64
|
-
'(´Д⊂ヽ'
|
65
|
-
end
|
66
|
-
|
67
|
-
def self.deflagged
|
68
|
-
'[゚д゚]'
|
69
|
-
end
|
70
|
-
|
71
|
-
def self.i
|
72
|
-
'[゚д゚]'
|
73
|
-
end
|
74
|
-
|
75
|
-
def self.deflated
|
76
|
-
'(´・ω・`)'
|
77
|
-
end
|
78
|
-
|
79
|
-
def self.j
|
80
|
-
'(´・ω・`)'
|
81
|
-
end
|
82
|
-
|
83
|
-
def self.depressed
|
84
|
-
'( ´
|
85
|
-
end
|
86
|
-
_ゝ`)'
|
87
|
-
end
|
88
|
-
|
89
|
-
def self.k
|
90
|
-
'( ´
|
91
|
-
end
|
92
|
-
_ゝ`)'
|
93
|
-
end
|
94
|
-
|
95
|
-
def self.dontknow
|
96
|
-
'┐(`~`;)┌'
|
97
|
-
end
|
98
|
-
|
99
|
-
def self.l
|
100
|
-
'┐(`~`;)┌'
|
101
|
-
end
|
102
|
-
|
103
|
-
def self.evillaugh
|
104
|
-
'( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \'
|
105
|
-
end
|
106
|
-
|
107
|
-
def self.m
|
108
|
-
'( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \'
|
109
|
-
end
|
110
|
-
|
111
|
-
def self.excitement
|
112
|
-
'キタ━━━━━━(゚∀゚)━━━━━━!!!!!'
|
113
|
-
end
|
114
|
-
|
115
|
-
def self.n
|
116
|
-
'キタ━━━━━━(゚∀゚)━━━━━━!!!!!'
|
117
|
-
end
|
118
|
-
|
119
|
-
def self.goofy
|
120
|
-
'(゚∀゚)'
|
121
|
-
end
|
122
|
-
|
123
|
-
def self.o
|
124
|
-
'(゚∀゚)'
|
125
|
-
end
|
126
|
-
|
127
|
-
def self.happy
|
128
|
-
'( ゚ ヮ゚)'
|
129
|
-
end
|
130
|
-
|
131
|
-
def self.p
|
132
|
-
'( ゚ ヮ゚)'
|
133
|
-
end
|
134
|
-
|
135
|
-
def self.heh
|
136
|
-
'(´・∀・`)'
|
137
|
-
end
|
138
|
-
|
139
|
-
def self.q
|
140
|
-
'(´•∀•`)'
|
141
|
-
end
|
142
|
-
|
143
|
-
def self.hooray
|
144
|
-
'\(^o^)/'
|
145
|
-
end
|
146
|
-
|
147
|
-
def self.r
|
148
|
-
'\(^o^)/'
|
149
|
-
end
|
150
|
-
|
151
|
-
def self.hugesurprise
|
152
|
-
'Σ(゚Д゚)'
|
153
|
-
end
|
154
|
-
|
155
|
-
def self.s
|
156
|
-
'Σ(゚Д゚)'
|
157
|
-
end
|
158
|
-
|
159
|
-
def self.impatience
|
160
|
-
'(゚Д゚;≡;゚Д゚)'
|
161
|
-
end
|
162
|
-
|
163
|
-
def self.t
|
164
|
-
'(゚Д゚;≡;゚Д゚)'
|
165
|
-
end
|
166
|
-
|
167
|
-
def self.indifferent
|
168
|
-
'( ´_ゝ`)'
|
169
|
-
end
|
170
|
-
|
171
|
-
def self.u
|
172
|
-
'( ´_ゝ`)'
|
173
|
-
end
|
174
|
-
|
175
|
-
def self.intuition
|
176
|
-
'm9(・∀・)'
|
177
|
-
end
|
178
|
-
|
179
|
-
def self.v
|
180
|
-
'm9(・∀・)'
|
181
|
-
end
|
182
|
-
|
183
|
-
def self.irritable
|
184
|
-
'ヽ(`Д´)ノ'
|
185
|
-
end
|
186
|
-
|
187
|
-
def self.w
|
188
|
-
'ヽ(`Д´)ノ'
|
189
|
-
end
|
190
|
-
|
191
|
-
def self.koi
|
192
|
-
'щ(゚Д゚щ)'
|
193
|
-
end
|
194
|
-
|
195
|
-
def self.x
|
196
|
-
'щ(゚Д゚щ)'
|
197
|
-
end
|
198
|
-
|
199
|
-
def self.korean
|
200
|
-
'<`∀´>'
|
201
|
-
end
|
202
|
-
|
203
|
-
def self.y
|
204
|
-
'<`∀´>'
|
205
|
-
end
|
206
|
-
|
207
|
-
def self.money
|
208
|
-
'(・∀・)つ⑩'
|
209
|
-
end
|
210
|
-
|
211
|
-
def self.z
|
212
|
-
'(・∀・)つ⑩'
|
213
|
-
end
|
214
|
-
|
215
|
-
def self.panting
|
216
|
-
'( ´Д`)'
|
217
|
-
end
|
218
|
-
|
219
|
-
def self.M
|
220
|
-
'( ´Д`)'
|
221
|
-
end
|
222
|
-
|
223
|
-
def self.peace
|
224
|
-
'ヽ(´ー`)ノ'
|
225
|
-
end
|
226
|
-
|
227
|
-
def self.N
|
228
|
-
'ヽ(´ー`)ノ'
|
229
|
-
end
|
230
|
-
|
231
|
-
def self.perky
|
232
|
-
'(`・ω・´)'
|
233
|
-
end
|
234
|
-
|
235
|
-
def self.O
|
236
|
-
'(`・ω・´)'
|
237
|
-
end
|
238
|
-
|
239
|
-
def self.sad
|
240
|
-
'(´;ω;`)'
|
241
|
-
end
|
242
|
-
|
243
|
-
def self.P
|
244
|
-
'(´;ω;`)'
|
245
|
-
end
|
246
|
-
|
247
|
-
def self.sarcasm
|
248
|
-
'(・∀・)'
|
249
|
-
end
|
250
|
-
|
251
|
-
def self.A
|
252
|
-
'(・∀・)'
|
253
|
-
end
|
254
|
-
|
255
|
-
def self.shocked
|
256
|
-
'Σ(゜д゜;)'
|
257
|
-
end
|
258
|
-
|
259
|
-
def self.B
|
260
|
-
'Σ(゜д゜;)'
|
261
|
-
end
|
262
|
-
|
263
|
-
def self.smoking
|
264
|
-
'(´ー`)y-~~'
|
265
|
-
end
|
266
|
-
|
267
|
-
def self.C
|
268
|
-
'(´ー`)y-~~'
|
269
|
-
end
|
270
|
-
|
271
|
-
def self.snorlax
|
272
|
-
'( ̄ー ̄)'
|
273
|
-
end
|
274
|
-
|
275
|
-
def self.D
|
276
|
-
'( ̄ー ̄)'
|
277
|
-
end
|
278
|
-
|
279
|
-
def self.spooked
|
280
|
-
'(((( ;゚Д゚)))'
|
281
|
-
end
|
282
|
-
|
283
|
-
def self.E
|
284
|
-
'(((( ;゚Д゚)))'
|
285
|
-
end
|
286
|
-
|
287
|
-
def self.stirring
|
288
|
-
'(*´Д`)'
|
289
|
-
end
|
290
|
-
|
291
|
-
def self.F
|
292
|
-
'(*´Д`)'
|
293
|
-
end
|
294
|
-
|
295
|
-
def self.supercilious
|
296
|
-
'm9(^Д^)'
|
297
|
-
end
|
298
|
-
|
299
|
-
def self.G
|
300
|
-
'm9(^Д^)'
|
301
|
-
end
|
302
|
-
|
303
|
-
def self.surprised
|
304
|
-
'( ゚Д゚)'
|
305
|
-
end
|
306
|
-
|
307
|
-
def self.H
|
308
|
-
'( ゚Д゚)'
|
309
|
-
end
|
310
|
-
|
311
|
-
def self.tfwnogf
|
312
|
-
'(`A`)'
|
313
|
-
end
|
314
|
-
|
315
|
-
def self.I
|
316
|
-
'(`A`)'
|
317
|
-
end
|
318
|
-
|
319
|
-
def self.thinking
|
320
|
-
'(´-`).。oO'
|
321
|
-
end
|
322
|
-
|
323
|
-
def self.J
|
324
|
-
'(´-`).。oO'
|
325
|
-
end
|
326
|
-
|
327
|
-
def self.unconvincing
|
328
|
-
'エェェ(´д`)ェェエ'
|
329
|
-
end
|
330
|
-
|
331
|
-
def self.K
|
332
|
-
'エェェ(´д`)ェェエ'
|
333
|
-
end
|
334
|
-
|
335
|
-
def self.unforeseen
|
336
|
-
'(゚д゚)'
|
337
|
-
end
|
338
|
-
|
339
|
-
def self.L
|
340
|
-
'(゚д゚)'
|
341
|
-
end
|
342
|
-
|
343
|
-
end
|
344
|
-
|
345
|
-
|
data/lib/aniviewd.rb
DELETED
@@ -1,179 +0,0 @@
|
|
1
|
-
require 'thread'
|
2
|
-
require 'socket'
|
3
|
-
require 'warning'
|
4
|
-
|
5
|
-
Warning.ignore([:fixnum, :bignum])
|
6
|
-
|
7
|
-
require_relative 'aniview/interface/deluge/delugec'
|
8
|
-
require_relative 'aniview/interface/pref/pref'
|
9
|
-
require_relative 'aniview/interface/schedule/schedule'
|
10
|
-
require_relative 'aniview/interface/subscription/subscription'
|
11
|
-
require_relative 'aniview/client/aniclient'
|
12
|
-
require_relative 'aniview/util/format'
|
13
|
-
require_relative 'aniview/util/serializer'
|
14
|
-
|
15
|
-
require_relative 'aniview/util/alogger'
|
16
|
-
|
17
|
-
class AniViewd
|
18
|
-
|
19
|
-
def initialize(args)
|
20
|
-
|
21
|
-
@pref = Pref.new
|
22
|
-
@c = AniClient.new @pref
|
23
|
-
|
24
|
-
#@l = ALogger.new(@pref.get("daemon_log_file"), false)
|
25
|
-
|
26
|
-
args << "start" if args.length < 1
|
27
|
-
parseArgs args
|
28
|
-
|
29
|
-
@schedule = Schedule.new @pref
|
30
|
-
@delugec = DelugeC.new(@pref)
|
31
|
-
@subscription = Subscription.new(@pref, @schedule, @delugec, @c)
|
32
|
-
|
33
|
-
begin
|
34
|
-
@s = TCPServer.new @pref.get("daemon")["port"]
|
35
|
-
rescue Errno::EADDRINUSE
|
36
|
-
puts "error, something is already listening on #{@pref.get("daemon")["port"]}, maybe the \nserver is already running?"
|
37
|
-
quit
|
38
|
-
end
|
39
|
-
@looped = 0
|
40
|
-
@matches = 0
|
41
|
-
@lastchecked = "never"
|
42
|
-
|
43
|
-
$stdout.reopen(@pref.parseDir(@pref.get("daemon_log_file")), "w")
|
44
|
-
$stderr.reopen(@pref.parseDir(@pref.get("daemon_log_file")), "w")
|
45
|
-
$stdout.sync = true
|
46
|
-
$stderr.sync = true
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
def parseArgs args
|
51
|
-
args.each { |a|
|
52
|
-
case a
|
53
|
-
when "help"
|
54
|
-
help
|
55
|
-
quit
|
56
|
-
when "start"
|
57
|
-
if @c.server?
|
58
|
-
puts "already running"
|
59
|
-
quit
|
60
|
-
end
|
61
|
-
when "stop"
|
62
|
-
if @c.server?
|
63
|
-
puts "quitting"
|
64
|
-
@c.stopDaemon
|
65
|
-
quit
|
66
|
-
else
|
67
|
-
puts "server isn't running"
|
68
|
-
quit
|
69
|
-
end
|
70
|
-
when "info"
|
71
|
-
if @c.server?
|
72
|
-
puts @c.info
|
73
|
-
quit
|
74
|
-
else
|
75
|
-
puts "server isn't running"
|
76
|
-
quit
|
77
|
-
end
|
78
|
-
when "up?"
|
79
|
-
puts @c.server?
|
80
|
-
quit
|
81
|
-
when "nani"
|
82
|
-
puts @c.sendMsg("what?")
|
83
|
-
quit
|
84
|
-
when "items"
|
85
|
-
p @c.getItems
|
86
|
-
quit
|
87
|
-
else
|
88
|
-
puts "unknown command, dude!"
|
89
|
-
quit
|
90
|
-
end
|
91
|
-
}
|
92
|
-
end
|
93
|
-
|
94
|
-
def help
|
95
|
-
cmds = ["help", "start", "stop", "info", "up?", "nani"]
|
96
|
-
puts "commands:"
|
97
|
-
puts cmds.sort
|
98
|
-
end
|
99
|
-
|
100
|
-
def checkFeeds
|
101
|
-
Thread.abort_on_exception = true
|
102
|
-
Thread.new do
|
103
|
-
while true
|
104
|
-
@subscription.updateFeed
|
105
|
-
|
106
|
-
if @subscription.feed == nil
|
107
|
-
@lastchecked = "offline"
|
108
|
-
else
|
109
|
-
@lastchecked = Time.now.to_s
|
110
|
-
@schedule.load
|
111
|
-
@matches += @subscription.matchAll(verbose: true)
|
112
|
-
end
|
113
|
-
|
114
|
-
#p @schedule.getAll
|
115
|
-
@looped += 1
|
116
|
-
sleep Integer(@pref.get("rss_feed")["refresh_interval"])
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
def quit
|
122
|
-
@checkThread.exit unless @checkThread == nil
|
123
|
-
exit
|
124
|
-
end
|
125
|
-
|
126
|
-
def uptime
|
127
|
-
Format.format_duration(Time.now - @started)
|
128
|
-
end
|
129
|
-
|
130
|
-
def run
|
131
|
-
puts "--------"
|
132
|
-
puts "server started"
|
133
|
-
puts "server listening on port " + @pref.get("daemon")["port"]
|
134
|
-
|
135
|
-
trap(:QUIT) do
|
136
|
-
quit
|
137
|
-
end
|
138
|
-
|
139
|
-
@checkThread = checkFeeds
|
140
|
-
@started = Time.now
|
141
|
-
loop do
|
142
|
-
lastloop = false
|
143
|
-
client = @s.accept
|
144
|
-
|
145
|
-
message = client.gets.chomp.split(" ")
|
146
|
-
puts "got msg #{message} from client"
|
147
|
-
response = "okay."
|
148
|
-
|
149
|
-
message.each_with_index { |m, i|
|
150
|
-
case m
|
151
|
-
when "up?"
|
152
|
-
response = "true"
|
153
|
-
when "quit"
|
154
|
-
lastloop = true
|
155
|
-
response = "quitting"
|
156
|
-
when "info"
|
157
|
-
response = "uptime: #{uptime}, loops: #{@looped}, matches, #{@matches}"
|
158
|
-
when "lastchecked"
|
159
|
-
response = @lastchecked
|
160
|
-
when "items"
|
161
|
-
response = Serializer.e(@schedule.getAll)
|
162
|
-
when "itemshash"
|
163
|
-
response = @schedule.getAllCereal
|
164
|
-
else
|
165
|
-
response = "what?"
|
166
|
-
end
|
167
|
-
}
|
168
|
-
|
169
|
-
response += "\n"
|
170
|
-
|
171
|
-
puts "responding with #{response}"
|
172
|
-
client.puts response
|
173
|
-
client.close
|
174
|
-
|
175
|
-
quit if lastloop
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
end
|