model.go 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574
  1. package weeklyhonor
  2. import (
  3. "math/rand"
  4. "strconv"
  5. "strings"
  6. "sync"
  7. "time"
  8. accmdl "go-common/app/service/main/account/model"
  9. "go-common/app/service/main/archive/api"
  10. "go-common/library/log"
  11. xtime "go-common/library/time"
  12. )
  13. const (
  14. // HonorSub honor subscribe state subscribed
  15. HonorSub uint8 = iota
  16. // HonorUnSub honor subscribe state unsubscribed
  17. HonorUnSub
  18. layout = "20060102"
  19. // when edit, add new line below the line you want edit and fill the end time field
  20. // if Word changed,use new hid,else use the same.
  21. hStr = `1|S|史诗级选手|本周上过全站排行榜前三名|SSR|20181019|
  22. 2|666|惊不惊喜意不意外|本周上过全站排行榜第%d名|SSR|20181019|
  23. 3|233|天选之人|本周上过全站排行榜前%d名|SSR|20181019|
  24. 4|牛|给大佬递茶|本周上过全站排行榜前%d名|SSR|20181019|
  25. 5|史|少年创造奇迹|本周累计总播放量达成了%s的小目标|SSR|20181019|
  26. 6|火|「%s」不火天理难容|本周总粉丝数达成%d百万的小目标|SSR|20181019|
  27. 7|光|一入动态深似海||SSR|20181019|
  28. 8|希|全村人的希望|本周上过全站%s区排行榜前%d名|SR|20181019|20181214
  29. 8|希|全村人的希望|本周上过%s区排行榜前%d名|R|20181214|
  30. 9|妥|定个小目标,破%d万+|本周累计总播放量达成%d万的小目标|SR|20181019|
  31. 10|强|你上辈子大概拯救过世界|本周总粉丝数达成%d万的小目标|SR|20181019|
  32. 11|Boom|请收下我的膝盖|本周新增播放量破百万|SR|20181019|
  33. 12|囍|此生无悔爱「%s」|本周新增粉丝数破万|SR|20181019|
  34. 13|心|给你我的小心心|本周稿件被点赞破五千|SR|20181019|
  35. 14|爆|我吹爆这个up主|本周稿件被转发破千|SR|20181019|
  36. 15|富|我要让世界知道此人被我承包|本周稿件收到硬币数破三千|SR|20181019|
  37. 16|爱|承包这个动态日更up主!||SR|20181019|
  38. 17|妙|定个小目标,破%d万+|本周累计总播放量达成%d万的小目标|R|20181019|
  39. 18|撩|夭寿啦~这个up好会撩人|本周总粉丝数达成%d万的小目标|R|20181019|
  40. 19|星|下一个巨星就是你|本周新增播放量破十万|R|20181019|
  41. 20|怦|糟了是心动的感觉|本周新增粉丝数破千|R|20181019|
  42. 21|赞|为你打call|本周稿件被点赞破千|R|20181019|
  43. 22|鸣|火钳刘明|本周稿件被转发破百|R|20181019|
  44. 23|劲|这个up主大概使用了洪荒之力|本周发布稿件数达五个以上|R|20181019|20181214
  45. 23|劲|这个up主大概使用了洪荒之力|本周发布稿件数达五个以上|A|20181214|
  46. 24|发|下一个大佬就是你|本周稿件收到硬币数破千|R|20181019|
  47. 25|call|今天也是可爱的动态up呢!||R|20181019|
  48. 26|盯|确认过眼神,是有潜力的up|本周累计总播放量达成%d千的小目标|A|20181019|
  49. 27|抱|大大,我是你的腿部挂件|本周总粉丝数达成%d千的小目标|A|20181019|
  50. 28|Wow|这只up主有点东西|本周新增播放量破万|A|20181019|
  51. 29|嗷|掐指一算,必成大事|本周新增粉丝数破百|A|20181019|
  52. 30|仙|给「%s」献上膝盖|本周稿件被点赞破五百|A|20181019|
  53. 31|转|前方“转发”高能预警|本周稿件被转发上五十|A|20181019|
  54. 32|肝|肝稿模式,启动!|本周发布稿件数达到三个及以上|A|20181019|20181214
  55. 32|肝|肝稿模式,启动!|本周发布稿件数达到三个及以上|B|20181214|
  56. 33|美|美滋滋,我有个大胆的想法|本周稿件收到硬币数破百|A|20181019|
  57. 34|和|本周优秀动态,安排上了!||A|20181019|
  58. 35|稳|获得粉丝稳稳的爱||B|20181019|
  59. 36|竞|播放1万+还会远吗?||B|20181019|
  60. 37|辛|只要有你们,再辛苦的时光都元气满满||B|20181019|
  61. 38|秀|加油打气你最棒||B|20181019|
  62. 39|A+|被大家的转发种草了||B|20181019|
  63. 40|更|爷爷你关注的up主更新了||B|20181019|
  64. 41|囤|囤着硬币干大事||B|20181019|
  65. 42|奋|秘技!左右横跳发动态||B|20181019|
  66. 43|粉|在世界中心呼唤粉丝||B|20181019|
  67. 44|进|向着播放破千的目标前进吧||B|20181019|
  68. 45|励|粉丝的鼓励你收到了嘛||B|20181019|
  69. 46|勤|业精于勤,积少成多||C|20181019|
  70. 47|冲|为了更多的赞冲鸭||C|20181019|
  71. 48|享|分享是走向世界第一步||C|20181019|
  72. 49|币|我也收到硬币啦||C|20181019|
  73. 50|等|和我签订契约,成为动态区UP主吧!||C|20181019|
  74. 51|孤|生活已经如此艰难,有些事情就不要揭穿了||D|20181019|
  75. 52|懵|我好像把我的播放量弄丢了……||D|20181019|
  76. 53|槑|呆呆,我的点赞去哪了||D|20181019|
  77. 54|空|我的转发空空荡荡…||D|20181019|
  78. 55|鸽|鸽了鸽了!投稿是不可能投稿——下周就投稿||D|20181019|
  79. 56|静|钱袋静静地躺着||D|20181019|
  80. 57|新|来吧!打破零动态惨案!||D|20181019|
  81. 58|迟|数据宝宝正在非常努力地奔跑——过会会儿再看啦||E|20181019|
  82. 59|炫|疯狂Pick你!!|本周上过全站排行榜前%d名|SR|20181214|`
  83. )
  84. // Honor weeklyhonor info.
  85. type Honor struct {
  86. HID int `json:"hid"`
  87. MID int64 `json:"mid"`
  88. HonorCount int64 `json:"honor_count"`
  89. Uname string `json:"uname"`
  90. Face string `json:"face"`
  91. Word string `json:"word"`
  92. Text string `json:"text"`
  93. Desc string `json:"desc"`
  94. Priority string `json:"priority"`
  95. ShareToken string `json:"share_token"`
  96. RiseStage *RiseStage `json:"rise_stage"`
  97. SubState uint8 `json:"sub_state"`
  98. LoveFans []*accmdl.Info `json:"love_fans"`
  99. PlayFans []*accmdl.Info `json:"play_fans"`
  100. NewArchive *api.Arc `json:"new_archive"`
  101. HotArchive *api.Arc `json:"hot_archive"`
  102. DateBegin xtime.Time `json:"date_begin"`
  103. DateEnd xtime.Time `json:"date_end"`
  104. }
  105. // RiseStage .
  106. type RiseStage struct {
  107. Play int `json:"play"`
  108. Like int `json:"like"`
  109. Fans int `json:"fans"`
  110. Coin int `json:"coin"`
  111. Share int `json:"share"`
  112. }
  113. // HonorWord .
  114. type HonorWord struct {
  115. ID int `json:"id"`
  116. Word string `json:"word"`
  117. Text string `json:"text"`
  118. Desc string `json:"desc"`
  119. Priority string `json:"priority"`
  120. Start xtime.Time `json:"start"`
  121. End xtime.Time `json:"end"`
  122. }
  123. // HMap get hid-honorWord map
  124. func HMap() map[int][]*HonorWord {
  125. h := make(map[int][]*HonorWord)
  126. sArr := strings.Split(hStr, "\n")
  127. for _, v := range sArr {
  128. ws := strings.Split(v, "|")
  129. id, err := strconv.Atoi(ws[0])
  130. if err != nil {
  131. log.Error("strconv.Atoi(%s) error(%v)", ws[0], err)
  132. }
  133. wd := HonorWord{
  134. ID: id,
  135. Word: ws[1],
  136. Text: ws[2],
  137. Desc: ws[3],
  138. Priority: ws[4],
  139. }
  140. h[id] = append(h[id], &wd)
  141. start, err := time.ParseInLocation(layout, ws[5], time.Local)
  142. if err != nil {
  143. continue
  144. }
  145. wd.Start = xtime.Time(start.Unix())
  146. end, err := time.ParseInLocation(layout, ws[6], time.Local)
  147. if err != nil {
  148. continue
  149. }
  150. wd.End = xtime.Time(end.Unix())
  151. }
  152. return h
  153. }
  154. // HonorStat up honor stats form hbase.
  155. type HonorStat struct {
  156. Play int32 `family:"f" qualifier:"play" json:"play"`
  157. PlayLastW int32 `family:"f" qualifier:"play_last_w" json:"play_last_w"`
  158. Fans int32 `family:"f" qualifier:"fans" json:"fans"`
  159. FansLastW int32 `family:"f" qualifier:"fans_last_w" json:"fans_last_w"`
  160. PlayInc int32 `family:"f" qualifier:"play_inc" json:"play_inc"`
  161. FansInc int32 `family:"f" qualifier:"fans_inc" json:"fans_inc"`
  162. LikeInc int32 `family:"f" qualifier:"like_inc" json:"like_inc"`
  163. ShInc int32 `family:"f" qualifier:"sh_inc" json:"sh_inc"`
  164. CoinInc int32 `family:"f" qualifier:"coin_inc" json:"coin_inc"`
  165. AvsInc int32 `family:"f" qualifier:"avs_inc" json:"avs_inc"`
  166. DyInc int32 `family:"f" qualifier:"dy_inc" json:"dy_inc"`
  167. Act1 int32 `family:"f" qualifier:"act1" json:"act1"`
  168. Act2 int32 `family:"f" qualifier:"act2" json:"act2"`
  169. Act3 int32 `family:"f" qualifier:"act3" json:"act3"`
  170. Dr1 int32 `family:"f" qualifier:"dr1" json:"dr1"`
  171. Dr2 int32 `family:"f" qualifier:"dr2" json:"dr2"`
  172. Dr3 int32 `family:"f" qualifier:"dr3" json:"dr3"`
  173. HottestAvNew int32 `family:"f" qualifier:"hottest_av_new" json:"hottest_av_new"`
  174. HottestAvInc int32 `family:"f" qualifier:"hottest_av_inc" json:"hottest_av_inc"`
  175. HottestAvAll int32 `family:"f" qualifier:"hottest_av_all" json:"hottest_av_all"`
  176. Rank0 int32 `family:"r" qualifier:"rank0" json:"rank0"`
  177. Rank1 int32 `family:"r" qualifier:"rank1" json:"rank1"`
  178. Rank3 int32 `family:"r" qualifier:"rank3" json:"rank3"`
  179. Rank4 int32 `family:"r" qualifier:"rank4" json:"rank4"`
  180. Rank5 int32 `family:"r" qualifier:"rank5" json:"rank5"`
  181. Rank36 int32 `family:"r" qualifier:"rank36" json:"rank36"`
  182. Rank119 int32 `family:"r" qualifier:"rank119" json:"rank119"`
  183. Rank129 int32 `family:"r" qualifier:"rank129" json:"rank129"`
  184. Rank155 int32 `family:"r" qualifier:"rank155" json:"rank155"`
  185. Rank160 int32 `family:"r" qualifier:"rank160" json:"rank160"`
  186. Rank168 int32 `family:"r" qualifier:"rank168" json:"rank168"`
  187. Rank181 int32 `family:"r" qualifier:"rank181" json:"rank181"`
  188. }
  189. // HonorLog .
  190. type HonorLog struct {
  191. ID int64 `json:"id"`
  192. MID int64 `json:"mid"`
  193. HID int `json:"hid"`
  194. Count int64 `json:"count"`
  195. CTime xtime.Time `json:"ctime"`
  196. MTime xtime.Time `json:"mtime"`
  197. }
  198. // GenHonor .
  199. func (hs *HonorStat) GenHonor(mid int64, distinctID int) int {
  200. ids := hs.priority()
  201. log.Info("GenHonor mid(%d) ids(%v) lastid(%d)", mid, ids, distinctID)
  202. if len(ids) == 1 {
  203. return ids[0]
  204. }
  205. var hids []int
  206. for _, id := range ids {
  207. if id != distinctID {
  208. hids = append(hids, id)
  209. }
  210. }
  211. if len(hids) == 1 {
  212. return hids[0]
  213. }
  214. if len(hids) > 1 {
  215. rand.Seed(mid)
  216. var mu sync.Mutex
  217. mu.Lock()
  218. rnd := rand.Intn(len(hids))
  219. mu.Unlock()
  220. return hids[rnd]
  221. }
  222. return 0
  223. }
  224. func (hs *HonorStat) priority() []int {
  225. ids, _ := hs.PrioritySSR()
  226. if len(ids) > 0 {
  227. return ids
  228. }
  229. ids, _ = hs.PrioritySR()
  230. if len(ids) > 0 {
  231. return ids
  232. }
  233. ids, _ = hs.PriorityR()
  234. if len(ids) > 0 {
  235. return ids
  236. }
  237. ids, _ = hs.PriorityA()
  238. if len(ids) > 0 {
  239. return ids
  240. }
  241. ids, _ = hs.PriorityB()
  242. if len(ids) > 0 {
  243. return ids
  244. }
  245. ids, _ = hs.PriorityC()
  246. if len(ids) > 0 {
  247. return ids
  248. }
  249. ids, _ = hs.PriorityD()
  250. return ids
  251. }
  252. // PrioritySSR .
  253. func (hs *HonorStat) PrioritySSR() ([]int, *RiseStage) {
  254. ids := make([]int, 0)
  255. rs := new(RiseStage)
  256. hid := 0
  257. if hs.Rank0 > 0 {
  258. switch {
  259. case hs.Rank0 <= 3:
  260. hid = 1
  261. case hs.Rank0 == 6 || hs.Rank0 == 66:
  262. hid = 2
  263. case hs.Rank0 == 23:
  264. hid = 3
  265. case hs.Rank0 <= 10:
  266. hid = 4
  267. }
  268. if hid != 0 {
  269. ids = append(ids, hid)
  270. }
  271. }
  272. if (hs.Play > 100000000 && hs.PlayLastW < 100000000) || (hs.Play > 10000000 && hs.PlayLastW < 10000000) {
  273. ids = append(ids, 5)
  274. }
  275. if hs.Fans > 1000000 && hs.FansLastW < 1000000 {
  276. ids = append(ids, 6)
  277. }
  278. if hs.DyInc >= 300000 {
  279. ids = append(ids, 7)
  280. }
  281. return ids, rs
  282. }
  283. // PrioritySR .
  284. func (hs *HonorStat) PrioritySR() ([]int, *RiseStage) {
  285. ids := make([]int, 0)
  286. stars := new(RiseStage)
  287. if hs.Rank0 > 0 && hs.Rank0 <= 100 {
  288. ids = append(ids, 59)
  289. }
  290. if hs.Play > 100000 && hs.PlayLastW < 100000 {
  291. ids = append(ids, 9)
  292. }
  293. if hs.Fans > 100000 && hs.FansLastW < 100000 {
  294. ids = append(ids, 10)
  295. }
  296. if hs.PlayInc >= 1000000 {
  297. ids = append(ids, 11)
  298. stars.Play = 5
  299. }
  300. if hs.FansInc >= 10000 {
  301. ids = append(ids, 12)
  302. stars.Fans = 5
  303. }
  304. if hs.LikeInc >= 5000 {
  305. ids = append(ids, 13)
  306. stars.Like = 5
  307. }
  308. if hs.ShInc >= 1000 {
  309. ids = append(ids, 14)
  310. stars.Share = 5
  311. }
  312. if hs.CoinInc >= 3000 {
  313. ids = append(ids, 15)
  314. stars.Coin = 5
  315. }
  316. if hs.DyInc >= 50000 && hs.DyInc < 299999 {
  317. ids = append(ids, 16)
  318. }
  319. return ids, stars
  320. }
  321. // PriorityR .
  322. func (hs *HonorStat) PriorityR() ([]int, *RiseStage) {
  323. ids := make([]int, 0)
  324. stars := new(RiseStage)
  325. on, _, _ := hs.PartionRank()
  326. if on {
  327. ids = append(ids, 8)
  328. }
  329. if hs.Play > 10000 && hs.PlayLastW < 10000 {
  330. ids = append(ids, 17)
  331. }
  332. if hs.Fans > 10000 && hs.FansLastW < 10000 {
  333. ids = append(ids, 18)
  334. }
  335. if hs.PlayInc >= 100000 && hs.PlayInc < 1000000 {
  336. ids = append(ids, 19)
  337. stars.Play = 4
  338. }
  339. if hs.FansInc >= 1000 && hs.FansInc < 10000 {
  340. ids = append(ids, 20)
  341. stars.Fans = 4
  342. }
  343. if hs.LikeInc >= 1000 && hs.LikeInc < 5000 {
  344. ids = append(ids, 21)
  345. stars.Like = 4
  346. }
  347. if hs.ShInc >= 100 && hs.ShInc < 1000 {
  348. ids = append(ids, 22)
  349. stars.Share = 4
  350. }
  351. if hs.CoinInc >= 1000 && hs.CoinInc < 3000 {
  352. ids = append(ids, 24)
  353. stars.Coin = 4
  354. }
  355. if hs.DyInc >= 5000 && hs.DyInc < 49999 {
  356. ids = append(ids, 25)
  357. }
  358. return ids, stars
  359. }
  360. // PriorityA .
  361. func (hs *HonorStat) PriorityA() ([]int, *RiseStage) {
  362. ids := make([]int, 0)
  363. stars := new(RiseStage)
  364. if hs.AvsInc >= 5 {
  365. ids = append(ids, 23)
  366. }
  367. if hs.Play > 1000 && hs.PlayLastW < 1000 {
  368. ids = append(ids, 26)
  369. }
  370. if hs.Fans >= 1000 && hs.FansLastW < 1000 {
  371. ids = append(ids, 27)
  372. }
  373. if hs.PlayInc >= 10000 && hs.PlayInc < 100000 {
  374. ids = append(ids, 28)
  375. stars.Play = 3
  376. }
  377. if hs.FansInc >= 100 && hs.FansInc < 1000 {
  378. ids = append(ids, 29)
  379. stars.Fans = 3
  380. }
  381. if hs.LikeInc >= 500 && hs.LikeInc < 1000 {
  382. ids = append(ids, 30)
  383. stars.Like = 3
  384. }
  385. if hs.ShInc >= 50 && hs.ShInc < 100 {
  386. ids = append(ids, 31)
  387. stars.Share = 3
  388. }
  389. if hs.CoinInc >= 100 && hs.CoinInc < 1000 {
  390. ids = append(ids, 33)
  391. stars.Coin = 3
  392. }
  393. if hs.DyInc >= 500 && hs.DyInc < 4999 {
  394. ids = append(ids, 34)
  395. }
  396. return ids, stars
  397. }
  398. // PriorityB .
  399. func (hs *HonorStat) PriorityB() ([]int, *RiseStage) {
  400. ids := make([]int, 0)
  401. stars := new(RiseStage)
  402. if hs.AvsInc >= 3 && hs.AvsInc <= 5 {
  403. ids = append(ids, 32)
  404. }
  405. if (hs.Fans > 500 && hs.FansLastW < 500) || (hs.Fans > 600 && hs.FansLastW < 600) || (hs.Fans > 700 && hs.FansLastW < 700) || (hs.Fans > 800 && hs.FansLastW < 800) || (hs.Fans > 900 && hs.FansLastW < 900) {
  406. ids = append(ids, 35)
  407. }
  408. if hs.PlayInc >= 1000 && hs.PlayInc < 10000 {
  409. ids = append(ids, 36)
  410. stars.Play = 2
  411. }
  412. if hs.FansInc >= 10 && hs.FansInc < 100 {
  413. ids = append(ids, 37)
  414. stars.Fans = 2
  415. }
  416. if hs.LikeInc >= 30 && hs.LikeInc < 500 {
  417. ids = append(ids, 38)
  418. stars.Like = 2
  419. }
  420. if hs.ShInc >= 10 && hs.ShInc < 50 {
  421. ids = append(ids, 39)
  422. stars.Share = 2
  423. }
  424. if hs.AvsInc >= 1 && hs.AvsInc <= 2 {
  425. ids = append(ids, 40)
  426. }
  427. if hs.CoinInc >= 30 && hs.CoinInc < 100 {
  428. ids = append(ids, 41)
  429. stars.Coin = 2
  430. }
  431. if hs.DyInc >= 100 && hs.DyInc < 499 {
  432. ids = append(ids, 42)
  433. }
  434. if hs.FansInc/10 > 2 && hs.FansLastW/10 < 2 {
  435. ids = append(ids, 43)
  436. }
  437. if hs.PlayInc >= 100 && hs.PlayInc < 1000 {
  438. ids = append(ids, 44)
  439. stars.Play = 2
  440. }
  441. if hs.FansInc >= 1 && hs.FansInc < 10 {
  442. ids = append(ids, 45)
  443. stars.Fans = 2
  444. }
  445. return ids, stars
  446. }
  447. // PriorityC .
  448. func (hs *HonorStat) PriorityC() ([]int, *RiseStage) {
  449. ids := make([]int, 0)
  450. stars := new(RiseStage)
  451. if hs.PlayInc > 0 && hs.PlayInc < 100 {
  452. ids = append(ids, 46)
  453. stars.Play = 1
  454. }
  455. if hs.LikeInc > 0 && hs.LikeInc < 30 {
  456. ids = append(ids, 47)
  457. stars.Like = 1
  458. }
  459. if hs.ShInc > 0 && hs.ShInc < 10 {
  460. ids = append(ids, 48)
  461. stars.Share = 1
  462. }
  463. if hs.CoinInc >= 1 && hs.CoinInc < 30 {
  464. ids = append(ids, 49)
  465. stars.Coin = 1
  466. }
  467. if hs.DyInc >= 1 && hs.DyInc <= 99 {
  468. ids = append(ids, 50)
  469. }
  470. return ids, stars
  471. }
  472. // PriorityD .
  473. func (hs *HonorStat) PriorityD() ([]int, *RiseStage) {
  474. ids := make([]int, 0)
  475. stars := new(RiseStage)
  476. if hs.FansInc <= 0 {
  477. ids = append(ids, 51)
  478. }
  479. if hs.PlayInc == 0 {
  480. ids = append(ids, 52)
  481. }
  482. if hs.LikeInc == 0 {
  483. ids = append(ids, 53)
  484. }
  485. if hs.ShInc == 0 {
  486. ids = append(ids, 54)
  487. }
  488. if hs.AvsInc == 0 {
  489. ids = append(ids, 55)
  490. }
  491. if hs.CoinInc == 0 {
  492. ids = append(ids, 56)
  493. }
  494. if hs.DyInc == 0 {
  495. ids = append(ids, 57)
  496. }
  497. return ids, stars
  498. }
  499. // PartionRank .
  500. func (hs *HonorStat) PartionRank() (bool, string, int32) {
  501. partions := make(map[int]string)
  502. partions[1] = "动画"
  503. partions[168] = "国创相关"
  504. partions[3] = "音乐"
  505. partions[129] = "舞蹈"
  506. partions[4] = "游戏"
  507. partions[36] = "科技"
  508. partions[160] = "生活"
  509. partions[119] = "鬼畜"
  510. partions[155] = "时尚"
  511. partions[5] = "娱乐"
  512. partions[181] = "影视"
  513. if hs.Rank1 != 0 && hs.Rank1 <= 100 {
  514. return true, partions[1], hs.Rank1
  515. }
  516. if hs.Rank168 != 0 && hs.Rank168 <= 100 {
  517. return true, partions[168], hs.Rank168
  518. }
  519. if hs.Rank3 != 0 && hs.Rank3 <= 100 {
  520. return true, partions[3], hs.Rank3
  521. }
  522. if hs.Rank129 != 0 && hs.Rank129 <= 100 {
  523. return true, partions[129], hs.Rank129
  524. }
  525. if hs.Rank4 != 0 && hs.Rank4 <= 100 {
  526. return true, partions[4], hs.Rank4
  527. }
  528. if hs.Rank36 != 0 && hs.Rank36 <= 100 {
  529. return true, partions[36], hs.Rank36
  530. }
  531. if hs.Rank160 != 0 && hs.Rank160 <= 100 {
  532. return true, partions[160], hs.Rank160
  533. }
  534. if hs.Rank119 != 0 && hs.Rank119 <= 100 {
  535. return true, partions[119], hs.Rank119
  536. }
  537. if hs.Rank155 != 0 && hs.Rank155 <= 100 {
  538. return true, partions[155], hs.Rank155
  539. }
  540. if hs.Rank5 != 0 && hs.Rank5 <= 100 {
  541. return true, partions[5], hs.Rank5
  542. }
  543. if hs.Rank181 != 0 && hs.Rank181 <= 100 {
  544. return true, partions[181], hs.Rank181
  545. }
  546. return false, "", 0
  547. }
  548. // LatestSunday when today=sunday,return today,else return last week's sunday
  549. func LatestSunday() time.Time {
  550. now := time.Now()
  551. today, _ := time.ParseInLocation(layout, now.Format(layout), time.Local)
  552. sunday := today.AddDate(0, 0, int(-now.Weekday()))
  553. return sunday
  554. }