Packages

Extube is a wrapper for the hubtraffic API. It gathers data from multiple tube sites including [x] Pornhub [x] Redtube [ ] Tube8 [x] Youporn [x] Xtube [ ] Spankwire [ ] Keezmovies [ ] Extremetube.

Current section

Files

Jump to
extube lib extube.ex
Raw

lib/extube.ex

defmodule Extube do
@moduledoc """
Extube is a wrapper for the hubtraffic API.
It gathers data from multiple tube sites including
pornhub,
redtube,
tube8,
youporn,
xtube,
spankwire,
keezmovies,
and extremetube.
"""
@doc """
Queries the hubtraffic API to search for videos given a map of parameters.
Parameters right now include the following:
`:category`
`:page`
`:search`
`:ordering`
`:period`
`:thumbsize` (Required)
For information on possible values of the parameters, see here
<https://www.hubtraffic.com/resources/api?site_id=3>
"""
def search_videos(params \\ %{thumbsize: "medium"}) do
base_url = "https://www.pornhub.com/webmasters/search?"
handle_hubtraffic_call(base_url, params)
end
@doc """
Retrieves additional information about specific video by id parameter.
## Parameters:
`id` (Required) Integer
`thumbsize` (Optional) If set, provides additional thumbnails in different formats. Possible values are small,medium,large,small_hd,medium_hd,large_hd
"""
def get_video_by_id(video_id, thumbsize \\ "medium") do
base = "https://www.pornhub.com/webmasters/video_by_id?"
handle_hubtraffic_call(base, %{
id: video_id,
thumbsize: thumbsize
})
end
@doc """
Retrieves embed code for specific video by video_id parameter, which is useful to automatically embed videos.
## Parameters:
`id` (Required) Integer
"""
def get_video_embed_code(video_id) do
base = "https://www.pornhub.com/webmasters/video_embed_code?"
handle_hubtraffic_call(base, %{
id: video_id
})
end
@doc """
Retrieves all deleted videos.
## Parameters:
`page` (Required) Integer
"""
def get_deleted_videos(page) do
base = "https://www.pornhub.com/webmasters/deleted_videos?"
handle_hubtraffic_call(base, %{
page: page
})
end
@doc """
Retrieves state of a specific video specified by is_video_active parameter, which is useful in order to keep your embedded videos up to date.
## Parameters:
`id` (Required) Integer
"""
def is_video_active(video_id) do
base = "https://www.pornhub.com/webmasters/is_video_active?"
handle_hubtraffic_call(base, %{
id: video_id
})
end
@doc """
Retrieves all available categories.
"""
def get_categories_list do
handle_hubtraffic_call("http://www.pornhub.com/webmasters/categories", %{})
end
@doc """
Retrieves all tags available.
## Parameters:
`list` a-z for tag starting letter, 0 for other.
"""
def get_tags_list(starts_with) do
base = "https://www.pornhub.com/webmasters/tags?"
handle_hubtraffic_call(base, %{
list: starts_with
})
end
@doc """
Retrieves all pornstars available.
"""
def get_star_list do
handle_hubtraffic_call("https://www.pornhub.com/webmasters/stars", %{})
end
@doc """
Retrieves all pornstars available with details (page url and star's thumb).
"""
def get_star_detailed_list do
handle_hubtraffic_call("https://www.pornhub.com/webmasters/stars_detailed", %{})
end
defp handle_hubtraffic_call(base_url, params) do
url = base_url <> URI.encode_query(params)
{:ok, data} = HTTPoison.get(url)
data_map = Poison.decode!(data.body)
case hubtraffic_error_code(data_map["code"]) do
:error -> {:error, data_map["message"]}
:success -> {:success, data_map}
end
end
defp hubtraffic_error_code(code) do
error_codes = [
"1001",
"1002",
"1003",
"2001",
"2002",
"3001",
"3002",
"3003",
]
case (code in error_codes) do
true -> :error
false -> :success
end
end
end