|
Packit |
3ff1e7 |
/** @page parse_playlist Parsing playlist properties
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
libquvi supports parsing a playlist properties (e.g. media URLs), these
|
|
Packit |
3ff1e7 |
may be accessed using the @ref playlistprop functions.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
The available @ref pl_script collection determines which
|
|
Packit |
3ff1e7 |
websites are supported by the library.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@note Using any of the QUVI_PLAYLIST_MEDIA_PROPERTY_* values
|
|
Packit |
3ff1e7 |
with @ref quvi_playlist_get will cause the library to advance to the first
|
|
Packit |
3ff1e7 |
media item in the list. This will make @ref quvi_playlist_media_next
|
|
Packit |
3ff1e7 |
function to continue from the second media stream, not the first one
|
|
Packit |
3ff1e7 |
as one might expect.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
For example:
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@code
|
|
Packit |
3ff1e7 |
quvi_playlist_t qp = quvi_playlist_new(q, URL);
|
|
Packit |
3ff1e7 |
abort_if_error();
|
|
Packit |
3ff1e7 |
{
|
|
Packit |
3ff1e7 |
char *p_id, *m_url;
|
|
Packit |
3ff1e7 |
quvi_playlist_get(qp, QUVI_PLAYLIST_PROPERTY_ID, &p_id);
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
/* Advances the playlist media list, starting from the first. */
|
|
Packit |
3ff1e7 |
quvi_playlist_get(qp, QUVI_PLAYLIST_MEDIA_PROPERTY_URL, &m_url);
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
/* Would now continue from second media item in the list. */
|
|
Packit |
3ff1e7 |
while (quvi_playlist_media_next(qp) == QUVI_TRUE)
|
|
Packit |
3ff1e7 |
quvi_playlist_get(qp, QUVI_PLAYLIST_MEDIA_PROPERTY_URL, &m_url);
|
|
Packit |
3ff1e7 |
}
|
|
Packit |
3ff1e7 |
@endcode
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
Where as:
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@code
|
|
Packit |
3ff1e7 |
quvi_playlist_t qp = quvi_playlist_new(q, URL);
|
|
Packit |
3ff1e7 |
abort_if_error();
|
|
Packit |
3ff1e7 |
{
|
|
Packit |
3ff1e7 |
char *p_id, *m_url;
|
|
Packit |
3ff1e7 |
quvi_playlist_get(qp, QUVI_PLAYLIST_PROPERTY_ID, &p_id);
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
/* Would start from the first stream in the list. */
|
|
Packit |
3ff1e7 |
while (quvi_playlist_media_next(qp) == QUVI_TRUE)
|
|
Packit |
3ff1e7 |
quvi_playlist_get(qp, QUVI_PLAYLIST_MEDIA_PROPERTY_URL, &m_url);
|
|
Packit |
3ff1e7 |
}
|
|
Packit |
3ff1e7 |
@endcode
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
Alternatively, call @ref quvi_playlist_media_reset after the @ref
|
|
Packit |
3ff1e7 |
quvi_playlist_get call.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@section parse_media_example Example
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
This example parses a playlist, then queries the media properties for
|
|
Packit |
3ff1e7 |
each found media URL.
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@code
|
|
Packit |
3ff1e7 |
quvi_playlist_t qp = quvi_playlist_new(q, URL);
|
|
Packit |
3ff1e7 |
abort_if_error();
|
|
Packit |
3ff1e7 |
{
|
|
Packit |
3ff1e7 |
char *s;
|
|
Packit |
3ff1e7 |
quvi_playlist_get(qp, QUVI_PLAYLIST_PROPERTY_ID, &s);
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
while (quvi_playlist_media_next(qp) == QUVI_TRUE)
|
|
Packit |
3ff1e7 |
{
|
|
Packit |
3ff1e7 |
quvi_playlist_get(qp, QUVI_PLAYLIST_MEDIA_PROPERTY_URL, &s);
|
|
Packit |
3ff1e7 |
abort_if_error();
|
|
Packit |
3ff1e7 |
{
|
|
Packit |
3ff1e7 |
quvi_media_t qm = quvi_media_new(q, s);
|
|
Packit |
3ff1e7 |
abort_if_error();
|
|
Packit |
3ff1e7 |
/* ... */
|
|
Packit |
3ff1e7 |
quvi_media_free(qm);
|
|
Packit |
3ff1e7 |
qm = NULL;
|
|
Packit |
3ff1e7 |
}
|
|
Packit |
3ff1e7 |
quvi_playlist_get(qp, QUVI_PLAYLIST_PROPERTY_TITLE, &s);
|
|
Packit |
3ff1e7 |
}
|
|
Packit |
3ff1e7 |
}
|
|
Packit |
3ff1e7 |
quvi_playlist_free(qp); /* Release when done using it. */
|
|
Packit |
3ff1e7 |
qp = NULL;
|
|
Packit |
3ff1e7 |
@endcode
|
|
Packit |
3ff1e7 |
|
|
Packit |
3ff1e7 |
@sa @ref parse_media
|
|
Packit |
3ff1e7 |
@sa QuviPlaylistProperty
|
|
Packit |
3ff1e7 |
*/
|