conversion

package module
Version: v0.1.27 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 9, 2019 License: MIT Imports: 34 Imported by: 0

README

conversion

        eng, err := conversion.InitMySQL(
            conversion.LoginOption(cfg.Addr, cfg.Username, cfg.Password))
    	if err != nil {
            return nil, fmt.Errorf("init conversion:%w", err)
    	}
        conversion.RegisterDatabase(eng)

        t := conversion.NewTask()
        t.Limit = cfg.Limit
        //don't stop when all task is done	
        t.SetAutoStop(false)        
        //then start
        t.Start()

Documentation

Index

Constants

View Source
const (
	NodeTypeCluster = "cluster"
	NodeTypeSingle  = "single"
	NodeTypeDummy   = "dummy"
)

NodeTypeCluster ...

Variables

View Source
var CachePath = cache.DefaultPath

CachePath ...

View Source
var DefaultLimit = 3

DefaultLimit ...

View Source
var ErrWorkFinish = errors.New("work was finished")

ErrWorkFinish ...

View Source
var ErrWorkID = errors.New("video id must input")

ErrWorkID ...

View Source
var ErrWrongCastType = errors.New("something wrong when cast to type")

ErrWrongCastType ...

View Source
var WorkRunProcessFunction = map[string]VideoProcessFunc{
	"source": decodeSource,
	"info":   decodeInfo,
}

WorkRunProcessFunction ...

Functions

func AllHash

func AllHash(session *xorm.Session, limit int, start ...int) (unfins *[]*Hash, e error)

AllHash ...

func ByteIndex

func ByteIndex(idx byte) int

ByteIndex ...

func CheckDatabase

func CheckDatabase() bool

CheckDatabase ...

func CheckNode

func CheckNode() bool

CheckNode ...

func Checksum

func Checksum(filepath string) string

Checksum ...

func CidHash

func CidHash(path path.Resolved) string

CidHash ...

func ExistVerifyFunc

func ExistVerifyFunc(tp string, f func(interface{}) string, v ...interface{}) bool

ExistVerifyFunc ...

func ExistVerifyString

func ExistVerifyString(tp string, v ...string) bool

ExistVerifyString ...

func FileAbsName

func FileAbsName(filename string) string

FileAbsName ...

func FileName

func FileName(filename string) string

FileName ...

func FindAll

func FindAll(model IModel, f FindResult, limit int, start ...int) (e error)

FindAll ...

func GetFileIndex

func GetFileIndex(filename string) int

GetFileIndex ...

func GetFiles

func GetFiles(name string, regex string) (files []string)

GetFiles ...

func GetNameIndex

func GetNameIndex(name string) int

GetNameIndex ...

func IndexByte

func IndexByte(index int) byte

IndexByte ...

func InitFFTool

func InitFFTool()

func InitMySQL

func InitMySQL(ops ...ConfigOptions) (*xorm.Engine, error)

InitMySQL ...

func InitSQLite3

func InitSQLite3(name string) (eng *xorm.Engine, e error)

InitSQLite3 ...

func InsertOrUpdate

func InsertOrUpdate(m IModel) (i int64, e error)

InsertOrUpdate ...

func IsExist

func IsExist(m IModel) bool

IsExist ...

func IsMedia

func IsMedia(format *fftool.StreamFormat) bool

IsMedia ...

func IsPicture

func IsPicture(name string) bool

IsPicture ...

func IsVideo

func IsVideo(filename string) bool

IsVideo ...

func LastSplit

func LastSplit(s, sep string) string

LastSplit ...

func MakeDatabaseInstance

func MakeDatabaseInstance(options ...ConfigOptions) (*xorm.Engine, error)

MakeDatabaseInstance ...

func MustDatabase

func MustDatabase(engine *xorm.Engine, err error) *xorm.Engine

MustDatabase ...

func MustSession

func MustSession(session *xorm.Session) *xorm.Session

MustSession ...

func MustString

func MustString(val, src string) string

MustString must string

func RegisterCache

func RegisterCache()

RegisterCache ...

func RegisterDatabase

func RegisterDatabase(engine *xorm.Engine)

RegisterDatabase ...

func RegisterNode

func RegisterNode(node Node)

RegisterNode ...

func ResolvedHash

func ResolvedHash(path path.Resolved) (string, error)

ResolvedHash ...

func SetCachePath

func SetCachePath(path string)

SetCachePath ...

func SyncTable

func SyncTable() (e error)

SyncTable ...

func UUID

func UUID() uuid.UUID

UUID ...

func Wrap

func Wrap(err error, msg ...string) error

Wrap ...

Types

type Actor

type Actor struct {
	Image    string   `json:"Image"`
	StarLink string   `json:"StarLink"`
	Name     string   `json:"Name"`
	Alias    []string `json:"Alias"`
}

Actor ...

type BeforeInsert

type BeforeInsert interface {
	BeforeInsert()
}

BeforeInsert ...

type Config

type Config = fftool.Config

type ConfigOptions

type ConfigOptions func(config *dbConfig)

ConfigOptions ...

func CreateDatabaseOption

func CreateDatabaseOption() ConfigOptions

CreateDatabaseOption ...

func DBType

func DBType(p string) ConfigOptions

DBType ...

func LoginOption

func LoginOption(addr, user, pass string) ConfigOptions

LoginOption ...

func SchemaOption

func SchemaOption(s string) ConfigOptions

SchemaOption ...

func ShowSQLOptions

func ShowSQLOptions(b bool) ConfigOptions

ShowSQLOptions ...

func UseCacheOptions

func UseCacheOptions(b bool) ConfigOptions

UseCacheOptions ...

type Extend

type Extend struct {
	Path    string `json:"path"`
	Message string `json:"message"`
}

Extend ...

type FindResult

type FindResult func(rows *xorm.Rows) error

FindResult ...

type Fragment

type Fragment struct {
	// contains filtered or unexported fields
}

Fragment ...

func (Fragment) Output

func (s Fragment) Output() string

Output ...

func (Fragment) Scale

func (s Fragment) Scale() Scale

Scale ...

func (Fragment) Sharpness

func (s Fragment) Sharpness() string

Sharpness ...

type FragmentOption

type FragmentOption func(f *Fragment)

FragmentOption ...

type Genre

type Genre struct {
	URL     string `json:"URL"`
	Content string `json:"Content"`
}

Genre ...

type Hash

type Hash struct {
	Model       `xorm:"extends"`
	Checksum    string   `xorm:"default() checksum" json:"checksum"`         //sum值
	HashType    HashType `xorm:"default() hash_type" json:"hash_type"`       //类型
	Episode     string   `xorm:"default() episode" json:"episode"`           //总集数
	Name        string   `xorm:"default() name" json:"name"`                 //banno
	Hash        string   `xorm:"default() hash" json:"hash"`                 //哈希地址
	Sharpness   string   `xorm:"default() sharpness" json:"sharpness"`       //清晰度
	Caption     string   `xorm:"default() caption" json:"caption"`           //字幕
	Encrypt     bool     `xorm:"default() encrypt" json:"encrypt"`           //加密
	Key         string   `xorm:"default() key" json:"key"`                   //秘钥
	M3U8        string   `xorm:"default() m3u8" json:"m3u8"`                 //M3U8名
	SegmentFile string   `xorm:"default() segment_file" json:"segment_file"` //ts切片名
	Resource    string   `xorm:" default() resource" json:"resource"`        //资源地址
}

Hash ...

func FindHash

func FindHash(session *xorm.Session, checksum string) (unfin *Hash, e error)

FindHash ...

func (*Hash) Clone

func (h *Hash) Clone() (n *Hash)

Clone ...

func (*Hash) Sync

func (h *Hash) Sync() error

Sync ...

func (*Hash) Table

func (h *Hash) Table() interface{}

Table ...

type HashType

type HashType string

HashType ...

const (
	HashTypeOther   HashType = "other"
	HashTypeVideo   HashType = "video"
	HashTypeSlice   HashType = "slice"
	HashTypePoster  HashType = "poster"
	HashTypeThumb   HashType = "thumb"
	HashTypeCaption HashType = "caption"
)

TypeOther ...

type IModel

type IModel interface {
	Table() interface{}
	ID() string
	SetID(string)
	Version() int
	SetVersion(int)
}

IModel ...

type ISync

type ISync interface {
	Sync() error
}

ISync ...

type IVideo

type IVideo interface {
	Video() *Video
}

IVideo ...

func VideoFromInfo

func VideoFromInfo(ctx context.Context, Work *Work) (IVideo, error)

VideoFromInfo ...

func VideoFromSource

func VideoFromSource(Work *Work) (IVideo, error)

VideoFromSource ...

type IWork

type IWork interface {
	ID() string
	Work() *Work
	Video() *Video
	Info() string
	Update() error
	Store() error
	Reset() error
	Status() WorkStatus
	Run(ctx context.Context) (e error)
	Stop() error
}

IWork ...

func LoadWork

func LoadWork(id string) (IWork, error)

LoadWork ...

func NewInfoWork

func NewInfoWork(info *VideoPornInfo, options ...WorkOptions) (IWork, error)

NewInfoWork ...

func NewSourceWork

func NewSourceWork(source *VideoPornSource, options ...WorkOptions) (IWork, error)

NewSourceWork ...

type Model

type Model struct {
	// contains filtered or unexported fields
}

Model ...

func (*Model) BeforeInsert

func (m *Model) BeforeInsert()

BeforeInsert ...

func (Model) ID

func (m Model) ID() string

ID ...

func (*Model) SetID

func (m *Model) SetID(id string)

SetID ...

func (*Model) SetVersion

func (m *Model) SetVersion(v int)

SetVersion ...

func (Model) Version

func (m Model) Version() int

Version ...

type Node

type Node interface {
	Type() string
	ID() *PeerID
	AddFile(ctx context.Context, filename string) (string, error)
	AddDir(ctx context.Context, dir string) (string, error)
	PinHash(ctx context.Context, hash string) error
	UnpinHash(ctx context.Context, hash string) error
	PinCheck(ctx context.Context, hash ...string) (int, error)
}

Node ...

func NewClusterNode

func NewClusterNode(addr string) Node

NewClusterNode ...

func NewSingleNode

func NewSingleNode(addr string) Node

NewSingleNode ...

type PeerID

type PeerID struct {
	Addresses       []string `json:"Addresses"`
	AgentVersion    string   `json:"AgentVersion"`
	ID              string   `json:"ID"`
	ProtocolVersion string   `json:"ProtocolVersion"`
	PublicKey       string   `json:"PublicKey"`
}

PeerID ...

type Queue

type Queue struct {
	// contains filtered or unexported fields
}

Queue ...

func NewQueue

func NewQueue(c cacher.Cacher) *Queue

NewQueue ...

func (*Queue) Add

func (q *Queue) Add(s string)

Add ...

func (*Queue) Delete

func (q *Queue) Delete(s string)

Delete ...

func (*Queue) Finish

func (q *Queue) Finish(s string)

Finish ...

func (*Queue) Get

func (q *Queue) Get() (v string, b bool)

Get ...

func (*Queue) Has

func (q *Queue) Has(s string) bool

Has ...

func (*Queue) IsRunning

func (q *Queue) IsRunning(s string) (b bool)

IsRunning ...

func (*Queue) List

func (q *Queue) List() []string

List ...

func (*Queue) Restore

func (q *Queue) Restore() ([]string, error)

Restore ...

func (*Queue) Running

func (q *Queue) Running(work IWork) (b bool)

Running ...

func (*Queue) Stop

func (q *Queue) Stop(id string)

Stop ...

type Sample

type Sample struct {
	Index int64  `json:"Index"`
	Thumb string `json:"Thumb"`
	Image string `json:"Image"`
	Title string `json:"Title"`
}

Sample ...

type Scale

type Scale = fftool.Scale

type Task

type Task struct {
	Limit     int
	Interval  int
	ClearTemp bool
	// contains filtered or unexported fields
}

Task ...

func NewTask

func NewTask() *Task

NewTask ...

func (*Task) AddWorker

func (t *Task) AddWorker(work IWork, force bool) error

AddWorker ...

func (*Task) AllRun

func (t *Task) AllRun() (works []IWork, e error)

AllRun ...

func (*Task) AutoStop

func (t *Task) AutoStop() bool

AutoStop ...

func (*Task) GetWork

func (t *Task) GetWork(id string) (IWork, error)

GetWork ...

func (*Task) GetWorkStatus

func (t *Task) GetWorkStatus(id string) (WorkStatus, error)

GetWorkStatus ...

func (*Task) SetAutoStop

func (t *Task) SetAutoStop(autoStop bool)

SetAutoStop ...

func (*Task) Start

func (t *Task) Start() error

Start ...

func (*Task) StartWork

func (t *Task) StartWork(id string) error

StartWork ...

func (*Task) Stop

func (t *Task) Stop()

Stop ...

func (*Task) StopWork

func (t *Task) StopWork(id string)

StopWork ...

type Video

type Video struct {
	Model        `xorm:"extends" json:"-"`
	No           string   `xorm:"no" json:"no"`                       //编号
	Intro        string   `xorm:"varchar(2048)" json:"intro"`         //简介
	Alias        []string `xorm:"json" json:"alias"`                  //别名,片名
	ThumbHash    string   `xorm:"thumb_hash" json:"thumb_hash"`       //缩略图
	PosterHash   string   `xorm:"poster_hash" json:"poster_hash"`     //海报地址
	SourceHash   string   `xorm:"source_hash" json:"source_hash"`     //原片地址
	M3U8Hash     string   `xorm:"m3u8_hash" json:"m3u8_hash"`         //切片地址
	Key          string   `xorm:"key"  json:"-"`                      //秘钥
	M3U8         string   `xorm:"m3u8" json:"-"`                      //M3U8名
	Role         []string `xorm:"json" json:"role"`                   //主演
	Director     string   `xorm:"director" json:"director"`           //导演
	Systematics  string   `xorm:"systematics" json:"systematics"`     //分级
	Season       string   `xorm:"season" json:"season"`               //季
	TotalEpisode string   `xorm:"total_episode" json:"total_episode"` //总集数
	Episode      string   `xorm:"episode" json:"episode"`             //集数
	Producer     string   `xorm:"producer" json:"producer"`           //生产商
	Publisher    string   `xorm:"publisher" json:"publisher"`         //发行商
	Type         string   `xorm:"type" json:"type"`                   //类型:film,FanDrama
	Format       string   `xorm:"format" json:"format"`               //输出格式:3D,2D,VR(VR格式:Half-SBS:左右半宽,Half-OU:上下半高,SBS:左右全宽)
	Language     string   `xorm:"language" json:"language"`           //语言
	Caption      string   `xorm:"caption" json:"caption"`             //字幕
	Group        string   `xorm:"group" json:"-"`                     //分组
	Index        string   `xorm:"index" json:"-"`                     //索引
	Date         string   `xorm:"'date'" json:"date"`                 //发行日期
	Sharpness    string   `xorm:"sharpness" json:"sharpness"`         //清晰度
	Series       string   `xorm:"series" json:"series"`               //系列
	Tags         []string `xorm:"json tags" json:"tags"`              //标签
	Length       string   `xorm:"length" json:"length"`               //时长
	Sample       []string `xorm:"json sample" json:"sample"`          //样板图
	Uncensored   bool     `xorm:"uncensored" json:"uncensored"`       //有码,无码
}

Video ...

func (*Video) BeforeInsert

func (v *Video) BeforeInsert()

BeforeInsert ...

func (Video) JSONVersion

func (v Video) JSONVersion() string

JSONVersion ...

func (Video) MarshalJSONVersion

func (v Video) MarshalJSONVersion() (string, error)

MarshalJSONVersion ...

func (*Video) Sync

func (v *Video) Sync() error

Sync ...

func (*Video) Table

func (v *Video) Table() interface{}

Table ...

type VideoPornInfo

type VideoPornInfo struct {
	From          string    `json:"From"`          //来源
	Uncensored    bool      `json:"Uncensored"`    //无码
	ID            string    `json:"ID"`            //番号
	Title         string    `json:"Title"`         //标题
	OriginalTitle string    `json:"OriginalTitle"` //原始标题
	Year          string    `json:"Year"`          //日期
	ReleaseDate   string    `json:"ReleaseDate"`   //发行日
	Studio        string    `json:"Studio"`        //工作室
	MovieSet      string    `json:"MovieSet"`      //系列
	Plot          string    `json:"Plot"`          //情节
	Genres        []*Genre  `json:"Genres"`        //类型,标签
	Actors        []*Actor  `json:"Actors"`        //演员
	Image         string    `json:"Image"`         //海报
	Thumb         string    `json:"Thumb"`         //缩略图
	Sample        []*Sample `json:"Sample"`        //样板图
}

VideoPornInfo ...

func (VideoPornInfo) Video

func (v VideoPornInfo) Video() *Video

Video ...

type VideoPornSource

type VideoPornSource struct {
	Bangumi    string    `json:"bangumi"`     //番号 no
	VideoPath  []string  `json:"video_path"`  //视频地址
	SourceHash string    `json:"source_hash"` //原片hash
	ThumbPath  string    `json:"thumb_path"`  //缩略图路径
	PosterPath string    `json:"poster_path"` //海报路径
	Format     string    `json:"format"`      //输出:3D,2D
	Thumb      string    `json:"thumb"`       //缩略图HASH
	Poster     string    `json:"poster"`      //海报HASH
	Intro      string    `json:"intro"`       //简介 title
	Alias      []string  `json:"alias"`       //别名,片名
	Role       []string  `json:"role"`        //角色列表 stars
	Director   string    `json:"director"`    //导演
	Date       string    `json:"date"`        //发行日
	Length     string    `json:"length"`      //片长
	Producer   string    `json:"producer"`    //制片商
	Series     string    `json:"series"`      //系列
	Tags       []string  `json:"tags"`        //标签
	Publisher  string    `json:"publisher"`   //发行商
	Language   string    `json:"language"`    //语言
	Caption    string    `json:"caption"`     //字幕
	Uncensored bool      `json:"uncensored"`  //有码,无码
	ExtendList []*Extend `json:"extend_list"` //扩展信息
}

VideoPornSource ...

func (VideoPornSource) Video

func (v VideoPornSource) Video() *Video

Video ...

type VideoProcessFunc

type VideoProcessFunc func(src []byte) (IVideo, error)

VideoProcessFunc ...

type Work

type Work struct {
	*WorkImpl
	WorkType string
	Value    []byte
	// contains filtered or unexported fields
}

Work ...

func (Work) CheckStop

func (w Work) CheckStop(f func() error) error

CheckStop ...

func (Work) ID

func (w Work) ID() string

ID ...

func (*Work) Info

func (w *Work) Info() string

Info ...

func (Work) Output

func (w Work) Output() string

Output ...

func (*Work) Reset

func (w *Work) Reset() error

Reset ...

func (*Work) Run

func (w *Work) Run(ctx context.Context) (e error)

Run ...

func (Work) Status

func (w Work) Status() WorkStatus

Status ...

func (*Work) Stop

func (w *Work) Stop() error

Stop ...

func (*Work) Store

func (w *Work) Store() error

Store ...

func (*Work) Update

func (w *Work) Update() error

Update ...

func (*Work) Video

func (w *Work) Video() *Video

Video ...

func (*Work) Work

func (w *Work) Work() *Work

Work ...

type WorkImpl

type WorkImpl struct {
	ID         string
	Status     WorkStatus
	VideoPaths []string
	PosterPath string
	ThumbPath  string
	SamplePath []string
	Scale      Scale
	Output     string
	Skip       []string
	ClearTemp  bool
}

WorkImpl ...

type WorkOptions

type WorkOptions func(impl *WorkImpl)

WorkOptions ...

func ClearTempOption

func ClearTempOption(b bool) WorkOptions

ClearTempOption ...

func IDOption

func IDOption(id string) WorkOptions

IDOption ...

func OutputPathOption

func OutputPathOption(path string) WorkOptions

OutputPathOption ...

func PosterPathOption

func PosterPathOption(path string) WorkOptions

PosterPathOption ...

func SamplePathOption

func SamplePathOption(path []string) WorkOptions

SamplePathOption ...

func ScaleOption

func ScaleOption(scale Scale) WorkOptions

ScaleOption ...

func SkipOption

func SkipOption(skip ...string) WorkOptions

SkipOption ...

func ThumbPathOption

func ThumbPathOption(path string) WorkOptions

ThumbPathOption ...

func VideoPathOption

func VideoPathOption(path []string) WorkOptions

VideoPathOption ...

type WorkStatus

type WorkStatus int

WorkStatus ...

const (
	WorkAbnormal WorkStatus = iota
	WorkWaiting
	WorkRunning
	WorkStopped
	WorkFinish
)

WorkWaiting ...

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to