From 92dadb712bf64d879d8d7040a78873c5ccd4f754 Mon Sep 17 00:00:00 2001 From: Luo Jinghua Date: Sat, 5 Sep 2009 15:00:08 +0800 Subject: wrapper: enhance the ppsvod-list It can dump selected info by setting a mask --- wrapper/ppsvod-list.c | 132 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 90 insertions(+), 42 deletions(-) diff --git a/wrapper/ppsvod-list.c b/wrapper/ppsvod-list.c index c7d6ce0..bbf55e9 100644 --- a/wrapper/ppsvod-list.c +++ b/wrapper/ppsvod-list.c @@ -7,71 +7,119 @@ #include "pps-fixed.h" -static void dump_vod_list(void) +enum display_mask { + DISPLAY_CATEGORY = 1 << 0, + DISPLAY_SUBCATEGORY = 1 << 1, + DISPLAY_FILMS = 1 << 2, + DISPLAY_FILES = 1 << 3, + DISPLAY_ALL = 0xffff +}; + +static void dump_channel (ppscategory *cat, ppscategory *subcat, int mask) { - ppscategory *cat, *cur, *subcur; - int catnum; + ppschannel* ch; + ppsitem* item; - cat = pps_vodlist_getcat(&catnum); - if (!cat) + ch = pps_vodlist_getchannel(cat->id, subcat ? subcat->id : 0, + subcat ? subcat->subcatnum : cat->subcatnum, 1); + if (!ch) return; - for (cur = cat; cur; cur = cur->next) + for (; ch; ch = ch->next) { - int i = 0; + printf ("\t\tfilm name: %s\n", ch->name); + printf ("\t\tfilm director: %s\n", ch->director); + printf ("\t\tactor: %s\n", ch->actor); + printf ("\t\tarea: %s\n", ch->area); + printf ("\t\tpubtime: %s\n", ch->pubtime); + printf ("\t\tlang: %s\n", ch->lang); + printf ("\t\tdesc: %s\n", ch->desc); - printf ("cat id: %d\n", cur->id); - printf ("cat name: %s\n", cur->name); - printf ("cat type: %d\n", cur->type); - printf ("subcat num: %d\n", cur->subcatnum); - - for (subcur = cur->psubcat; subcur; subcur = subcur->next) + if (mask & DISPLAY_FILES) { - ppschannel* ch; - ppsitem* item; + for (item = ch->pitems; item; item = item->next) + { + printf ("\t\t\turl: %s\n", item->ppsurl); + printf ("\t\t\tvip_flag: %d\n", item->vipflag); + printf ("\t\t\tformat: %s\n", item->format); + printf ("\t\t\tsize: %dMB\n", item->size); + printf ("\t\t\tduration: %dM\n", item->duration); + printf ("\t\t\tbitrate: %d\n\n", item->bitrate); + } + } + } +} - printf ("subcat: %d\n", i++); - printf ("\tcat id: %d\n", subcur->id); - printf ("\tcat name: %s\n", subcur->name); - printf ("\tcat type: %d\n", subcur->type); - printf ("\tsubcat num: %d\n", subcur->subcatnum); - printf ("\tsubcat next: %p\n", subcur->next); +static void dump_category (ppscategory *cat, int mask) +{ + ppscategory *subcat; - ch = pps_vodlist_getchannel(cur->id, subcur->id, subcur->subcatnum, 1); - if (!ch) - continue; + printf ("cat id: %d\n", cat->id); + printf ("cat name: %s\n", cat->name); + printf ("cat type: %d\n", cat->type); + printf ("subcat num: %d\n", cat->subcatnum); - for (; ch; ch = ch->next) + if (cat->type == 0) + { + if (mask & DISPLAY_SUBCATEGORY) + { + for (subcat = cat->psubcat; subcat; subcat = subcat->next) { - printf ("\tchannel name: %s\n", ch->name); - printf ("\tchannel director: %s\n", ch->director); - printf ("\tactor: %s\n", ch->actor); - printf ("\tarea: %s\n", ch->area); - printf ("\tpubtime: %s\n", ch->pubtime); - printf ("\tlang: %s\n", ch->lang); - printf ("\tdesc: %s\n", ch->desc); - for (item = ch->pitems; item; item = item->next) - { - printf ("\t\turl: %s\n", item->ppsurl); - printf ("\t\tvip_flag: %d\n", item->vipflag); - printf ("\t\tformat: %s\n", item->format); - printf ("\t\tsize: %dMB\n", item->size); - printf ("\t\tduration: %dM\n", item->duration); - printf ("\t\tbitrate: %d\n\n", item->bitrate); - } + printf ("\tsubcat id: %d\n", subcat->id); + printf ("\tsubcat name: %s\n", subcat->name); + printf ("\tsubcat type: %d\n", subcat->type); + printf ("\tsubcat num: %d\n", subcat->subcatnum); + + if (mask & DISPLAY_FILMS) + dump_channel (cat, subcat, mask); + + printf ("\n"); } } } + else + { + if (mask & DISPLAY_FILMS) + dump_channel (cat, NULL, mask); + } +} + +static void dump_vod_list(int mask) +{ + ppscategory *cat, *cur, *subcur; + int catnum; + + cat = pps_vodlist_getcat(&catnum); + if (!cat) + { + printf ("----Failed to get categories.\n"); + return; + } + + if (mask & DISPLAY_CATEGORY) + { + for (cur = cat; cur; cur = cur->next) + dump_category (cur, mask); + } } int main(int argc, char** argv) { int ret = 0; + int mask = DISPLAY_ALL; + + if (argc > 1) + mask = atoi (argv[1]); printf ("--Intialize vod list--\n"); ret = pps_vodlist_init(); + if (ret < 0) + { + printf ("--Failed to intialize vod list--\n"); + return -1; + } - dump_vod_list(); + dump_vod_list(mask); printf("------pps vod list uninitianlizing...\n"); pps_vodlist_uninit(); -- cgit v1.2.3