Merge branch 'master' into old-engine

This commit is contained in:
nikk gitanes
2023-02-16 16:04:03 +03:00
10 changed files with 65 additions and 11 deletions

View File

@@ -66,14 +66,14 @@ func Start() {
NoProbe: true, NoProbe: true,
StallEventSubscribe: true, StallEventSubscribe: true,
Icons: []dms.Icon{ Icons: []dms.Icon{
dms.Icon{ {
Width: 48, Width: 48,
Height: 48, Height: 48,
Depth: 24, Depth: 24,
Mimetype: "image/png", Mimetype: "image/png",
Bytes: template.Dlnaicon48png, Bytes: template.Dlnaicon48png,
}, },
dms.Icon{ {
Width: 120, Width: 120,
Height: 120, Height: 120,
Depth: 24, Depth: 24,

View File

@@ -19,7 +19,8 @@ require (
github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4
github.com/pkg/errors v0.9.1 github.com/pkg/errors v0.9.1
go.etcd.io/bbolt v1.3.6 go.etcd.io/bbolt v1.3.6
golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 golang.org/x/time v0.3.0
gopkg.in/vansante/go-ffprobe.v2 v2.1.1
) )
require ( require (

View File

@@ -414,6 +414,8 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/vansante/go-ffprobe.v2 v2.1.1 h1:DIh5fMn+tlBvG7pXyUZdemVmLdERnf2xX6XOFF+0BBU=
gopkg.in/vansante/go-ffprobe.v2 v2.1.1/go.mod h1:qF0AlAjk7Nqzqf3y333Ly+KxN3cKF2JqA3JT5ZheUGE=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

View File

@@ -137,6 +137,9 @@ func loadDB() {
log.TLogln("Index rutor db") log.TLogln("Index rutor db")
torrsearch.NewIndex(torrs) torrsearch.NewIndex(torrs)
log.TLogln("Torrents count:", len(torrs))
log.TLogln("Indexed words:", len(torrsearch.GetIDX()))
} else { } else {
log.TLogln("Error load rutor db:", err) log.TLogln("Error load rutor db:", err)
} }

View File

@@ -18,6 +18,10 @@ func Search(text string) []int {
return idx.search(text) return idx.search(text)
} }
func GetIDX() Index {
return idx
}
func (idx Index) add(torrs []*models.TorrentDetails) { func (idx Index) add(torrs []*models.TorrentDetails) {
for ID, torr := range torrs { for ID, torr := range torrs {
for _, token := range analyze(torr.Title) { for _, token := range analyze(torr.Title) {

View File

@@ -126,7 +126,7 @@ func (c *Cache) AdjustRA(readahead int64) {
} }
if c.Readers() > 0 { if c.Readers() > 0 {
c.muReaders.Lock() c.muReaders.Lock()
for r, _ := range c.readers { for r := range c.readers {
r.SetReadahead(readahead) r.SetReadahead(readahead)
} }
c.muReaders.Unlock() c.muReaders.Unlock()
@@ -158,7 +158,7 @@ func (c *Cache) GetState() *state.CacheState {
if c.Readers() > 0 { if c.Readers() > 0 {
c.muReaders.Lock() c.muReaders.Lock()
for r, _ := range c.readers { for r := range c.readers {
rng := r.getPiecesRange() rng := r.getPiecesRange()
pc := r.getReaderPiece() pc := r.getReaderPiece()
readersState = append(readersState, &state.ReaderState{ readersState = append(readersState, &state.ReaderState{
@@ -214,7 +214,7 @@ func (c *Cache) getRemPieces() []*Piece {
ranges := make([]Range, 0) ranges := make([]Range, 0)
c.muReaders.Lock() c.muReaders.Lock()
for r, _ := range c.readers { for r := range c.readers {
r.checkReader() r.checkReader()
if r.isUse { if r.isUse {
ranges = append(ranges, r.getPiecesRange()) ranges = append(ranges, r.getPiecesRange())
@@ -245,7 +245,7 @@ func (c *Cache) getRemPieces() []*Piece {
c.clearPriority() c.clearPriority()
c.muReaders.Lock() c.muReaders.Lock()
for r, _ := range c.readers { for r := range c.readers {
if !r.isUse { if !r.isUse {
continue continue
} }
@@ -341,7 +341,7 @@ func (c *Cache) clearPriority() {
time.Sleep(time.Second) time.Sleep(time.Second)
ranges := make([]Range, 0) ranges := make([]Range, 0)
c.muReaders.Lock() c.muReaders.Lock()
for r, _ := range c.readers { for r := range c.readers {
r.checkReader() r.checkReader()
if r.isUse { if r.isUse {
ranges = append(ranges, r.getPiecesRange()) ranges = append(ranges, r.getPiecesRange())
@@ -350,7 +350,7 @@ func (c *Cache) clearPriority() {
c.muReaders.Unlock() c.muReaders.Unlock()
ranges = mergeRange(ranges) ranges = mergeRange(ranges)
for id, _ := range c.pieces { for id := range c.pieces {
if len(ranges) > 0 { if len(ranges) > 0 {
if !inRanges(ranges, id) { if !inRanges(ranges, id) {
if c.torrent.PieceState(id).Priority != torrent.PiecePriorityNone { if c.torrent.PieceState(id).Priority != torrent.PiecePriorityNone {

View File

@@ -197,7 +197,7 @@ func (r *Reader) readerOff() {
func (r *Reader) getUseReaders() int { func (r *Reader) getUseReaders() int {
readers := 0 readers := 0
if r.cache != nil { if r.cache != nil {
for reader, _ := range r.cache.readers { for reader := range r.cache.readers {
if reader.isUse { if reader.isUse {
readers++ readers++
} }

41
server/web/api/ffprobe.go Normal file
View File

@@ -0,0 +1,41 @@
package api
import (
"context"
"errors"
"fmt"
"github.com/gin-gonic/gin"
"gopkg.in/vansante/go-ffprobe.v2"
"net/http"
"os"
"path/filepath"
"server/utils"
)
func ffp(c *gin.Context) {
hash := c.Param("hash")
indexStr := c.Param("id")
if hash == "" || indexStr == "" {
c.AbortWithError(http.StatusNotFound, errors.New("link should not be empty"))
return
}
host := utils.GetScheme(c) + "://" + c.Request.Host + "/stream?link=" + hash + "&index=" + indexStr + "&play"
fmt.Println(host)
ctx, cancelFn := context.WithCancel(context.Background())
defer cancelFn()
if _, err := os.Stat("ffprobe"); os.IsNotExist(err) {
ffprobe.SetFFProbeBinPath(filepath.Dir(os.Args[0]) + "/ffprobe")
}
data, err := ffprobe.ProbeURL(ctx, host)
if err != nil {
c.AbortWithError(http.StatusBadRequest, fmt.Errorf("error getting data: %v", err))
return
}
c.JSON(200, data)
}

View File

@@ -39,7 +39,10 @@ func SetupRoute(route *gin.RouterGroup) {
route.GET("/playlist/*fname", playList) route.GET("/playlist/*fname", playList)
route.GET("/download/:size", download) route.GET("/download/:size", download)
route.GET("/search/*query", rutorSearch) route.GET("/search/*query", rutorSearch)
route.GET("/ffp/:hash/:id", ffp)
} }
func shutdown(c *gin.Context) { func shutdown(c *gin.Context) {

View File

@@ -28,7 +28,7 @@ var (
) )
func Start(port string) { func Start(port string) {
log.TLogln("Start TorrServer") log.TLogln("Start TorrServer " + version.Version)
ips := getLocalIps() ips := getLocalIps()
if len(ips) > 0 { if len(ips) > 0 {
log.TLogln("Local IPs:", ips) log.TLogln("Local IPs:", ips)