/
movie.go
96 lines (74 loc) · 2.27 KB
/
movie.go
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package contributions
import (
"github.com/wheatandcat/dotstamp_server/models"
"github.com/wheatandcat/dotstamp_server/utils"
"strconv"
"time"
"github.com/astaxie/beego"
)
// AddMovie 動画を追加する
func AddMovie(uID int, mID string, t int, s int) error {
u := models.UserContributionMovie{
UserContributionID: uID,
MovieID: mID,
MovieType: t,
MovieStatus: s,
}
return u.Add()
}
// AddOrSaveMovie 追加か保存する
func AddOrSaveMovie(uID int, mID string, t int, s int) error {
u, err := GetMovie(uID, t)
if err != nil {
return err
}
if u.ID == uint(0) {
return AddMovie(uID, mID, models.MovieTypeYoutube, s)
}
u.MovieID = mID
u.MovieStatus = s
return u.Save()
}
// GetMovie 動画を取得する
func GetMovie(uID int, t int) (models.UserContributionMovie, error) {
u := models.UserContributionMovie{}
r, _, err := u.GetByUserContributionID(uID, t)
return r, err
}
// GetMovieMapByUserContributionIDList 投稿IDリストから動画マップを取得する
func GetMovieMapByUserContributionIDList(uID []int, t int) (map[int]models.UserContributionMovie, error) {
m := map[int]models.UserContributionMovie{}
u := models.UserContributionMovie{}
list, _, err := u.GetListByUserContributionIDList(uID, t)
if err != nil {
return m, err
}
for _, v := range list {
m[v.UserContributionID] = v
}
return m, err
}
// ExistsMovie 動画ファイルの存在判定する
func ExistsMovie(uID int) bool {
dir := beego.AppConfig.String("movieDir")
root, _ := utils.GetAppPath()
return utils.ExistsFile(root + "/" + dir + strconv.Itoa(uID) + ".mp4")
}
// GetMovieListByMovieStatusPublic 公開中の動画リストを取得する
func GetMovieListByMovieStatusPublic() ([]models.UserContributionMovie, error) {
u := models.UserContributionMovie{}
r, _, err := u.GetListByMovieStatusPublic()
return r, err
}
// GetMovieListBySpecifiedDays 指定に日数内の音声詳細を取得する
func GetMovieListBySpecifiedDays(list []models.UserContributionMovie, day int) []models.UserContributionMovie {
limit := utils.Now().Add(-1 * time.Duration(day) * 24 * time.Hour).Unix()
r := []models.UserContributionMovie{}
for _, v := range list {
if v.UpdatedAt.Unix() > limit {
continue
}
r = append(r, v)
}
return r
}