rescene

package module
v0.0.0-...-f06a145 Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2021 License: MIT Imports: 19 Imported by: 0

README

rescene: SRR/SRS parser in Go

Go Reference

Rescene parser for SRR and SRS.

API

See the API Reference.

Documentation

Index

Constants

View Source
const (
	EmptyHead          RarHeaderType = 0x00
	SrrVolHead         RarHeaderType = 0x69
	SrrStoredFileHead  RarHeaderType = 0x6A
	OSOHashHead        RarHeaderType = 0x6B
	SrrRarPadHead      RarHeaderType = 0x6C
	SrrRarSubBlockHead RarHeaderType = 0x71
	MarkHead           RarHeaderType = 0x72
	MainHead           RarHeaderType = 0x73
	FileHead           RarHeaderType = 0x74
	CommHead           RarHeaderType = 0x75
	AvHead             RarHeaderType = 0x76
	SubHead            RarHeaderType = 0x77
	ProtectHead        RarHeaderType = 0x78
	SignHead           RarHeaderType = 0x79
	NewSubHead         RarHeaderType = 0x7A
	EndArcHead         RarHeaderType = 0x7B
	MHD_VOLUME         RarHeaderFlag = 0x0001
	MHD_COMMENT        RarHeaderFlag = 0x0002
	MHD_LOCK           RarHeaderFlag = 0x0004
	MHD_SOLID          RarHeaderFlag = 0x0008
	MHD_NEWNUMBERING   RarHeaderFlag = 0x0010
	MHD_AV             RarHeaderFlag = 0x0020
	MHD_PROTECT        RarHeaderFlag = 0x0040
	MHD_PASSWORD       RarHeaderFlag = 0x0080
	MHD_FIRSTVOLUME    RarHeaderFlag = 0x0100
	MHD_ENCRYPTVER     RarHeaderFlag = 0x0200
	LHD_SPLIT_BEFORE   RarHeaderFlag = 0x0001
	LHD_SPLIT_AFTER    RarHeaderFlag = 0x0002
	LHD_PASSWORD       RarHeaderFlag = 0x0004
	LHD_COMMENT        RarHeaderFlag = 0x0008
	LHD_SOLID          RarHeaderFlag = 0x0010
	LHD_LARGE          RarHeaderFlag = 0x0100
	LHD_UNICODE        RarHeaderFlag = 0x0200
	LHD_SALT           RarHeaderFlag = 0x0400
	LHD_VERSION        RarHeaderFlag = 0x0800
	LHD_EXTTIME        RarHeaderFlag = 0x1000
	LHD_EXTFLAGS       RarHeaderFlag = 0x2000
	HAS_DATA           RarHeaderFlag = 0x8000
	SRR_APP_NAME       RarHeaderFlag = 0x0001
)

Variables

View Source
var ErrBadBlock = errors.New("rescene : block not properly formatted")

ErrBadBlock block not formatted properly

View Source
var ErrBadData = errors.New("rescene : incorrect data")

ErrBadData invalid data

View Source
var ErrBadFile = errors.New("rescene : file not properly formatted")

ErrBadFile file not properly formatted

View Source
var ErrCRC = errors.New("rescene : crc error")

ErrCRC crc doesn't match

View Source
var ErrDuplSFV = errors.New("rescene : duplicate file in sfv")

ErrDuplSFV file referenced twice in sfv

View Source
var ErrNoData = errors.New("rescene : no data")

ErrNoData data missing

View Source
var TypeID3v1 = filetype.NewType("id3v1", "audio/id3v1")

TypeID3v1 for ID3v1 tags

View Source
var TypeLyrics200 = filetype.NewType("lyrics200", "audio/lyrics200")

TypeLyrics200 for Lyricsv2 tags

View Source
var TypeSrs = filetype.NewType("srs", "application/resample")

TypeSrs for SRS files

Functions

func ID3v1Matcher

func ID3v1Matcher(buf []byte) bool

func Lyrics200Matcher

func Lyrics200Matcher(buf []byte) bool

func RarRootName

func RarRootName(path string) string

func SrsMatcher

func SrsMatcher(buf []byte) bool

Types

type AvHeadBlock

type AvHeadBlock struct {
	RarHeader
}

type AviBlock

type AviBlock struct {
	Size int
	Data []byte
}

func (*AviBlock) Unmarshal

func (block *AviBlock) Unmarshal(b []byte) (err error)

type CommHeadBlock

type CommHeadBlock struct {
	RarHeader
}

type EndArcHeadBlock

type EndArcHeadBlock struct {
	RarHeader
}

type FileHeadBlock

type FileHeadBlock struct {
	RarHeader
	LowPackSize     uint32
	LowUnpackSize   uint32
	HostOS          uint8
	FileCRC         uint32
	FileTime        uint32
	UnpackVersion   uint8
	Method          uint8
	NameSize        uint16
	FileAttr        uint32
	HighPackSize    uint32
	HighUnpackSize  uint32
	FileName        []byte
	FileNameUnicode []byte
	Salt            uint64
}

func (*FileHeadBlock) GetCRC

func (b *FileHeadBlock) GetCRC() uint32

func (*FileHeadBlock) GetFileName

func (b *FileHeadBlock) GetFileName() string

func (*FileHeadBlock) GetMethod

func (b *FileHeadBlock) GetMethod() uint8

func (*FileHeadBlock) GetPackSize

func (b *FileHeadBlock) GetPackSize() int

func (*FileHeadBlock) GetSize

func (b *FileHeadBlock) GetSize() int

func (*FileHeadBlock) GetUnpackSize

func (b *FileHeadBlock) GetUnpackSize() int

func (*FileHeadBlock) IsCompressed

func (b *FileHeadBlock) IsCompressed() bool

func (*FileHeadBlock) Parse

func (b *FileHeadBlock) Parse(data []byte) error

func (*FileHeadBlock) UpdatePackedFile

func (b *FileHeadBlock) UpdatePackedFile(p *PackedFile) error

type ID3v1Block

type ID3v1Block struct {
	Size int
	Data []byte
}

func (*ID3v1Block) Unmarshal

func (block *ID3v1Block) Unmarshal(b []byte) (err error)

type ID3v2Block

type ID3v2Block struct {
	Size int
	Data []byte
}

func (*ID3v2Block) Unmarshal

func (block *ID3v2Block) Unmarshal(b []byte) (err error)

type Lyrics200Block

type Lyrics200Block struct {
	Size int
	Data []byte
}

func (*Lyrics200Block) Unmarshal

func (block *Lyrics200Block) Unmarshal(b []byte) (err error)

type Lyrics200SubBlock

type Lyrics200SubBlock struct {
	Lyrics200SubHeader
	Data []byte
}

func (*Lyrics200SubBlock) Size

func (sb *Lyrics200SubBlock) Size() (int, error)

type Lyrics200SubHeader

type Lyrics200SubHeader struct {
	Head [3]byte
	Len  [5]byte
}

type MainHeadBlock

type MainHeadBlock struct {
	RarHeader
}

type MarkHeadBlock

type MarkHeadBlock struct {
	RarHeader
}

type MkvBlock

type MkvBlock struct {
	Size int
	Data []byte
}

func (*MkvBlock) Unmarshal

func (block *MkvBlock) Unmarshal(b []byte) (err error)

type MyParser

type MyParser struct {
	Size int
}

func (*MyParser) HandleBinary

func (p *MyParser) HandleBinary(id mkvparse.ElementID, value []byte, info mkvparse.ElementInfo) error

func (*MyParser) HandleDate

func (p *MyParser) HandleDate(id mkvparse.ElementID, value time.Time, info mkvparse.ElementInfo) error

func (*MyParser) HandleFloat

func (p *MyParser) HandleFloat(id mkvparse.ElementID, value float64, info mkvparse.ElementInfo) error

func (*MyParser) HandleInteger

func (p *MyParser) HandleInteger(id mkvparse.ElementID, value int64, info mkvparse.ElementInfo) error

func (*MyParser) HandleMasterBegin

func (p *MyParser) HandleMasterBegin(id mkvparse.ElementID, info mkvparse.ElementInfo) (bool, error)

func (*MyParser) HandleMasterEnd

func (p *MyParser) HandleMasterEnd(id mkvparse.ElementID, info mkvparse.ElementInfo) error

func (*MyParser) HandleString

func (p *MyParser) HandleString(id mkvparse.ElementID, value string, info mkvparse.ElementInfo) error

type NewSubHeadBlock

type NewSubHeadBlock struct {
	RarHeader
	LowPackSize    uint32
	LowUnpackSize  uint32
	HostOS         uint8
	FileCRC        uint32
	FileTime       uint32
	UnpackVersion  uint8
	Method         uint8
	NameSize       uint16
	FileAttr       uint32
	HighPackSize   uint32
	HighUnpackSize uint32
	FileName       []byte
	Salt           uint64
}

func (*NewSubHeadBlock) GetFileName

func (b *NewSubHeadBlock) GetFileName() string

func (*NewSubHeadBlock) GetPackSize

func (b *NewSubHeadBlock) GetPackSize() int

func (*NewSubHeadBlock) GetSize

func (b *NewSubHeadBlock) GetSize() int

func (*NewSubHeadBlock) Parse

func (b *NewSubHeadBlock) Parse(data []byte) error

type OSOHash

type OSOHash struct {
	Path string
	Size uint64
	Hash uint64
}

type OSOHashHeadBlock

type OSOHashHeadBlock struct {
	RarHeader
	FileSize uint64
	OSOHash  uint64
	NameSize uint16
	FileName []byte
}

func (*OSOHashHeadBlock) GetOSOHash

func (b *OSOHashHeadBlock) GetOSOHash() (h *OSOHash, err error)

func (*OSOHashHeadBlock) Parse

func (b *OSOHashHeadBlock) Parse(data []byte) error

type PackedFile

type PackedFile struct {
	Path string
	Size uint64
	CRC  uint32
}

type ProtectHeadBlock

type ProtectHeadBlock struct {
	RarHeader
	PackedSize      uint32
	Version         uint8
	RecSectorCount  uint16
	DataSectorCount uint32
}

func (*ProtectHeadBlock) GetSize

func (b *ProtectHeadBlock) GetSize() int

func (*ProtectHeadBlock) Parse

func (b *ProtectHeadBlock) Parse(data []byte) error

type RarFile

type RarFile struct {
	Path     string
	Size     int
	CRC      uint32
	IsFirst  bool
	IsNewFmt bool
}

type RarHeader

type RarHeader struct {
	CRC   uint16
	Type  RarHeaderType
	Flags RarHeaderFlag
	Size  uint16
}

func (*RarHeader) Flag

func (h *RarHeader) Flag(f RarHeaderFlag) bool

func (*RarHeader) GetSize

func (h *RarHeader) GetSize() int

func (*RarHeader) Parse

func (h *RarHeader) Parse(b []byte) error

type RarHeaderFlag

type RarHeaderFlag uint16

type RarHeaderType

type RarHeaderType byte

type RarNameFmt

type RarNameFmt byte

type SignHeadBlock

type SignHeadBlock struct {
	RarHeader
}

type SrrFile

type SrrFile struct {
	ApplicationName string
	StoredFiles     []*StoredFile
	OSOHashes       []*OSOHash
	RarFiles        []*RarFile
	RarCompressed   bool
	PackedFiles     []*PackedFile
	SFVComments     []string
}

func (*SrrFile) Unmarshal

func (f *SrrFile) Unmarshal(b []byte) (err error)

type SrrRarPadHeadBlock

type SrrRarPadHeadBlock struct {
	RarHeader
	PadSize uint32
	PadData []byte
}

func (*SrrRarPadHeadBlock) GetPadSize

func (b *SrrRarPadHeadBlock) GetPadSize() int

func (*SrrRarPadHeadBlock) GetSize

func (b *SrrRarPadHeadBlock) GetSize() int

func (*SrrRarPadHeadBlock) Parse

func (b *SrrRarPadHeadBlock) Parse(data []byte) error

type SrrRarSubBlockHeadBlock

type SrrRarSubBlockHeadBlock struct {
	RarHeader
	NameSize uint16
	FileName []byte
}

func (*SrrRarSubBlockHeadBlock) GetRarFileName

func (b *SrrRarSubBlockHeadBlock) GetRarFileName() string

func (*SrrRarSubBlockHeadBlock) Parse

func (b *SrrRarSubBlockHeadBlock) Parse(data []byte) error

type SrrStoredFileHeadBlock

type SrrStoredFileHeadBlock struct {
	RarHeader
	DataSize uint32
	NameSize uint16
	FileName []byte
	FileData []byte
}

func (*SrrStoredFileHeadBlock) GetSize

func (b *SrrStoredFileHeadBlock) GetSize() int

func (*SrrStoredFileHeadBlock) GetStoredFile

func (b *SrrStoredFileHeadBlock) GetStoredFile() (f *StoredFile, err error)

func (*SrrStoredFileHeadBlock) Parse

func (b *SrrStoredFileHeadBlock) Parse(data []byte) error

type SrrVolHeadBlock

type SrrVolHeadBlock struct {
	RarHeader
	AppNameLength uint16
	AppName       []byte
}

func (*SrrVolHeadBlock) GetAppName

func (b *SrrVolHeadBlock) GetAppName() string

func (*SrrVolHeadBlock) Parse

func (b *SrrVolHeadBlock) Parse(data []byte) (err error)

type SrsBlock

type SrsBlock struct {
	SrsHeader
	Size int
}

func (*SrsBlock) Unmarshal

func (block *SrsBlock) Unmarshal(b []byte) (err error)

type SrsFile

type SrsFile struct {
	Blocks []interface{}
}

func (*SrsFile) Unmarshal

func (f *SrsFile) Unmarshal(b []byte) (err error)

type SrsHeader

type SrsHeader struct {
	Head   [4]byte
	Length uint32
}

type StoredFile

type StoredFile struct {
	Path string
	Data []byte
}

type SubHeadBlock

type SubHeadBlock struct {
	RarHeader
}

Directories

Path Synopsis
examples

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL