gmyth/tests/gmyth_test_epg.c
author renatofilho
Thu Jun 14 20:40:47 2007 +0100 (2007-06-14)
branchtrunk
changeset 754 cb885ee44618
parent 750 312d6bc514f3
permissions -rw-r--r--
[svn r760] changed code style to Kernel Normal Form style with tabsize=4
melunko@274
     1
rosfran@618
     2
#include <gmyth/gmyth_backendinfo.h>
rosfran@618
     3
#include <gmyth/gmyth_epg.h>
melunko@274
     4
rosfran@593
     5
#include "common.h"
rosfran@593
     6
renatofilho@754
     7
static          gboolean
renatofilho@750
     8
test_epg_connection(GMythBackendInfo * backend_info)
melunko@274
     9
{
renatofilho@754
    10
    GMythEPG       *epg = gmyth_epg_new();
renatofilho@754
    11
    gboolean        res = FALSE;
melunko@274
    12
renatofilho@754
    13
    res = gmyth_epg_connect(epg, backend_info);
melunko@274
    14
renatofilho@754
    15
    gmyth_epg_disconnect(epg);
renatofilho@754
    16
    if (epg != NULL)
renatofilho@754
    17
        g_object_unref(epg);
melunko@274
    18
renatofilho@754
    19
    return res;
melunko@274
    20
}
melunko@274
    21
melunko@274
    22
renatofilho@754
    23
static          gboolean
renatofilho@750
    24
test_epg_get_channels(GMythBackendInfo * backend_info)
melunko@274
    25
{
renatofilho@754
    26
    GMythEPG       *epg = gmyth_epg_new();
renatofilho@754
    27
    GList          *clist;
renatofilho@754
    28
    gint            i,
renatofilho@754
    29
                    length;
melunko@274
    30
renatofilho@754
    31
    if (!gmyth_epg_connect(epg, backend_info)) {
renatofilho@754
    32
        return FALSE;
renatofilho@754
    33
    }
melunko@274
    34
renatofilho@754
    35
    length = gmyth_epg_get_channel_list(epg, &clist);
renatofilho@754
    36
    g_debug("==== %d channels found in the EPG ====\n", length);
renatofilho@754
    37
    for (i = 0; i < length; i++) {
renatofilho@754
    38
        GMythChannelInfo *channel_info =
renatofilho@754
    39
            (GMythChannelInfo *) g_list_nth_data(clist, i);
melunko@274
    40
renatofilho@754
    41
        gmyth_channel_info_print(channel_info);
renatofilho@754
    42
    }
melunko@274
    43
renatofilho@754
    44
    g_list_free(clist);
renatofilho@754
    45
    gmyth_epg_disconnect(epg);
renatofilho@754
    46
    if (epg != NULL)
renatofilho@754
    47
        g_object_unref(epg);
melunko@274
    48
}
melunko@274
    49
renatofilho@754
    50
static          gboolean
renatofilho@750
    51
test_epg_get_channel_icon(GMythBackendInfo * backend_info)
melunko@583
    52
{
renatofilho@754
    53
    GMythEPG       *epg = gmyth_epg_new();
renatofilho@754
    54
    GList          *clist;
renatofilho@754
    55
    gint            i,
renatofilho@754
    56
                    length;
melunko@583
    57
renatofilho@754
    58
    if (!gmyth_epg_connect(epg, backend_info)) {
renatofilho@754
    59
        return FALSE;
renatofilho@754
    60
    }
melunko@583
    61
renatofilho@754
    62
    length = gmyth_epg_get_channel_list(epg, &clist);
renatofilho@754
    63
    g_debug("==== %d channels found in the EPG ====\n", length);
renatofilho@754
    64
    for (i = 0; i < length; i++) {
renatofilho@754
    65
        GMythChannelInfo *channel_info =
renatofilho@754
    66
            (GMythChannelInfo *) g_list_nth_data(clist, i);
melunko@583
    67
renatofilho@754
    68
        if (gmyth_epg_channel_has_icon(epg, channel_info)) {
renatofilho@754
    69
            gchar          *icon_name =
renatofilho@754
    70
                g_strdup_printf("%s.jpg", channel_info->channel_name->str);
renatofilho@754
    71
            guint8         *icon_data = NULL;
renatofilho@754
    72
            guint           icon_length;
melunko@583
    73
renatofilho@754
    74
            g_debug("Channel %s has icon %s\n",
renatofilho@754
    75
                    channel_info->channel_name->str,
renatofilho@754
    76
                    channel_info->channel_icon->str);
melunko@583
    77
renatofilho@754
    78
            if (gmyth_epg_channel_get_icon
renatofilho@754
    79
                (epg, channel_info, &icon_data, &icon_length)) {
renatofilho@754
    80
                FILE           *outfile = fopen(icon_name, "w+");
renatofilho@754
    81
                if (fwrite(icon_data, icon_length, 1, outfile) ==
renatofilho@754
    82
                    icon_length)
renatofilho@754
    83
                    g_debug("\tIcon saved as %s", icon_name);
renatofilho@754
    84
                else
renatofilho@754
    85
                    g_debug
renatofilho@754
    86
                        ("\tError while downloading the file or writing it");
melunko@583
    87
renatofilho@754
    88
                g_free(icon_data);
renatofilho@754
    89
            }
renatofilho@754
    90
            g_free(icon_name);
melunko@583
    91
renatofilho@754
    92
        } else {
renatofilho@754
    93
            g_debug("Channel %s does not have icon\n",
renatofilho@754
    94
                    channel_info->channel_name->str);
renatofilho@754
    95
        }
renatofilho@754
    96
        gmyth_channel_info_print(channel_info);
renatofilho@754
    97
    }
renatofilho@750
    98
renatofilho@754
    99
    g_list_free(clist);
renatofilho@754
   100
    gmyth_epg_disconnect(epg);
renatofilho@754
   101
    g_object_unref(epg);
renatofilho@750
   102
renatofilho@754
   103
    return TRUE;
melunko@583
   104
}
melunko@583
   105
melunko@274
   106
int
renatofilho@750
   107
main(int args, const char **argv)
melunko@274
   108
{
melunko@274
   109
renatofilho@754
   110
    GMythBackendInfo *backend_info;
renatofilho@754
   111
    g_type_init();
renatofilho@754
   112
    g_thread_init(NULL);
melunko@274
   113
renatofilho@754
   114
    if (args < 2) {
renatofilho@754
   115
        g_debug("Type %s myth://hostname:port/?mythconverg\n", argv[0]);
renatofilho@754
   116
        return -1;
renatofilho@754
   117
    }
melunko@583
   118
renatofilho@754
   119
    backend_info = gmyth_backend_info_new_with_uri(argv[1]);
melunko@274
   120
renatofilho@754
   121
    fprintf(stdout, SYNC_STRING);
renatofilho@754
   122
    fflush(NULL);
renatofilho@754
   123
    getchar();
rosfran@593
   124
renatofilho@754
   125
    test_epg_connection(backend_info);
renatofilho@754
   126
    test_epg_get_channels(backend_info);
renatofilho@754
   127
    test_epg_get_channel_icon(backend_info);
melunko@274
   128
renatofilho@754
   129
    if (backend_info != NULL)
renatofilho@754
   130
        g_object_unref(backend_info);
rosfran@594
   131
renatofilho@754
   132
    return (0);
melunko@274
   133
}