Skip to content

metatube-community/metatube-sdk-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

MetaTube SDK Go

Build Status Go Report Card Require Go Version GitHub License Tag

Metadata Tube SDK in Golang.

Contents

Features

  • Supported platforms
    • Linux
    • Darwin
    • Windows
    • BSD(s)
  • Supported Databases
  • Image processing
    • Auto cropping
    • Badge support
    • Face detection
    • Image hashing
  • RESTful API
  • 20+ providers
  • Text translation

Installation

To install this package, you first need Go installed (version 1.21+ is required), then you can use the below Go command to install SDK.

go get -u github.com/metatube-community/metatube-sdk-go

Quickstart

# assume the following codes in example.go file
$ cat example.go
package main

import (
	"fmt"
	"log"

	"github.com/metatube-community/metatube-sdk-go/engine"
)

func main() {
	app := engine.Default()

	results, err := app.SearchMovieAll("<movie_id>", false)
	if err != nil {
		log.Fatal(err)
	}

	for _, result := range results {
		fmt.Println(result.Provider, result.ID, result.Number, result.Title)
	}
}
# run example.go and see output on console
$ go run example.go

API Examples

You can find detailed examples in examples folder or specific implementations in cmd folder.

Initiate SDK engine manually

package main

import (
	"log"
	"time"

	"github.com/metatube-community/metatube-sdk-go/database"
	"github.com/metatube-community/metatube-sdk-go/engine"
)

func main() {
	// Open database using in-memory SQLite.
	db, _ := database.Open(&database.Config{
		DSN:		  ":memory:",
		PreparedStmt: false,
	})

	// Allocate app engine with request timeout set to one minute.
	app := engine.New(db, time.Minute)

	// Initiate DB tables, only required at the first time.
	if err := app.AutoMigrate(true); err != nil {
		log.Fatal(err)
	}
}

Search and get actor info

func main() {
	app := engine.Default()
	
	// Search actor from Xs/List with fallback enabled.
	app.SearchActor("<actor_name>", xslist.Name, true)
	
	// Search actor from all available providers with fallback enabled.
	app.SearchActorAll("<actor_name>", true)
	
	// Get actor metadata id from Xs/List with lazy enabled.
	app.GetActorInfoByProviderID(xslist.Name, "<id>", true)
	
	// Get actor metadata from given URL with lazy enabled.
	app.GetActorInfoByURL("https://<actor_page_url>", true)
}

Search and get movie info

func main() {
	app := engine.Default()
	
	// Search movie from JavBus with fallback enabled.
	app.SearchMovie("<movie_id>", javbus.Name, true)
	
	// Search movie from all available providers with fallback enabled.
	// Option fallback will search the database for movie info if the corresponding providers
	// fail to return valid metadata.
	app.SearchMovieAll("<movie_id>", true)
	
	// Get movie metadata id from ARZON with lazy enable.
	// With the lazy option set to true, it will first try to search the database and return
	// the info directly if it exists. If the lazy option is set to false, it will fetch info
	// from the given provider and update the database.
	app.GetMovieInfoByProviderID(arzon.Name, "<id>", true)
	
	// Get movie metadata from given URL with lazy enabled.
	app.GetMovieInfoByURL("https://<movie_page_url>", true)
}

Get actor and movie images

func main() {
	app := engine.Default()
	
	// Get actor primary image id from Xs/List.
	app.GetActorPrimaryImage(xslist.Name, "<id>")
	
	// Get movie primary image id from FANZA with aspect ratio and pos set to default.
	app.GetMoviePrimaryImage(fanza.Name, "<id>", -1, -1)
	
	// Get movie primary image id from FANZA with aspect ratio set to 7:10 and pos
	// set to the center.
	app.GetMoviePrimaryImage(fanza.Name, "<id>", 0.70, 0.5)
	
	// Get movie backdrop image id from SOD.
	app.GetMovieBackdropImage(sod.Name, "<id>")
}

Text translate engine

package main

import (
	"github.com/metatube-community/metatube-sdk-go/translate"
)

func main() {
	var (
		appId  = "XXX"
		appKey = "XXX"
	)
	// Translate `Hello` from auto to Japanese by Baidu.
	translate.BaiduTranslate("Hello", "auto", "ja", appId, appKey)

	var apiKey = "XXX"
	// Translate `Hello` from auto to simplified Chinese by Google.
	translate.GoogleTranslate("Hello", "auto", "zh-cn", apiKey)
}

Credits

Library Description
gocolly/colly Elegant Scraper and Crawler Framework for Golang
gin-gonic/gin Gin is a HTTP web framework written in Go
gorm.io/gorm The fantastic ORM library for Golang
esimov/pigo Fast face detection, pupil/eyes localization and facial landmark points detection library in pure Go
robertkrimen/otto A JavaScript interpreter in Go (golang)
modernc.org/sqlite Package sqlite is a CGo-free port of SQLite/SQLite3
corona10/goimagehash Go Perceptual image hashing package
antchfx/xpath XPath package for Golang, supports HTML, XML, JSON document query

License

Apache-2.0 License