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,
StallEventSubscribe: true,
Icons: []dms.Icon{
dms.Icon{
{
Width: 48,
Height: 48,
Depth: 24,
Mimetype: "image/png",
Bytes: template.Dlnaicon48png,
},
dms.Icon{
{
Width: 120,
Height: 120,
Depth: 24,

View File

@@ -19,7 +19,8 @@ require (
github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4
github.com/pkg/errors v0.9.1
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 (

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/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/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.2/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")
torrsearch.NewIndex(torrs)
log.TLogln("Torrents count:", len(torrs))
log.TLogln("Indexed words:", len(torrsearch.GetIDX()))
} else {
log.TLogln("Error load rutor db:", err)
}

View File

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

View File

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

View File

@@ -197,7 +197,7 @@ func (r *Reader) readerOff() {
func (r *Reader) getUseReaders() int {
readers := 0
if r.cache != nil {
for reader, _ := range r.cache.readers {
for reader := range r.cache.readers {
if reader.isUse {
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("/download/:size", download)
route.GET("/search/*query", rutorSearch)
route.GET("/ffp/:hash/:id", ffp)
}
func shutdown(c *gin.Context) {

View File

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