Defines | Typedefs | Enumerations
Types

Defines

#define QUVIINFO_VOID   0x100000
#define QUVIINFO_LONG   0x200000
#define QUVIINFO_STRING   0x300000
#define QUVIINFO_DOUBLE   0x400000
#define QUVIINFO_TYPEMASK   0xf00000
#define QUVIPROPERTY_STRING   0x100000
#define QUVIPROPERTY_LONG   0x200000
#define QUVIPROPERTY_DOUBLE   0x300000
#define QUVIPROPERTY_VOID   0x400000
#define QUVIPROPERTY_TYPEMASK   0xf00000
#define QUVI_WRITEFUNC_ABORT   0x10000000

Typedefs

typedef void * quvi_t
 libquvi session handle
typedef void * quvi_media_t
 Media parsing session handle.
typedef void * quvi_video_t
 Video parsing session handle.
typedef void * quvi_ident_t
 Webscript ident handle.
typedef int(* quvi_callback_status )(long param, void *data)
 Status callback function.
typedef int(* quvi_callback_write )(char *buffer, size_t size, size_t nitems, void *instream)
 Write callback function.
typedef uint32_t quvi_word
 Word type.
typedef uint8_t quvi_byte
 Byte type.

Enumerations

enum  QUVIversion { QUVI_VERSION = 0x00, QUVI_VERSION_LONG }
enum  QUVIcode {
  QUVI_OK = 0x00, QUVI_MEM, QUVI_BADHANDLE, QUVI_INVARG,
  QUVI_CURLINIT, QUVI_LAST, QUVI_ABORTEDBYCALLBACK, QUVI_LUAINIT,
  QUVI_NOLUAWEBSITE, QUVI_NOLUAUTIL, _INTERNAL_QUVI_LAST, QUVI_PCRE = 0x40,
  QUVI_NOSUPPORT, QUVI_CALLBACK, QUVI_ICONV, QUVI_LUA,
  QUVI_CURL = 0x42
}
enum  QUVIstatus { QUVISTATUS_FETCH = 0x00, QUVISTATUS_VERIFY, QUVISTATUS_RESOLVE, QUVISTATUS_SHORTENED = 0x2 }
enum  QUVIstatusType { QUVISTATUSTYPE_PAGE = 0x00, QUVISTATUSTYPE_CONFIG, QUVISTATUSTYPE_PLAYLIST, QUVISTATUSTYPE_DONE }
enum  QUVIoption {
  QUVIOPT_FORMAT = 0x00, QUVIOPT_NOVERIFY, QUVIOPT_STATUSFUNCTION, QUVIOPT_WRITEFUNCTION,
  QUVIOPT_NORESOLVE, QUVIOPT_CATEGORY, QUVIOPT_FETCHFUNCTION, QUVIOPT_RESOLVEFUNCTION,
  QUVIOPT_VERIFYFUNCTION, QUVIOPT_NOSHORTENED = 0x4
}
enum  QUVIcategory {
  QUVIPROTO_HTTP = 0x1, QUVIPROTO_MMS = 0x2, QUVIPROTO_RTSP = 0x4, QUVIPROTO_RTMP = 0x8,
  QUVIPROTO_ALL
}
enum  QUVIinfo {
  QUVIINFO_NONE = 0x00, QUVIINFO_CURL = QUVIINFO_VOID + 1, QUVIINFO_RESPONSECODE = QUVIINFO_LONG + 3, QUVIINFO_CURLCODE = QUVIINFO_LONG + 2,
  QUVIINFO_HTTPCODE = QUVIINFO_LONG + 3, _QUVIINFO_LAST = 3
}
enum  QUVIproperty {
  QUVIPROP_NONE = 0x00, QUVIPROP_HOSTID = QUVIPROPERTY_STRING + 1, QUVIPROP_PAGEURL = QUVIPROPERTY_STRING + 2, QUVIPROP_PAGETITLE = QUVIPROPERTY_STRING + 3,
  QUVIPROP_MEDIAID = QUVIPROPERTY_STRING + 4, QUVIPROP_MEDIAURL = QUVIPROPERTY_STRING + 5, QUVIPROP_MEDIACONTENTLENGTH = QUVIPROPERTY_DOUBLE + 6, QUVIPROP_MEDIACONTENTTYPE = QUVIPROPERTY_STRING + 7,
  QUVIPROP_FILESUFFIX = QUVIPROPERTY_STRING + 8, QUVIPROP_RESPONSECODE = QUVIPROPERTY_LONG + 9, QUVIPROP_FORMAT = QUVIPROPERTY_STRING + 10, QUVIPROP_STARTTIME = QUVIPROPERTY_STRING + 11,
  QUVIPROP_MEDIATHUMBNAILURL = QUVIPROPERTY_STRING + 12, QUVIPROP_MEDIADURATION = QUVIPROPERTY_DOUBLE + 13, QUVIPROP_VIDEOID = QUVIPROPERTY_STRING + 4, QUVIPROP_VIDEOURL = QUVIPROPERTY_STRING + 5,
  QUVIPROP_VIDEOFILELENGTH = QUVIPROPERTY_DOUBLE + 6, QUVIPROP_VIDEOFILECONTENTTYPE = QUVIPROPERTY_STRING + 7, QUVIPROP_VIDEOFILESUFFIX = QUVIPROPERTY_STRING + 8, QUVIPROP_HTTPCODE = QUVIPROPERTY_LONG + 9,
  QUVIPROP_VIDEOFORMAT = QUVIPROPERTY_STRING + 10, _QUVIPROP_LAST = 13
}
enum  QUVIidentProperty {
  QUVI_IDENT_PROPERTY_NONE = 0x00, QUVI_IDENT_PROPERTY_URL = QUVIPROPERTY_STRING + 1, QUVI_IDENT_PROPERTY_DOMAIN = QUVIPROPERTY_STRING + 2, QUVI_IDENT_PROPERTY_FORMATS = QUVIPROPERTY_STRING + 3,
  QUVI_IDENT_PROPERTY_CATEGORIES = QUVIPROPERTY_LONG + 4, _QUVI_IDENT_PROPERTY_LAST = 4
}

Detailed Description

Describes the constants and the types used with the API.


Define Documentation

#define QUVIINFO_VOID   0x100000

void type

#define QUVIINFO_LONG   0x200000

long type

#define QUVIINFO_STRING   0x300000

string type

#define QUVIINFO_DOUBLE   0x400000

double type

#define QUVIINFO_TYPEMASK   0xf00000

type mask

#define QUVIPROPERTY_STRING   0x100000

string type

#define QUVIPROPERTY_LONG   0x200000

long type

#define QUVIPROPERTY_DOUBLE   0x300000

double type

#define QUVIPROPERTY_VOID   0x400000

void type

#define QUVIPROPERTY_TYPEMASK   0xf00000

type mask

#define QUVI_WRITEFUNC_ABORT   0x10000000

Abort writing


Typedef Documentation

typedef void* quvi_t

libquvi session handle

typedef void* quvi_media_t

Media parsing session handle.

Since:
0.2.15
typedef void* quvi_video_t

Video parsing session handle.

Deprecated:
Since 0.2.15, use quvi_media_t instead
typedef void* quvi_ident_t

Webscript ident handle.

Since:
0.2.16
typedef int(* quvi_callback_status)(long param, void *data)

Status callback function.

Callback function for status changes.

Note:
Returning a non-zero value from the callback function will stop libquvi

Example:

 static int status_callback (long param, void *data)
 {
   quvi_word status, type;

   status = quvi_loword(param);
   type   = quvi_hiword(param);

   switch (status)
     {
     case QUVISTATUS_RESOLVE:
       switch (type)
       {
       case QUVISTATUSTYPE_DONE:
         puts("done.");
         break;
       default:
         printf (":: Check for URL redirection ...");
         break;
       }
     break;
     case QUVISTATUS_FETCH:
       switch (type)
         {
          case QUVISTATUSTYPE_CONFIG:
            printf(":: Fetch config ...");
            break;
          case QUVISTATUSTYPE_PLAYLIST:
            printf(":: Fetch playlist ...");
            break;
          case QUVISTATUSTYPE_DONE:
            puts("done.");
            break;
          default:
            printf(":: Fetch %s ...",(char*)data);
            break;
         }
       break;
     case QUVISTATUS_VERIFY:
       switch (type)
         {
         case QUVISTATUSTYPE_DONE:
           puts("done.");
           break;
         default:
           printf(":: Verify URL ...");
           break;
         }
       break;
     }
   fflush(stdout);
   return (QUVI_OK);
 }

 int main (int argc, char *argv[])
 {
   quvi_t quvi;
   quvi_init(&quvi);
   quvi_setopt(quvi, QUVIOPT_STATUSFUNCTION, status_callback);
   ...
 }
typedef int(* quvi_callback_write)(char *buffer, size_t size, size_t nitems, void *instream)

Write callback function.

This function gets called by libquvi (or libcurl) as soon as there is data received that needs to be saved.

Note:
Returning QUVI_WRITEFUNC_ABORT from the callback function will stop write
Ignored with QUVIOPT_FETCHFUNCTION, QUVIOPT_RESOLVEFUNCTION and QUVIOPT_VERIFYFUNCTION
typedef uint32_t quvi_word

Word type.

typedef uint8_t quvi_byte

Byte type.


Enumeration Type Documentation

Types used with quvi_version()

Enumerator:
QUVI_VERSION 

Version string only

QUVI_VERSION_LONG 

Version string, build date and misc. features

enum QUVIcode

Return codes

Enumerator:
QUVI_OK 

OK

QUVI_MEM 

Memory allocation failed

QUVI_BADHANDLE 

Bad session handle

QUVI_INVARG 

Invalid function argument

QUVI_CURLINIT 

libcurl initialization failed

QUVI_LAST 

Indicates end of list iteration

QUVI_ABORTEDBYCALLBACK 

Aborted by callback function

QUVI_LUAINIT 

Lua initialization failure

QUVI_NOLUAWEBSITE 

Failed to find lua website scripts

QUVI_NOLUAUTIL 

Failed to find lua util scripts

_INTERNAL_QUVI_LAST 

For library internal use only

QUVI_PCRE 

libpcre error occurred

Deprecated:
Since 0.2.9
QUVI_NOSUPPORT 

libquvi does not support the website

QUVI_CALLBACK 

Callback error occurred

Since:
0.2.16
See also:
quvi_callback_fetch
quvi_callback_resolve
quvi_callback_verify
QUVI_ICONV 

libiconv error occurred

QUVI_LUA 

LUA error occurred

QUVI_CURL 

libcurl error occurred

Deprecated:
Since 0.2.16, use QUVI_CALLBACK instead
enum QUVIstatus

Status codes

Enumerator:
QUVISTATUS_FETCH 

Status changed to fetch data from URL

QUVISTATUS_VERIFY 

Status changed to verify media URL

QUVISTATUS_RESOLVE 

Status changed to resolve redirection

QUVISTATUS_SHORTENED 

Status changed to check for shortened URL

Deprecated:
Since 0.2.16, use QUVISTATUS_RESOLVE instead

Status type codes

Enumerator:
QUVISTATUSTYPE_PAGE 

Fetching page

QUVISTATUSTYPE_CONFIG 

Fetching config

QUVISTATUSTYPE_PLAYLIST 

Fetching playlist

QUVISTATUSTYPE_DONE 

General purpose "done" status type

enum QUVIoption

Option codes to be used with quvi_setopt()

Enumerator:
QUVIOPT_FORMAT 

Requested format, the resulting format may be different from the requested one if the LUA script was unable to parse an URL to the requested format. The scripts are expected to fallback to the 'default' format if the requested format could not be parsed and raise an error if that failed as well.

QUVIOPT_NOVERIFY 

Do not verify URL; content-type, content-length (of HTTP), etc. will not be queried

QUVIOPT_STATUSFUNCTION 

Callback function for status updates

See also:
quvi_callback_status
QUVIOPT_WRITEFUNCTION 

Callback function for writing data

See also:
quvi_callback_write
QUVIOPT_NORESOLVE 

Do not attempt to resolve URLs that may be redirections, e.g. URL shortening services typically use redirections

QUVIOPT_CATEGORY 

Bit pattern of (OR'd) website script categories

QUVIOPT_FETCHFUNCTION 

Callback function for fetching data

See also:
quvi_callback_fetch
QUVIOPT_RESOLVEFUNCTION 

Callback function for resolving URL redirections

See also:
quvi_callback_resolve
QUVIOPT_VERIFYFUNCTION 

Callback function for verifying media stream URL

See also:
quvi_callback_verify
QUVIOPT_NOSHORTENED 

Do not "decompress" shortened URLs,

Deprecated:
since 0.2.16, use QUVIOPT_NORESOLVE instead

Website script category

Specify which of the website script categories the application wants to use. The library defaults to QUVIPROTO_HTTP for historical reasons.

Note:
Consider setting the appropriate category in your application, the default behaviour is planned to change to "QUVIPROTO_ALL" in 0.2.20
See also:
quvi_setopt
QUVIOPT_CATEGORY
Enumerator:
QUVIPROTO_HTTP 

Protocol category HTTP

QUVIPROTO_MMS 

Protocol category MMS

QUVIPROTO_RTSP 

Protocol category RTSP

QUVIPROTO_RTMP 

Protocol category RTMP

QUVIPROTO_ALL 

All protocol categories

enum QUVIinfo

Info codes to be used with quvi_getinfo()

The library creates a cURL handle which is used to fetch and verify parsed details. The cURL handle is initialized with the following libcurl options:

  • CURLOPT_USERAGENT ("Mozilla/5.0")
  • CURLOPT_FOLLOWLOCATION (1)
  • CURLOPT_NOBODY (0)

You can, of course, override those settings in your program. You can even use the cURL handle in your program until quvi_close() is called which will release the handle. See the src/quvi.c for an example of this. Note that libquvi uses the libcurl easy interface and not the multi interface.

Warning:
If you use the libquvi created cURL handle in your program, leave the releasing of the handle for the library to do.
Enumerator:
QUVIINFO_NONE 

Placeholder

QUVIINFO_CURL 

Session libcurl handle

QUVIINFO_RESPONSECODE 
QUVIINFO_CURLCODE 

Last server returned HTTP code Last libcurl returned code

Deprecated:
Since 0.2.16
QUVIINFO_HTTPCODE 

Last returned HTTP code by a server

Deprecated:
Since 0.2.16, use QUVIINFO_RESPONSECODE instead
_QUVIINFO_LAST 

Placeholder

Media property codes to be used with quvi_getprop()

Enumerator:
QUVIPROP_NONE 

Placeholder

QUVIPROP_HOSTID 

Host ID

QUVIPROP_PAGEURL 

Page URL

QUVIPROP_PAGETITLE 

Page title

QUVIPROP_MEDIAID 

Media ID

QUVIPROP_MEDIAURL 

Media URL

QUVIPROP_MEDIACONTENTLENGTH 

Media content length in bytes

QUVIPROP_MEDIACONTENTTYPE 

Media content-type

QUVIPROP_FILESUFFIX 

Parsed file suffix

QUVIPROP_RESPONSECODE 

Last server returned HTTP code

QUVIPROP_FORMAT 

Requested format, set using QUVIOPT_FORMAT

QUVIPROP_STARTTIME 

Start time for media

QUVIPROP_MEDIATHUMBNAILURL 

Media cover URL, if any

QUVIPROP_MEDIADURATION 

Media duration in msecs

QUVIPROP_VIDEOID 

Video ID

Deprecated:
Since 0.2.15, use QUVIPROP_MEDIAID instead
QUVIPROP_VIDEOURL 

Video URL

Deprecated:
Since 0.2.15, use QUVIPROP_MEDIAURL instead
QUVIPROP_VIDEOFILELENGTH 

Video file length

Deprecated:
Since 0.2.15, use QUVIPROP_MEDIACONTENTLENGTH instead
QUVIPROP_VIDEOFILECONTENTTYPE 

Video file content-type

Deprecated:
Since 0.2.15, use QUVIPROP_MEDIACONTENTTYPE instead
QUVIPROP_VIDEOFILESUFFIX 

Video file suffix

Deprecated:
Since 0.2.15, use QUVIPROP_FILESUFFIX instead
QUVIPROP_HTTPCODE 

Last libcurl returned HTTP code

Deprecated:
Since 0.2.16, use QUVIPROP_RESPONSECODE instead
QUVIPROP_VIDEOFORMAT 

Requested video format, set using QUVIOPT_FORMAT

Deprecated:
Since 0.2.15, use QUVIPROP_FORMAT instead
_QUVIPROP_LAST 

Placeholder

Enumerator:
QUVI_IDENT_PROPERTY_NONE 

Unused

QUVI_IDENT_PROPERTY_URL 

URL

QUVI_IDENT_PROPERTY_DOMAIN 

Domain string

QUVI_IDENT_PROPERTY_FORMATS 

Formats string

QUVI_IDENT_PROPERTY_CATEGORIES 

Formats string

_QUVI_IDENT_PROPERTY_LAST 

Placeholder

 All Files Functions Typedefs Enumerations Enumerator Defines