Exemplo n.º 1
0
static void update_callback(void *user_data, channel_action action,
                            channel_info *channel_info, enclosure *enclosure,
                            const gchar *filename)
{
  struct channel_configuration *c = (struct channel_configuration *)user_data;

  switch (action) {
  case CCA_RSS_DOWNLOAD_START:
    if (!quiet)
      g_printf("Updating channel %s...\n", c->identifier);
    break;

  case CCA_RSS_DOWNLOAD_END:
    break;

  case CCA_ENCLOSURE_DOWNLOAD_START:
    g_assert(channel_info);
    g_assert(enclosure);

    if (verbose)
      _print_item_update(enclosure, filename);

    break;

  case CCA_ENCLOSURE_DOWNLOAD_END:
    g_assert(channel_info);
    g_assert(enclosure);
    g_assert(filename);

    /* Set media tags. */
    if (enclosure->type && !strcmp(enclosure->type, "audio/mpeg")) {
#ifdef ENABLE_ID3LIB
      if (_id3_check_and_set(filename, c))
        fprintf(stderr, "Error setting ID3 tag for file %s.\n", filename);
#endif /* ENABLE_ID3LIB */
    }

    /* Update playlist. */
    if (c->playlist) {
      playlist_add(c->playlist, filename);

      if (verbose)
        printf(" * Added downloaded enclosure %s to playlist %s.\n",
               filename, c->playlist);
    }
    break;
  }
}
Exemplo n.º 2
0
static void update_callback(void *user_data, channel_action action,
                            channel_info *channel_info, enclosure *enclosure,
                            const gchar *filename)
{
  struct channel_configuration *c = (struct channel_configuration *)user_data;

  switch (action) {
  case CCA_RSS_DOWNLOAD_START:
    if (!quiet)
      g_printf("Updating channel %s...\n", c->identifier);
    break;

  case CCA_RSS_DOWNLOAD_END:
    break;

  case CCA_ENCLOSURE_DOWNLOAD_START:
    g_assert(channel_info);
    g_assert(enclosure);

    if (verbose) {
      if (enclosure->length > 1024*1024*1024) {
        g_printf(" * Downloading %s (%.1f GB) from %s\n",
                 enclosure->filename, (float)enclosure->length / (1024.0*1024.0*1024.0),
                 channel_info->title);
      } else if (enclosure->length > 1024*1024) {
        g_printf(" * Downloading %s (%.1f MB) from %s\n",
                 enclosure->filename, (float)enclosure->length / (1024.0*1024.0),
                 channel_info->title);
      } else if (enclosure->length > 1024) {
        g_printf(" * Downloading %s (%.1f kB) from %s\n",
                 enclosure->filename, (float)enclosure->length / 1024.0,
                 channel_info->title);
      } else if (enclosure->length > 0) {
        g_printf(" * Downloading %s (%ld bytes) from %s\n",
                 enclosure->filename, enclosure->length,
                 channel_info->title);
      } else {
        g_printf(" * Downloading %s from %s\n",
                 enclosure->filename,
                 channel_info->title);
      }
    }
    break;

  case CCA_ENCLOSURE_DOWNLOAD_END:
    g_assert(channel_info);
    g_assert(enclosure);
    g_assert(filename);

    /* Set media tags. */
    if (enclosure->type && !strcmp(enclosure->type, "audio/mpeg")) {
#ifdef ENABLE_ID3LIB
      if (_id3_check_and_set(filename, c))
        fprintf(stderr, "Error setting ID3 tag for file %s.\n", filename);
#endif /* ENABLE_ID3LIB */
    }

    /* Update playlist. */
    if (c->playlist) {
      playlist_add(c->playlist, filename);

      if (verbose)
        printf(" * Added downloaded enclosure %s to playlist %s.\n",
               filename, c->playlist);
    }
    break;
  }
}