mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 21:46:11 +05:00
Merge branch 'master' into old-engine
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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 (
|
||||
|
||||
@@ -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=
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
41
server/web/api/ffprobe.go
Normal 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)
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user