-
Notifications
You must be signed in to change notification settings - Fork 983
/
TvShow.groovy
80 lines (60 loc) · 1.6 KB
/
TvShow.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package streama
class TvShow {
transient theMovieDbService
Boolean deleted = false
Boolean manualInput = false
Date dateCreated
Date lastUpdated
String name
String overview
String apiId
String backdrop_path
String poster_path
String first_air_date
String original_language
String imdb_id
Double vote_average
Integer vote_count
Double popularity
static hasMany = [episodes: Episode, genre: Genre]
File poster_image
File backdrop_image
static mapping = {
cache true
episodes cache: true
overview type: 'text'
}
static constraints = {
name nullable: false
overview size: 1..5000
}
def getExternalLinks(){
theMovieDbService.getExternalLinks(this.apiId)
}
def getHasFiles(){
return (this.episodes?.find{it.files} ? true : false)
}
def getFullTvShowMeta(){
try{
return theMovieDbService.getFullTvShowMeta(this.apiId)
}catch (e){
log.warn("couldnt get FullTvShowMeta for ${this.apiId}")
log.warn(e.message)
return null
}
}
def getFirstEpisode(){
Episode firstEpisode = this.episodes?.find{it.files && it.season_number != "0"}
this.episodes.each{ Episode episode ->
if((episode.season_number == firstEpisode?.season_number) && (episode.episode_number < firstEpisode?.episode_number) && episode.files){
firstEpisode = episode
}
else if(episode.season_number < firstEpisode?.season_number && episode.files && episode.season_number != "0"){
firstEpisode = episode
}
}
if(firstEpisode && firstEpisode.files){
return firstEpisode
}
}
}