| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package task_queue
- import (
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/badger_err_check"
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/my_util"
- "github.com/dgraph-io/badger/v3"
- "time"
- )
- // GetDailyDownloadCount 根据字幕提供者的名称,获取今日下载计数的次数,仅仅统计次数,并不确认是那个视频的字幕下载
- // whichDay nowTime.Format("2006-01-02")
- func GetDailyDownloadCount(supplierName string, publicIP string, whichDay ...string) (int, error) {
- KeyName := ""
- if len(whichDay) > 0 {
- KeyName = supplierName + "_" + whichDay[0] + "_" + publicIP
- } else {
- nowTime := time.Now()
- KeyName = supplierName + "_" + nowTime.Format("2006-01-02") + "_" + publicIP
- }
- outCount := 0
- err := GetDb().View(
- func(tx *badger.Txn) error {
- var err error
- key := []byte(MergeBucketAndKeyName(BucketNamePrefixSupplierDailyDownloadCounter, KeyName))
- e, err := tx.Get(key)
- if err != nil {
- if badger_err_check.IsErrOk(err) == true {
- return nil
- }
- return err
- }
- valCopy, err := e.ValueCopy(nil)
- if err != nil {
- return err
- }
- outCount, err = my_util.BytesToInt(valCopy)
- if err != nil {
- return err
- }
- return nil
- })
- if err != nil {
- return 0, err
- }
- return outCount, nil
- }
- // AddDailyDownloadCount 根据字幕提供者的名称,今日下载计数的次数+1,仅仅统计次数,并不确认是那个视频的字幕下载。TTL 多加 5s 确保今天过去(暂时去除 TTL)
- func AddDailyDownloadCount(supplierName string, publicIP string, whichDay ...string) (int, error) {
- nowTime := time.Now()
- // 今天剩余的时间(s)
- //restOfDaySecond := my_util.GetRestOfDaySec()
- KeyName := supplierName + "_" + nowTime.Format("2006-01-02") + "_" + publicIP
- dailyDownloadCount, err := GetDailyDownloadCount(supplierName, publicIP, whichDay...)
- if err != nil {
- return 0, err
- }
- err = GetDb().Update(
- func(tx *badger.Txn) error {
- var err error
- key := []byte(MergeBucketAndKeyName(BucketNamePrefixSupplierDailyDownloadCounter, KeyName))
- dailyDownloadCount += 1
- value, err := my_util.IntToBytes(dailyDownloadCount)
- if err != nil {
- return err
- }
- // 因为已经查询了一次,确保一定存在,所以直接更新+1,TTL 多加 5s 确保今天过去,暂时去除 TTL uint32(restOfDaySecond.Seconds())+5
- // .WithTTL(2 * time.Second)
- e := badger.NewEntry(key, value)
- err = tx.SetEntry(e)
- if err != nil {
- return err
- }
- return nil
- })
- if err != nil {
- return 0, err
- }
- return dailyDownloadCount, nil
- }
- // DelDailyDownloadCount 不是定版。这里需要搜索前缀去删除,因为引入了 Public IP 的分类
- func DelDailyDownloadCount(supplierName string, whichDay ...string) error {
- KeyName := ""
- if len(whichDay) > 0 {
- KeyName = supplierName + "_" + whichDay[0]
- } else {
- nowTime := time.Now()
- KeyName = supplierName + "_" + nowTime.Format("2006-01-02")
- }
- err := GetDb().Update(
- func(tx *badger.Txn) error {
- var err error
- key := []byte(MergeBucketAndKeyName(BucketNamePrefixSupplierDailyDownloadCounter, KeyName))
- // 因为已经查询了一次,确保一定存在,所以直接更新+1,TTL 多加 5s 确保今天过去,暂时去除 TTL uint32(restOfDaySecond.Seconds())+5
- if err = tx.Delete(key); err != nil {
- return err
- }
- return nil
- })
- if err != nil {
- return err
- }
- return nil
- }
- // GetDailyVideoSubDownloadCount 今日有那些视频进行了字幕的下载
- func GetDailyVideoSubDownloadCount() {
- }
- func getDailyVideoSubDownloadCount(tx *badger.Txn, KeyName string) {
- }
|