Create & Init Project...
This commit is contained in:
399
app/interface/main/app-channel/model/const.go
Normal file
399
app/interface/main/app-channel/model/const.go
Normal file
@ -0,0 +1,399 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
cardlive "go-common/app/interface/main/app-card/model/card/live"
|
||||
"go-common/app/interface/main/app-channel/model/tab"
|
||||
"go-common/app/service/main/archive/api"
|
||||
"go-common/app/service/main/archive/model/archive"
|
||||
)
|
||||
|
||||
const (
|
||||
// PlatAndroid is int8 for android.
|
||||
PlatAndroid = int8(0)
|
||||
// PlatIPhone is int8 for iphone.
|
||||
PlatIPhone = int8(1)
|
||||
// PlatIPad is int8 for ipad.
|
||||
PlatIPad = int8(2)
|
||||
// PlatWPhone is int8 for wphone.
|
||||
PlatWPhone = int8(3)
|
||||
// PlatAndroidG is int8 for Android Global.
|
||||
PlatAndroidG = int8(4)
|
||||
// PlatIPhoneI is int8 for Iphone Global.
|
||||
PlatIPhoneI = int8(5)
|
||||
// PlatIPadI is int8 for IPAD Global.
|
||||
PlatIPadI = int8(6)
|
||||
// PlatAndroidTV is int8 for AndroidTV Global.
|
||||
PlatAndroidTV = int8(7)
|
||||
// PlatAndroidI is int8 for Android Global.
|
||||
PlatAndroidI = int8(8)
|
||||
|
||||
GotoAv = "av"
|
||||
GotoWeb = "web"
|
||||
GotoBangumi = "bangumi"
|
||||
GotoPGC = "pgc"
|
||||
GotoLive = "live"
|
||||
GotoGame = "game"
|
||||
GotoTopic = "topic"
|
||||
GotoActivity = "activity"
|
||||
GotoAdAv = "ad_av"
|
||||
GotoAdWeb = "ad_web"
|
||||
GotoRank = "rank"
|
||||
GotoTag = "tag"
|
||||
GotoBangumiRcmd = "bangumi_rcmd"
|
||||
GotoLogin = "login"
|
||||
GotoUpBangumi = "up_bangumi"
|
||||
GotoBanner = "banner"
|
||||
GotoAdWebS = "ad_web_s"
|
||||
GotoUpArticle = "up_article"
|
||||
GotoGameDownload = "game_download"
|
||||
GotoConverge = "converge"
|
||||
GotoSpecial = "special"
|
||||
GotoArticle = "article"
|
||||
GotoArticleS = "article_s"
|
||||
GotoGameDownloadS = "game_download_s"
|
||||
GotoShoppingS = "shopping_s"
|
||||
GotoAudio = "audio"
|
||||
GotoPlayer = "player"
|
||||
GotoAdLarge = "ad_large"
|
||||
GotoSpecialS = "special_s"
|
||||
GotoPlayerLive = "player_live"
|
||||
GotoSong = "song"
|
||||
GotoUpRcmdAv = "up_rcmd_av"
|
||||
GotoSubscribe = "subscribe"
|
||||
GotoLiveUpRcmd = "live_up_rcmd"
|
||||
GotoTopstick = "topstick"
|
||||
GotoChannelRcmd = "channel_rcmd"
|
||||
GotoPgcsRcmd = "pgcs_rcmd"
|
||||
GotoUpRcmdS = "up_rcmd_s"
|
||||
GotoPegasusTab = "pegasus"
|
||||
// audio tag
|
||||
GotoAudioTag = "audio_tag"
|
||||
|
||||
// extra tab
|
||||
GotoTabBackground = "background"
|
||||
GotoTabEntrance = "entrance"
|
||||
GotoTabContentRcmd = "content_rcmd"
|
||||
GotoTabTagRcmd = "tag_rcmd"
|
||||
GotoTabSignIn = "sign_in"
|
||||
GotoTabNews = "news"
|
||||
|
||||
// EnvPro is pro.
|
||||
EnvPro = "pro"
|
||||
// EnvTest is env.
|
||||
EnvTest = "test"
|
||||
// EnvDev is env.
|
||||
EnvDev = "dev"
|
||||
)
|
||||
|
||||
var (
|
||||
AvHandler = func(a *api.Arc) func(uri string) string {
|
||||
return func(uri string) string {
|
||||
if a == nil {
|
||||
return uri
|
||||
}
|
||||
if a.Dimension.Height != 0 || a.Dimension.Width != 0 {
|
||||
return fmt.Sprintf("%s?player_width=%d&player_height=%d&player_rotate=%d", uri, a.Dimension.Width, a.Dimension.Height, a.Dimension.Rotate)
|
||||
}
|
||||
return uri
|
||||
}
|
||||
}
|
||||
AvPlayHandler = func(a *archive.Archive3, ap *archive.PlayerInfo) func(uri string) string {
|
||||
var player string
|
||||
if ap != nil {
|
||||
bs, _ := json.Marshal(ap)
|
||||
player = url.QueryEscape(string(bs))
|
||||
if strings.IndexByte(player, '+') > -1 {
|
||||
player = strings.Replace(player, "+", "%20", -1)
|
||||
}
|
||||
}
|
||||
return func(uri string) string {
|
||||
if player != "" && (a.Dimension.Height != 0 || a.Dimension.Width != 0) {
|
||||
return fmt.Sprintf("%s?page=1&player_preload=%s&player_width=%d&player_height=%d&player_rotate=%d", uri, player, a.Dimension.Width, a.Dimension.Height, a.Dimension.Rotate)
|
||||
} else if player != "" {
|
||||
return fmt.Sprintf("%s?page=1&player_preload=%s", uri, player)
|
||||
} else if a.Dimension.Height != 0 || a.Dimension.Width != 0 {
|
||||
return fmt.Sprintf("%s?player_width=%d&player_height=%d&player_rotate=%d", uri, a.Dimension.Width, a.Dimension.Height, a.Dimension.Rotate)
|
||||
}
|
||||
return uri
|
||||
}
|
||||
}
|
||||
LiveUpHandler = func(l *cardlive.Card) func(uri string) string {
|
||||
return func(uri string) string {
|
||||
if l == nil {
|
||||
return uri
|
||||
}
|
||||
return fmt.Sprintf("%s?broadcast_type=%d", uri, l.BroadcastType)
|
||||
}
|
||||
}
|
||||
LiveRoomHandler = func(l *cardlive.Room) func(uri string) string {
|
||||
return func(uri string) string {
|
||||
if l == nil {
|
||||
return uri
|
||||
}
|
||||
return fmt.Sprintf("%s?broadcast_type=%d", uri, l.BroadcastType)
|
||||
}
|
||||
}
|
||||
PegasusHandler = func(m *tab.Menu) func(uri string) string {
|
||||
return func(uri string) string {
|
||||
if m == nil {
|
||||
return uri
|
||||
}
|
||||
if m.Title != "" {
|
||||
return fmt.Sprintf("%s?name=%s", uri, url.QueryEscape(m.Title))
|
||||
}
|
||||
return uri
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
// IsAndroid check plat is android or ipad.
|
||||
func IsAndroid(plat int8) bool {
|
||||
return plat == PlatAndroid || plat == PlatAndroidG
|
||||
}
|
||||
|
||||
// IsIOS check plat is iphone or ipad.
|
||||
func IsIOS(plat int8) bool {
|
||||
return plat == PlatIPad || plat == PlatIPhone || plat == PlatIPadI || plat == PlatIPhoneI
|
||||
}
|
||||
|
||||
// IsIPad check plat is pad.
|
||||
func IsIPad(plat int8) bool {
|
||||
return plat == PlatIPad || plat == PlatIPadI
|
||||
}
|
||||
|
||||
// IsOverseas is overseas
|
||||
func IsOverseas(plat int8) bool {
|
||||
return plat == PlatAndroidI || plat == PlatIPhoneI || plat == PlatIPadI
|
||||
}
|
||||
|
||||
func IsGoto(gt string) bool {
|
||||
return gt == GotoAv || gt == GotoWeb || gt == GotoBangumi || gt == GotoLive || gt == GotoGame || gt == GotoTopic || gt == GotoActivity ||
|
||||
gt == GotoAdAv || gt == GotoAdWeb || gt == GotoRank || gt == GotoTag || gt == GotoBangumiRcmd || gt == GotoLogin || gt == GotoUpBangumi ||
|
||||
gt == GotoBanner || gt == GotoAdWebS || gt == GotoUpArticle || gt == GotoGameDownload || gt == GotoGameDownloadS || gt == GotoConverge ||
|
||||
gt == GotoSpecial || gt == GotoArticle || gt == GotoArticleS || gt == GotoShoppingS || gt == GotoAudio || gt == GotoPlayer || gt == GotoAdLarge ||
|
||||
gt == GotoSpecialS || gt == GotoPlayerLive || gt == GotoSong
|
||||
}
|
||||
|
||||
// FillURI deal app schema.
|
||||
func FillURI(gt, param string, typ int, plat int8, build int, f func(uri string) string) (uri string) {
|
||||
if param == "" {
|
||||
return
|
||||
}
|
||||
switch gt {
|
||||
case GotoAv, GotoAdAv, "":
|
||||
uri = "bilibili://video/" + param
|
||||
case GotoLive:
|
||||
uri = "bilibili://live/" + param
|
||||
case GotoBangumi:
|
||||
uri = "https://www.bilibili.com/bangumi/play/ep" + param
|
||||
case GotoUpBangumi:
|
||||
uri = "https://www.bilibili.com/bangumi/play/ss" + param
|
||||
case GotoUpArticle, GotoArticle, GotoArticleS:
|
||||
uri = "bilibili://article/" + param
|
||||
case GotoGame:
|
||||
uri = "bilibili://game_center/detail?id=" + param + "&sourceType=adPut"
|
||||
case GotoAudio:
|
||||
uri = "bilibili://music/menu/detail/" + param
|
||||
case GotoSong:
|
||||
uri = "bilibili://music/detail/" + param
|
||||
case GotoSpecial, GotoGameDownload, GotoConverge, GotoGameDownloadS, GotoSpecialS, GotoTopstick:
|
||||
switch typ {
|
||||
case 11:
|
||||
uri = "bilibili://clip/" + param
|
||||
case 10:
|
||||
uri = "bilibili://album/" + param
|
||||
case 9:
|
||||
uri = "bilibili://music/detail/" + param
|
||||
case 8:
|
||||
uri = "bilibili://music/menu/detail/" + param
|
||||
case 7:
|
||||
uri = "bilibili://pegasus/list/daily/" + param
|
||||
case 6:
|
||||
uri = "bilibili://article/" + param
|
||||
case 5:
|
||||
if param != "" {
|
||||
uri = "bilibili://category/65541/" + param
|
||||
} else {
|
||||
uri = "bilibili://category/65541"
|
||||
}
|
||||
case 4:
|
||||
uri = "bilibili://live/" + param
|
||||
case 3:
|
||||
uri = "https://www.bilibili.com/bangumi/play/ss" + param
|
||||
case 2:
|
||||
uri = "bilibili://video/" + param
|
||||
case 1:
|
||||
uri = "bilibili://game_center/detail?id=" + param + "&sourceType=adPut"
|
||||
case 0:
|
||||
uri = param
|
||||
}
|
||||
case GotoAudioTag:
|
||||
uri = "bilibili://music/categorydetail/" + param
|
||||
case GotoWeb, GotoActivity, GotoTopic, GotoAdWeb, GotoRank, GotoAdWebS, GotoShoppingS, GotoAdLarge:
|
||||
uri = param
|
||||
case GotoTag:
|
||||
if param != "" {
|
||||
uri = "bilibili://pegasus/channel/" + param
|
||||
}
|
||||
case GotoPegasusTab:
|
||||
uri = "bilibili://pegasus/channel/op/" + param
|
||||
}
|
||||
if f != nil {
|
||||
uri = f(uri)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// FillPlayerURI deal app schema.
|
||||
func FillPlayerURI(gt string, id int64, player string) (uri string) {
|
||||
switch gt {
|
||||
case GotoAv:
|
||||
player = url.QueryEscape(player)
|
||||
if strings.IndexByte(player, '+') > -1 {
|
||||
player = strings.Replace(player, "+", "%20", -1)
|
||||
}
|
||||
uri = fmt.Sprintf("bilibili://video/%d/?page=1&player_preload=%s", id, player)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func FillSongTagURI(id int64) (uri string) {
|
||||
return fmt.Sprintf("bilibili://music/categorydetail/%d", id)
|
||||
}
|
||||
|
||||
func FillRedirect(gt string, typ int) (redirect string) {
|
||||
switch gt {
|
||||
case GotoSpecial, GotoGameDownload, GotoConverge, GotoGameDownloadS, GotoSpecialS:
|
||||
switch typ {
|
||||
case 7:
|
||||
redirect = "daily"
|
||||
case 6:
|
||||
redirect = "article"
|
||||
case 5:
|
||||
redirect = "category/65541"
|
||||
case 4:
|
||||
redirect = "live"
|
||||
case 3:
|
||||
redirect = ""
|
||||
case 2:
|
||||
redirect = "video"
|
||||
case 1:
|
||||
redirect = "game"
|
||||
case 0:
|
||||
redirect = ""
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// CoverURL convert cover url to full url.
|
||||
func CoverURL(uri string) (cover string) {
|
||||
if uri == "" {
|
||||
cover = "http://static.hdslb.com/images/transparent.gif"
|
||||
return
|
||||
}
|
||||
if strings.HasPrefix(uri, "http://i0.hdslb.com") || strings.HasPrefix(uri, "http://i1.hdslb.com") || strings.HasPrefix(uri, "http://i2.hdslb.com") {
|
||||
uri = uri[19:]
|
||||
} else if strings.HasPrefix(uri, "https://i0.hdslb.com") || strings.HasPrefix(uri, "https://i1.hdslb.com") || strings.HasPrefix(uri, "https://i2.hdslb.com") {
|
||||
uri = uri[20:]
|
||||
}
|
||||
cover = uri
|
||||
if strings.HasPrefix(uri, "/bfs") {
|
||||
cover = "http://i0.hdslb.com" + uri
|
||||
return
|
||||
}
|
||||
if strings.Index(uri, "http://") == 0 {
|
||||
return
|
||||
}
|
||||
if len(uri) >= 10 && uri[:10] == "/templets/" {
|
||||
return
|
||||
}
|
||||
if strings.HasPrefix(uri, "group1") || strings.HasPrefix(uri, "/group1") {
|
||||
cover = "http://i0.hdslb.com/" + uri
|
||||
return
|
||||
}
|
||||
if pos := strings.Index(uri, "/uploads/"); pos != -1 && (pos == 0 || pos == 3) {
|
||||
cover = uri[pos+8:]
|
||||
}
|
||||
cover = strings.Replace(cover, "{IMG}", "", -1)
|
||||
cover = "http://i0.hdslb.com" + cover
|
||||
return
|
||||
}
|
||||
|
||||
func CoverURLHTTPS(uri string) (cover string) {
|
||||
if strings.HasPrefix(uri, "http://") {
|
||||
cover = "https://" + uri[7:]
|
||||
} else {
|
||||
cover = uri
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// InvalidBuild check source build is not allow by config build and condition.
|
||||
// eg: when condition is gt, means srcBuild must gt cfgBuild, otherwise is invalid srcBuild.
|
||||
func InvalidBuild(srcBuild, cfgBuild int, cfgCond string) bool {
|
||||
if cfgBuild != 0 && cfgCond != "" {
|
||||
switch cfgCond {
|
||||
case "gt":
|
||||
if cfgBuild >= srcBuild {
|
||||
return true
|
||||
}
|
||||
case "lt":
|
||||
if cfgBuild <= srcBuild {
|
||||
return true
|
||||
}
|
||||
case "eq":
|
||||
if cfgBuild != srcBuild {
|
||||
return true
|
||||
}
|
||||
case "ne":
|
||||
if cfgBuild == srcBuild {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// InvalidChannel check source channel is not allow by config channel.
|
||||
func InvalidChannel(plat int8, srcCh, cfgCh string) bool {
|
||||
return plat == PlatAndroid && cfgCh != "*" && cfgCh != srcCh
|
||||
}
|
||||
|
||||
// Plat return plat by platStr or mobiApp
|
||||
func Plat(mobiApp, device string) int8 {
|
||||
switch mobiApp {
|
||||
case "iphone", "iphone_b":
|
||||
if device == "pad" {
|
||||
return PlatIPad
|
||||
}
|
||||
return PlatIPhone
|
||||
case "white":
|
||||
return PlatIPhone
|
||||
case "ipad":
|
||||
return PlatIPad
|
||||
case "android", "android_b":
|
||||
return PlatAndroid
|
||||
case "win":
|
||||
return PlatWPhone
|
||||
case "android_G":
|
||||
return PlatAndroidG
|
||||
case "android_i":
|
||||
return PlatAndroidI
|
||||
case "iphone_i":
|
||||
if device == "pad" {
|
||||
return PlatIPadI
|
||||
}
|
||||
return PlatIPhoneI
|
||||
case "ipad_i":
|
||||
return PlatIPadI
|
||||
case "android_tv":
|
||||
return PlatAndroidTV
|
||||
}
|
||||
return PlatIPhone
|
||||
}
|
Reference in New Issue
Block a user