Skip to content

gar-r/ngore

Repository files navigation

What is this?

ngore is a library written in Go to interact with the https://ncore.pro website. Since the ncore website does not provide an official api, this library uses website scraping to parse the responses.

How to use

Add a dependency

To import the library, make sure you are using a recent version of Go.

Use go get to add a dependency to the latest release:

go get github.com/gar-r/ngore@latest

Add a dependency to a specific version:

 go get github.com/gar-r/ngore@v0.9.1

Initialize the api

To create an instance of the api with a default client:

api := ngore.Default("https://ncore.pro")	

Optionally, you may want to customize the client used by the api:

client := &http.Client{
    Timeout: 30 * time.Second,
}
api := ngore.New(client, "https://ncore.pro")

Usage Examples

Login

In order to use the api, you will first have to log in. Using the api without logging in, or with an expired login will result in an error being returned.

err := api.Login(&login.BasicAuth{
    UserName: "user",
    Password: "pass",
})
if err != nil {
	// ...
}

Search

basic search

The search function takes a search.Params pointer, which specifies what to search for. At a minimum, you want to add a search phrase:

res, err := api.Search(&search.Params{
    SearchPhrase: "hortobagy",
})

In most cases you will want to narrow down you search a bit more:

func SearchMovieByName(api ngore.Api) error {
    params := &search.Params{
        SearchPhrase: "hortobagy",
        Field:        search.Name,
        Category:     search.MovieSdHu,
    }
	res, err := api.Search(params)
    if err != nil {
        return err
    }
    // process results
    return nil
}

Search returns a search.Result pointer, which contains the actual result list, and paging information. The following example prints out the name of every search result on the first page:

for _, t := range res.Torrents {
    fmt.Printf("name: %s\n", t.Title)
}

paging

By default, search will request the first page of the results. This can be changed by specifying the value of the Page field in the search.Params.

The following example performs several searches in order to iterate through all results in all pages:

func SearchWithPaging(api ngore.Api) error {
	params := &search.Params{
		SearchPhrase: "game",
		Field:        search.Name,
		Category:     search.SeriesSdEn,
	}
	var res *search.Result
	var err error
	for params.Page = 0; res == nil || res.Page.HasMore(); params.Page++ {
		fmt.Printf("page %d\n", params.Page)
		res, err = api.Search(params)
		if err != nil {
			return err
		}
		// process results on page
	}
	return nil
}

sorting

Server-side sorting can be requested using the SortField and SortMode fields:

func SearchWithSort(api ngore.Api) error {
	params := &search.Params{
		SearchPhrase: "penguin",
		SortField:    search.ByDownloaded,
		SortMode:     search.Descending,
	}
	res, err := api.Search(params)
	if err != nil {
		return err
	}
	// process results
	return nil
}

User Activity

Several user activity stats can be requested from the server. This is represented by the activity.Info struct.

The following example demonstrates how to fetch the user activity details:

func PrintActivity(api ngore.Api) error {
	info, err := api.Activity()
	if err != nil {
		return err
	}
	PrintJson(info)
	return nil
}

Result :

{
  "Rank": {
    "Daily": "111",
    "Weekly": "222",
    "Monthly": "333",
    "PrevMonth": "444"
  },
  "Stats": {
    "Current": "0",
    "Allowed": "korlátlan",
    "PenMonths": "5",
    "PenTorrents": "0"
  },
  "CanDownload": "igen",
  "History": []
}

Download

In order to download, you only need to provide the torrent id, and have a valid api key (automatically acquired by the api after logging in).

The following example downloads a torrent:

func Download(api ngore.Api) error {
	t := // acquired by searching previously
	bytes, err := api.Download(t.Id)
	if err != nil {
		return err
	}
	// process downloaded data
	return nil
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages