summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2009-09-05 15:00:08 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2009-09-05 15:00:08 +0800
commitc94dafd1113bf7077cdbed3b0976f598a138f357 (patch)
tree33e4267e53937e012d0b6f2a8c5626b25d474b09
parentc5f2e1a7e979aa353d78c12396dd0ec043bdc9b7 (diff)
wrapper: enhance the ppsvod-list
It can dump selected info by setting a mask
-rw-r--r--wrapper/ppsvod-list.c132
1 files 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();