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,
|
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,
|
||||||
|
|||||||
@@ -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 (
|
||||||
|
|||||||
@@ -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=
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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
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("/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) {
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user