|
Packit |
3ff1e7 |
/** @page glossary_termino Glossary: Terminology
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@section sess_handle libcURL session handle
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
Calling @ref quvi_new creates a libcURL session handle. This handle is
|
|
Packit |
3ff1e7 |
reused by libquvi to access the Internet until @ref quvi_free is called.
|
|
Packit |
3ff1e7 |
libcURL sets most of the initial values for the handle when it is
|
|
Packit |
3ff1e7 |
created by calling curl_easy_init(3). libquvi will, additionally, make
|
|
Packit |
3ff1e7 |
the following changes to the handle when @ref quvi_new is called:
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
- CURLOPT_COOKIELIST is set to "ALL" (clear cookies in memory -- *when* @ref
|
|
Packit |
3ff1e7 |
QUVI_OPTION_ALLOW_COOKIES is QUVI_TRUE)
|
|
Packit |
3ff1e7 |
- CURLOPT_COOKIEFILE is set to "" (enable cookies -- *when* @ref
|
|
Packit |
3ff1e7 |
QUVI_OPTION_ALLOW_COOKIES is QUVI_TRUE)
|
|
Packit |
3ff1e7 |
- CURLOPT_HTTPHEADER is set to NULL (clear custom headers)
|
|
Packit |
3ff1e7 |
- CURLOPT_FOLLOWLOCATION is set to 1L (enabled)
|
|
Packit |
3ff1e7 |
- CURLOPT_USERAGENT is set to "Mozilla/5.0"
|
|
Packit |
3ff1e7 |
- CURLOPT_NOBODY is set to 0L (disabled)
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
The scripts (e.g. @ref m_script) may modify the cookie and HTTP header
|
|
Packit |
3ff1e7 |
settings dynamically which may be required in order to access some of
|
|
Packit |
3ff1e7 |
the resources, e.g. @ref m_stream. For this reason, it may be necessary
|
|
Packit |
3ff1e7 |
for the 3rd party applications using libquvi to reuse the current
|
|
Packit |
3ff1e7 |
session handle in order to access these sources. The session handle may
|
|
Packit |
3ff1e7 |
be queried using the @ref quvi_get function.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
The following functions will reset the session handle to its initial
|
|
Packit |
3ff1e7 |
state when they are called:
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
- @ref quvi_media_new
|
|
Packit |
3ff1e7 |
- @ref quvi_playlist_new
|
|
Packit |
3ff1e7 |
- @ref quvi_scan_new
|
|
Packit |
3ff1e7 |
- @ref quvi_subtitle_new
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
Any cookie and header settings that were set by any of the scripts
|
|
Packit |
3ff1e7 |
previously, will be lost when those functions are called.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@section media_sect Media
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@subsection m_prop Media property
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
A property that belongs to a medium, e.g. title. These are parsed and
|
|
Packit |
3ff1e7 |
returned by a @ref m_script.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@sa QuviMediaProperty
|
|
Packit |
3ff1e7 |
@sa quvi_get
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@subsection m_stream_id Media stream ID
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
A string value that is used to identify the @ref m_stream. They are
|
|
Packit |
3ff1e7 |
generated for each available media stream. They may vary per website.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
The @ref m_stream_id typically consists of:
|
|
Packit |
3ff1e7 |
@li Media container (e.g. "WebM")
|
|
Packit |
3ff1e7 |
@li Media quality (e.g. "hd720")
|
|
Packit |
3ff1e7 |
@li Video encoding (e.g. "VP8")
|
|
Packit |
3ff1e7 |
@li Video height (e.g. "720")
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
A typical ID could look like:
|
|
Packit |
3ff1e7 |
@verbatim
|
|
Packit |
3ff1e7 |
$quality_$container_$encoding_$height(p)
|
|
Packit |
3ff1e7 |
@endverbatim
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
Whether they are used in the @ref m_stream_id depends on whether the
|
|
Packit |
3ff1e7 |
website has made the data available, and whether the @ref m_script parses
|
|
Packit |
3ff1e7 |
the properties and uses them.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
Sometimes these IDs may as simple as "hd" or "sd", although as of
|
|
Packit |
3ff1e7 |
libquvi(-scripts) 0.9 the media scripts are expected to use the
|
|
Packit |
3ff1e7 |
"standardized representation of the stream ID" whenever possible.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
Example: Dailymotion
|
|
Packit |
3ff1e7 |
@verbatim
|
|
Packit |
3ff1e7 |
hq_mp4_h264_480p
|
|
Packit |
3ff1e7 |
@endverbatim
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
Example: YouTube
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
Similar, but uses the container value instead of the video
|
|
Packit |
3ff1e7 |
encoding value. It also uses the 'itag' value, which is specific to
|
|
Packit |
3ff1e7 |
YouTube.
|
|
Packit |
3ff1e7 |
@verbatim
|
|
Packit |
3ff1e7 |
hd720_webm_i45_720p
|
|
Packit |
3ff1e7 |
@endverbatim
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@sa @ref parse_media
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@subsection ms_prop Media stream property
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
A @ref m_prop that is specific to a @ref m_stream. Like with
|
|
Packit |
3ff1e7 |
@ref m_prop, these are parsed and returned by a @ref m_script.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@sa QuviMediaProperty
|
|
Packit |
3ff1e7 |
@sa quvi_get
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@subsection m_stream Media stream
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
A stream of media, e.g. multimedia. Some websites provide >1 media
|
|
Packit |
3ff1e7 |
streams for the hosted content, in which case the @ref m_script will
|
|
Packit |
3ff1e7 |
usually try to parse the URLs to these streams and return them to the
|
|
Packit |
3ff1e7 |
library.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@sa quvi_media_stream_select
|
|
Packit |
3ff1e7 |
@sa QuviMediaProperty
|
|
Packit |
3ff1e7 |
@sa @ref m_stream_url
|
|
Packit |
3ff1e7 |
@sa quvi_get
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@subsection m_stream_best Media stream: Best quality
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
The best quality stream is determined and flagged as such by
|
|
Packit |
3ff1e7 |
a @ref m_script when there are >1 streams available.
|
|
Packit |
3ff1e7 |
How the best quality stream is determined depends on the website and
|
|
Packit |
3ff1e7 |
the @ref m_script.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
The library uses the keyword 'best' with @ref quvi_media_stream_select
|
|
Packit |
3ff1e7 |
to identify this stream.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@sa @ref select_stream
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@subsection m_stream_default Media stream: Default quality
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
This is whatever the @ref m_script returns as the first stream. This
|
|
Packit |
3ff1e7 |
stream is returned always.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@subsection sub_data Subtitle data
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
The subtitle data format varies per website, e.g. YouTube uses
|
|
Packit |
3ff1e7 |
a custom timed-text (TT) format for CCs and TTSes. Generally speaking,
|
|
Packit |
3ff1e7 |
the applications may ignore this format as the API has been designed
|
|
Packit |
3ff1e7 |
so that the library provides the data in the requested format.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@sa @ref subex_script
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@subsection sub_lang Subtitle language
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
An available subtitle language. Each @ref sub_type consists of
|
|
Packit |
3ff1e7 |
(available) languages.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@sa @ref sub_type
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@subsection sub_lang_id Subtitle language ID
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
A string value that is used to identify the @ref sub_lang. They are
|
|
Packit |
3ff1e7 |
generated for each available language.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@subsection sub_type Subtitle type
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
Either a closed-caption (CC) or a text-to-speech (TTS, sometimes
|
|
Packit |
3ff1e7 |
referred to as "automatic captions"). Each subtitle consists of a
|
|
Packit |
3ff1e7 |
varying number of available languages.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@sa @ref sub_lang
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@subsection m_url Media URL
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
An Internet address to the media, e.g. "http://youtube.com/watch?v=foo".
|
|
Packit |
3ff1e7 |
This URL should not be confused with @ref m_stream_url.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@note This value is accessible to the scripts as "qargs.input_url"
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@subsection m_stream_url Media stream URL
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
An Internet address to the @ref m_stream.
|
|
Packit |
3ff1e7 |
This URL should not be confused with @ref m_url.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@section plist Playlist
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
A collection of @ref m_url s.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@section script_property Script property
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
A property of a script, that may be of either
|
|
Packit |
3ff1e7 |
a @ref m_script, a @ref pl_script, a @ref scan_script or
|
|
Packit |
3ff1e7 |
an @ref u_script.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@sa QuviScriptProperty
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@section sh_url Shortened URL
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
An URL that has been "compressed", or "shortened", by a service such as
|
|
Packit |
3ff1e7 |
is.gd or bit.ly .
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@section verification Verification of an URL
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
A step, previously until libquvi 0.9, was called a "media stream URL
|
|
Packit |
3ff1e7 |
verification process", during which the library would send an HTTP HEAD
|
|
Packit |
3ff1e7 |
request to the server to query the content-type and the content-length.
|
|
Packit |
3ff1e7 |
This step would also try to guess the file extension to the media from
|
|
Packit |
3ff1e7 |
the content-type. This step took place immediately after returning a
|
|
Packit |
3ff1e7 |
@ref m_stream_url from a @ref m_script.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
The verification process step was removed in libquvi 0.9, but an
|
|
Packit |
3ff1e7 |
additional function set was added to allow to querying this
|
|
Packit |
3ff1e7 |
meta-info if necessary.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@note Works with HTTP(S) URLs only
|
|
Packit |
3ff1e7 |
@sa http_metainfo
|
|
Packit |
3ff1e7 |
*/
|