imdb_info.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package models
  2. import (
  3. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/language"
  4. "github.com/longbridgeapp/opencc"
  5. )
  6. type IMDBInfo struct {
  7. IMDBID string `gorm:"primaryKey" json:"imdb_id" binding:"required"` // IMDB ID
  8. Name string `json:"name" binding:"required"` // 视频名称
  9. Year int `gorm:"default:0" json:"year" binding:"required"` // 发布的时间
  10. Description string `json:"description" binding:"required"` // 描述
  11. Languages StringList `gorm:"type:varchar(255);not null" json:"languages" binding:"required"` // 语言
  12. AKA StringList `gorm:"type:varchar(255);not null" json:"AKA" binding:"required"` // 又名 xx xxx
  13. RootDirPath string `json:"root_dir_path"` // 这个电影或者连续剧(不是季的文件夹,而是这个连续剧的目录)路径
  14. IsMovie bool `json:"is_movie"` // 不是电影就是连续剧
  15. TmdbId string `gorm:"type:varchar(20)"` // TMDB ID 也是 MediaInfo 的主键
  16. VideoSubInfos []VideoSubInfo `gorm:"foreignKey:IMDBInfoID"` // 视频对应的字幕,外键约束
  17. }
  18. func NewIMDBInfo(IMDBID string, name string, year int, description string, languages StringList, AKA StringList) *IMDBInfo {
  19. return &IMDBInfo{IMDBID: IMDBID, Name: name, Year: year, Description: description, Languages: languages, AKA: AKA, VideoSubInfos: make([]VideoSubInfo, 0)}
  20. }
  21. func (i *IMDBInfo) GetChineseNameFromAKA() string {
  22. if len(i.AKA) == 0 {
  23. return ""
  24. }
  25. chsName := ""
  26. chtName := ""
  27. for _, akaWord := range i.AKA {
  28. // 0 不是简体和繁体,1 是简体,2 是繁体
  29. if language.WhichChineseType(akaWord) == 1 {
  30. chsName = akaWord
  31. break
  32. } else if language.WhichChineseType(akaWord) == 2 {
  33. chtName = akaWord
  34. break
  35. }
  36. }
  37. // 如果简体找到了,那么就返回
  38. if chsName != "" {
  39. return chsName
  40. }
  41. // 如果繁体找到了,那么进行一次简体转换
  42. if chtName != "" {
  43. t2s, err := opencc.New("t2s")
  44. if err != nil {
  45. return ""
  46. }
  47. // 繁体转简体
  48. newChs, err := t2s.Convert(chtName)
  49. if err != nil {
  50. return ""
  51. }
  52. return newChs
  53. }
  54. return ""
  55. }