/** * A simple set of functions to check our version 1.0 update service. * * @package WordPress * @since 2.3.0 */ /** * Check WordPress version against the newest version. * * The WordPress version, PHP version, and Locale is sent. Checks against the * WordPress server at api.wordpress.org server. Will only check if WordPress * isn't installing. * * @since 2.3.0 * @uses $wp_version Used to check against the newest WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @param bool $force_check Whether to bypass the transient cache and force a fresh update check. Defaults to false, true if $extra_stats is set. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_version_check( $extra_stats = array(), $force_check = false ) { if ( defined('WP_INSTALLING') ) return; global $wpdb, $wp_local_package; include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $php_version = phpversion(); $current = get_site_transient( 'update_core' ); $translations = wp_get_installed_translations( 'core' ); // Invalidate the transient when $wp_version changes if ( is_object( $current ) && $wp_version != $current->version_checked ) $current = false; if ( ! is_object($current) ) { $current = new stdClass; $current->updates = array(); $current->version_checked = $wp_version; } if ( ! empty( $extra_stats ) ) $force_check = true; // Wait 60 seconds between multiple version check requests $timeout = 60; $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( ! $force_check && $time_not_changed ) return false; $locale = get_locale(); /** * Filter the locale requested for WordPress core translations. * * @since 2.8.0 * * @param string $locale Current locale. */ $locale = apply_filters( 'core_version_check_locale', $locale ); // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_core', $current ); if ( method_exists( $wpdb, 'db_version' ) ) $mysql_version = preg_replace('/[^0-9.].*/', '', $wpdb->db_version()); else $mysql_version = 'N/A'; if ( is_multisite() ) { $user_count = get_user_count(); $num_blogs = get_blog_count(); $wp_install = network_site_url(); $multisite_enabled = 1; } else { $user_count = count_users(); $user_count = $user_count['total_users']; $multisite_enabled = 0; $num_blogs = 1; $wp_install = home_url( '/' ); } $query = array( 'version' => $wp_version, 'php' => $php_version, 'locale' => $locale, 'mysql' => $mysql_version, 'local_package' => isset( $wp_local_package ) ? $wp_local_package : '', 'blogs' => $num_blogs, 'users' => $user_count, 'multisite_enabled' => $multisite_enabled, ); $post_body = array( 'translations' => json_encode( $translations ), ); if ( is_array( $extra_stats ) ) $post_body = array_merge( $post_body, $extra_stats ); $url = $http_url = 'http://api.wordpress.org/core/version-check/1.7/?' . http_build_query( $query, null, '&' ); if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $options = array( 'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3 ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ), 'headers' => array( 'wp_install' => $wp_install, 'wp_blog' => home_url( '/' ) ), 'body' => $post_body, ); $response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) return false; $body = trim( wp_remote_retrieve_body( $response ) ); $body = json_decode( $body, true ); if ( ! is_array( $body ) || ! isset( $body['offers'] ) ) return false; $offers = $body['offers']; foreach ( $offers as &$offer ) { foreach ( $offer as $offer_key => $value ) { if ( 'packages' == $offer_key ) $offer['packages'] = (object) array_intersect_key( array_map( 'esc_url', $offer['packages'] ), array_fill_keys( array( 'full', 'no_content', 'new_bundled', 'partial', 'rollback' ), '' ) ); elseif ( 'download' == $offer_key ) $offer['download'] = esc_url( $value ); else $offer[ $offer_key ] = esc_html( $value ); } $offer = (object) array_intersect_key( $offer, array_fill_keys( array( 'response', 'download', 'locale', 'packages', 'current', 'version', 'php_version', 'mysql_version', 'new_bundled', 'partial_version', 'notify_email', 'support_email' ), '' ) ); } $updates = new stdClass(); $updates->updates = $offers; $updates->last_checked = time(); $updates->version_checked = $wp_version; if ( isset( $body['translations'] ) ) $updates->translations = $body['translations']; set_site_transient( 'update_core', $updates ); if ( ! empty( $body['ttl'] ) ) { $ttl = (int) $body['ttl']; if ( $ttl && ( time() + $ttl < wp_next_scheduled( 'wp_version_check' ) ) ) { // Queue an event to re-run the update check in $ttl seconds. wp_schedule_single_event( time() + $ttl, 'wp_version_check' ); } } // Trigger a background updates check if running non-interactively, and we weren't called from the update handler. if ( defined( 'DOING_CRON' ) && DOING_CRON && ! doing_action( 'wp_maybe_auto_update' ) ) { do_action( 'wp_maybe_auto_update' ); } } /** * Check plugin versions against the latest versions hosted on WordPress.org. * * The WordPress version, PHP version, and Locale is sent along with a list of * all plugins installed. Checks against the WordPress server at * api.wordpress.org. Will only check if WordPress isn't installing. * * @since 2.3.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_plugins( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined('WP_INSTALLING') ) return false; // If running blog-side, bail unless we've not checked in the last 12 hours if ( !function_exists( 'get_plugins' ) ) require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $plugins = get_plugins(); $translations = wp_get_installed_translations( 'plugins' ); $active = get_option( 'active_plugins', array() ); $current = get_site_transient( 'update_plugins' ); if ( ! is_object($current) ) $current = new stdClass; $new_option = new stdClass; $new_option->last_checked = time(); // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-plugins.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $plugin_changed = false; foreach ( $plugins as $file => $p ) { $new_option->checked[ $file ] = $p['Version']; if ( !isset( $current->checked[ $file ] ) || strval($current->checked[ $file ]) !== strval($p['Version']) ) $plugin_changed = true; } if ( isset ( $current->response ) && is_array( $current->response ) ) { foreach ( $current->response as $plugin_file => $update_details ) { if ( ! isset($plugins[ $plugin_file ]) ) { $plugin_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $plugin_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_plugins', $current ); $to_send = compact( 'plugins', 'active' ); $locales = array( get_locale() ); /** * Filter the locales requested for plugin translations. * * @since 3.7.0 * * @param array $locales Plugin locale. Default is current locale of the site. */ $locales = apply_filters( 'plugins_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 plugins $timeout = 3 + (int) ( count( $plugins ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'plugins' => json_encode( $to_send ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), 'all' => json_encode( true ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); foreach ( $response['plugins'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); foreach ( $response['no_update'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); if ( is_array( $response ) ) { $new_option->response = $response['plugins']; $new_option->translations = $response['translations']; // TODO: Perhaps better to store no_update in a separate transient with an expiry? $new_option->no_update = $response['no_update']; } else { $new_option->response = array(); $new_option->translations = array(); $new_option->no_update = array(); } set_site_transient( 'update_plugins', $new_option ); } /** * Check theme versions against the latest versions hosted on WordPress.org. * * A list of all themes installed in sent to WP. Checks against the * WordPress server at api.wordpress.org. Will only check if WordPress isn't * installing. * * @since 2.7.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_themes( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined( 'WP_INSTALLING' ) ) return false; $installed_themes = wp_get_themes(); $translations = wp_get_installed_translations( 'themes' ); $last_update = get_site_transient( 'update_themes' ); if ( ! is_object($last_update) ) $last_update = new stdClass; $themes = $checked = $request = array(); // Put slug of current theme into request. $request['active'] = get_option( 'stylesheet' ); foreach ( $installed_themes as $theme ) { $checked[ $theme->get_stylesheet() ] = $theme->get('Version'); $themes[ $theme->get_stylesheet() ] = array( 'Name' => $theme->get('Name'), 'Title' => $theme->get('Name'), 'Version' => $theme->get('Version'), 'Author' => $theme->get('Author'), 'Author URI' => $theme->get('AuthorURI'), 'Template' => $theme->get_template(), 'Stylesheet' => $theme->get_stylesheet(), ); } // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-themes.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time() - $last_update->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $theme_changed = false; foreach ( $checked as $slug => $v ) { if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) ) $theme_changed = true; } if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) { foreach ( $last_update->response as $slug => $update_details ) { if ( ! isset($checked[ $slug ]) ) { $theme_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $theme_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $last_update->last_checked = time(); set_site_transient( 'update_themes', $last_update ); $request['themes'] = $themes; $locales = array( get_locale() ); /** * Filter the locales requested for theme translations. * * @since 3.7.0 * * @param array $locales Theme locale. Default is current locale of the site. */ $locales = apply_filters( 'themes_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 themes $timeout = 3 + (int) ( count( $themes ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'themes' => json_encode( $request ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $new_update = new stdClass; $new_update->last_checked = time(); $new_update->checked = $checked; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); if ( is_array( $response ) ) { $new_update->response = $response['themes']; $new_update->translations = $response['translations']; } set_site_transient( 'update_themes', $new_update ); } /** * Performs WordPress automatic background updates. * * @since 3.7.0 */ function wp_maybe_auto_update() { include_once( ABSPATH . '/wp-admin/includes/admin.php' ); include_once( ABSPATH . '/wp-admin/includes/class-wp-upgrader.php' ); $upgrader = new WP_Automatic_Updater; $upgrader->run(); } /** * Retrieves a list of all language updates available. * * @since 3.7.0 */ function wp_get_translation_updates() { $updates = array(); $transients = array( 'update_core' => 'core', 'update_plugins' => 'plugin', 'update_themes' => 'theme' ); foreach ( $transients as $transient => $type ) { $transient = get_site_transient( $transient ); if ( empty( $transient->translations ) ) continue; foreach ( $transient->translations as $translation ) { $updates[] = (object) $translation; } } return $updates; } /** * Collect counts and UI strings for available updates * * @since 3.3.0 * * @return array */ function wp_get_update_data() { $counts = array( 'plugins' => 0, 'themes' => 0, 'wordpress' => 0, 'translations' => 0 ); if ( $plugins = current_user_can( 'update_plugins' ) ) { $update_plugins = get_site_transient( 'update_plugins' ); if ( ! empty( $update_plugins->response ) ) $counts['plugins'] = count( $update_plugins->response ); } if ( $themes = current_user_can( 'update_themes' ) ) { $update_themes = get_site_transient( 'update_themes' ); if ( ! empty( $update_themes->response ) ) $counts['themes'] = count( $update_themes->response ); } if ( ( $core = current_user_can( 'update_core' ) ) && function_exists( 'get_core_updates' ) ) { $update_wordpress = get_core_updates( array('dismissed' => false) ); if ( ! empty( $update_wordpress ) && ! in_array( $update_wordpress[0]->response, array('development', 'latest') ) && current_user_can('update_core') ) $counts['wordpress'] = 1; } if ( ( $core || $plugins || $themes ) && wp_get_translation_updates() ) $counts['translations'] = 1; $counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'] + $counts['translations']; $titles = array(); if ( $counts['wordpress'] ) $titles['wordpress'] = sprintf( __( '%d WordPress Update'), $counts['wordpress'] ); if ( $counts['plugins'] ) $titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] ); if ( $counts['themes'] ) $titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] ); if ( $counts['translations'] ) $titles['translations'] = __( 'Translation Updates' ); $update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : ''; $update_data = array( 'counts' => $counts, 'title' => $update_title ); /** * Filter the returned array of update data for plugins, themes, and WordPress core. * * @since 3.5.0 * * @param array $update_data { * Fetched update data. * * @type array $counts An array of counts for available plugin, theme, and WordPress updates. * @type string $update_title Titles of available updates. * } * @param array $titles An array of update counts and UI strings for available updates. */ return apply_filters( 'wp_get_update_data', $update_data, $titles ); } function _maybe_update_core() { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $current = get_site_transient( 'update_core' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) && isset( $current->version_checked ) && $current->version_checked == $wp_version ) return; wp_version_check(); } /** * Check the last time plugins were run before checking plugin versions. * * This might have been backported to WordPress 2.6.1 for performance reasons. * This is used for the wp-admin to check only so often instead of every page * load. * * @since 2.7.0 * @access private */ function _maybe_update_plugins() { $current = get_site_transient( 'update_plugins' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_plugins(); } /** * Check themes versions only after a duration of time. * * This is for performance reasons to make sure that on the theme version * checker is not run on every page load. * * @since 2.7.0 * @access private */ function _maybe_update_themes() { $current = get_site_transient( 'update_themes' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_themes(); } /** * Schedule core, theme, and plugin update checks. * * @since 3.1.0 */ function wp_schedule_update_checks() { if ( !wp_next_scheduled('wp_version_check') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_version_check'); if ( !wp_next_scheduled('wp_update_plugins') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins'); if ( !wp_next_scheduled('wp_update_themes') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_themes'); if ( ( wp_next_scheduled( 'wp_maybe_auto_update' ) > ( time() + HOUR_IN_SECONDS ) ) && ! defined('WP_INSTALLING') ) wp_clear_scheduled_hook( 'wp_maybe_auto_update' ); } if ( ( ! is_main_site() && ! is_network_admin() ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) return; add_action( 'admin_init', '_maybe_update_core' ); add_action( 'wp_version_check', 'wp_version_check' ); add_action( 'upgrader_process_complete', 'wp_version_check', 10, 0 ); add_action( 'load-plugins.php', 'wp_update_plugins' ); add_action( 'load-update.php', 'wp_update_plugins' ); add_action( 'load-update-core.php', 'wp_update_plugins' ); add_action( 'admin_init', '_maybe_update_plugins' ); add_action( 'wp_update_plugins', 'wp_update_plugins' ); add_action( 'upgrader_process_complete', 'wp_update_plugins', 10, 0 ); add_action( 'load-themes.php', 'wp_update_themes' ); add_action( 'load-update.php', 'wp_update_themes' ); add_action( 'load-update-core.php', 'wp_update_themes' ); add_action( 'admin_init', '_maybe_update_themes' ); add_action( 'wp_update_themes', 'wp_update_themes' ); add_action( 'upgrader_process_complete', 'wp_update_themes', 10, 0 ); add_action( 'wp_maybe_auto_update', 'wp_maybe_auto_update' ); add_action('init', 'wp_schedule_update_checks'); Videopolítica en el ParlamentoSesiónDeControl.com
Arrow

Videopolítica en el Parlamento


2
Miguel Ángel Gonzalo

Archivero-Bibliotecario de las Cortes Generales de España. Webmaster de www.congreso.es


Escrito el 9 de abril de 2013 a las 9:03 | Clasificado en Nacional

La videopolítica llegó para quedarse hace tiempo. El Congreso de los Diputados aporta al ecosistema del vídeo digital un archivo audiovisual para enlazar intervenciones, descargarlas o verlas en streaming.

Times Square. (Flickr: Jason Paris)
Times Square. (Flickr: Jason Paris)

En el parlamentarismo clásico se hablaba de “luz y taquígrafos” como frase emblemática de la transparencia. Hoy hay que hablar de taquígrafos 2.0 para referirse al ecosistema digital en torno a la “videopolítica” del que forman parte, desde los clásicos vídeos en Youtube, hasta los vídeos que los partidos políticos integran en sus páginas web o utilizan en sus campañas electorales, la cada vez más exitosa utilización de vídeos para el activismo, la posibilidad que ofrecen distintas agencias como Agoranews  para realizar streaming de actos, acciones o eventos sin dependen de la cobertura de los medios convencionales, la utilización de la tecnología para la emisión en directo de concentraciones a través de herramientas como Bambuser o la aparición de nuevas aplicaciones para smarthphones como Vine.

Todo ello, como señala Antoni Gutierrez-Rubí:

“Configura un poderoso sistema propio de comunicación audiovisual que permite visiones alternativas o complementarias a las versiones oficiales, mayoritarias o dominantes. Se trata de la narrativa de la multitudes”.

La “Declaración sobre transparencia parlamentaria“, aprobada por más de 70 organizaciones dedicadas a la monitorización del trabajo parlamentaria y presentada en distintos organismos internacionales, señala como uno de los puntos que califican a un parlamento como abierto al siguiente:

Proporcionar transmisiones en vivo y bajo demanda: se realizarán grandes esfuerzos por ofrecer a los ciudadanos el acceso en tiempo real y bajo demanda a los procedimientos parlamentarios a través de la radio, televisión e internet”.

El Congreso de los Diputados ha realizado, desde hace años, una importante inversión en medios audiovisuales; de este modo todas las retransmisiones de las sesiones son producidos por la propia cámara con medios propios. Ese esfuerzo cubre la exigencia de la declaración sobre transparencia ya que todas las sesiones públicas de carácter parlamentario están accesible en directo o bajo demanda.

La aportación del Congreso de los Diputados al ecosistema de internet es un proyecto audiovisual al que se puede acceder desde la página principal de la web del Congreso bajo la denominación genérica de “Congreso TV“.

El propósito final de esta iniciativa, como señala  Manuel Alba, es posibilitar, como hacen otros parlamentos de nuestro entorno, que los ciudadanos conozcan de primera mano, sin intermediación, como se desarrolla el trabajo de los parlamentarios, ya que la esencia del parlamentarismo es la publicidad de sus acciones. Todo ello de la la forma más sencilla y abierta posible.

El sistema está compuesto de tres accesos complementarios: Canal Parlamento, Congreso en Directo y Archivo Audiovisual.

Logo de Canal Parlamento.

Canal Parlamento es  un canal de televisión que se emite por satélite, cable e Internet, producido por el Congreso de los Diputados y que cuenta con una programación basada en la retransmisión, en directo y en diferido, de sesiones de Pleno y Comisión así como de programas divulgativos de producción propia.

El Canal Parlamento es la forma más sencilla de seguir la actividad del parlamento ya que selecciona para sus retransmisiones en directo las sesiones que, con un criterio estrictamente informativo, se consideran más relevantes. Además, es un canal producido, con lo cual las distintas intervenciones y asuntos se van dando paso a través de las oportunas informaciones. Para el seguimiento generalista probablemente sea el medio más sencillo.

Logo de Congreso en Directo.

Congreso en Directo es el proyecto más complejo desde el punto de vista tecnológico y organizativo y, además, el que mejor se adapta a las necesidades actuales de acceso, tanto para parlamentarios como para la ciudadanía. Permite seguir en directo todas las sesiones parlamentarias que se celebran cada día en la Cámara a través de la emisión simultánea de hasta cinco señales audiovisuales distinta

Así, si en una mañana o en una tarde se celebran cinco sesiones simultaneas de comisiones, cada una de ellas tendrá un canal específico, dentro de Congreso en Directo, para ser vistas en streaming. Para cada sesión se puede consultar el orden del día, que es el documento que recoge todos los asuntos que van a ser tratados en dicha sesión; además se puede enlazar, en la mayoría de los debates, con los documentos del BOCG que sirven de base para el debate.

La gran innovación en esta legislatura es lo que se puede denominar el “directo catalogado“. Para cada una de las sesiones, al acceder a ella, se puede ver, en el visor, al parlamentario que está en el uso de la palabra pero, además, se puede acceder directamente a cualquiera de las intervenciones que le han precedido de otros parlamentarios con indicación, además, del punto del debate al que se refiere.

Con esta formula, el ciudadano que se conecta a un debate ya iniciado puede saber, en todo momento, quién está hablando, sobre qué asunto y, lo que es más importante, puede recuperar intervenciones anteriores para conocer el contexto. Adicionalmente, el streaming permite retroceder o avanzar mediante la barra de desplazamiento situada en la parte inferior del visor de reproducción.

Para cada intervención se aporta el horario exacto de inicio y finalización lo cual también puede tener un interés adicional para la cuestión de la distribución de los tiempos entre oradores para debates especialmente tasados.

Cuando una sesión, ya sea de pleno o de comisión, finaliza, se puede acceder a su “emisión en diferido catalogada” a través de dos vías: durante la semana en curso se puede acceder a través de los enlaces de “Congreso en Directo” y, además, de forma permanente pasa a formar parte del “Archivo Audiovisual”.

A través del perfil de Twitter del Congreso @Congreso_Es se anuncia el comienzo de cada sesión en Congreso en Directo con el enlace al streaming para facilitar el acceso.

Logo del Archivo Audiovisual.

El “Archivo Audiovisual” es el depositario de la memoria audiovisual del parlamento, ya que contiene decenas de miles de horas de vídeo grabadas y libremente puestas a disposición de la ciudadanía. En el momento actual, se pueden recuperar las sesiones plenarias desde febrero de 2006  y  las sesiones de las comisiones desde mediados de 2007.  La cámara tiene la intención de cubrir todo el periodo constitucional a través de un archivo sonoro y de la imagen a medida que vaya siendo posible, dentro de los trabajos en curso.

Desde 2006 hasta septiembre de 2012 se puede acceder a una emisión en diferido completa de cada sesión. A partir de esa fecha, se dispone de más funcionalidades tales como el acceso a la sesión catalogada y a la posibilidad de descarga de un fichero para su posterior tratamiento.

Dentro de cada sesión, una vez desplegado el orden del día, se puede ver el debate completo de un punto, visualizar la intervención de un orador o descargar la intervención como un clip de vídeo independiente.

Ejemplo de acceso a los videos de las intervenciones desde la ficha de una iniciativa.

Cada intervención catalogada puede ser enlazada de forma individual en redes sociales, blogs y páginas web lo cual permite ampliar su alcance. Además, cada intervención de un parlamentario puede ser descargada en un fichero de vídeo que, a su vez, favorece su subida a otros medios como Youtube o su inserción en blogs o páginas web. Así, el Congreso, a través de su aviso legal, señala que la información disponible en el página web es susceptible de reutilización y es puesta a disposición del público sin sujeción a condiciones.

Los vídeos de las intervenciones de los parlamentarios están también enlazados desde su ficha personal. Accediendo al apartado de diputados y seleccionado un diputado en concreto, en el apartado de “intervenciones” están los enlaces directos a los cortes de vídeo específicos.

Ejemplo de acceso desde la ficha de un diputado a los cortes de vídeo de sus intervenciones

Para completar los puntos acceso, también desde la ficha de una iniciativa parlamentaria se puede acceder a los vídeos de las intervenciones correspondientes a su debate. Para ello se puede utilizar, por ejemplo, el buscador de iniciativas para localizar la iniciativa que interese; una vez abierta su ficha, y seleccionado el apartado de intervenciones, se puede ver la relación completa de todos los oradores que han participado en el debate con la posibilidad de ver en streaming cada intervención o descargarla en un fichero.

Entre los proyectos a medio plazo está ofrecer todos los vídeos, no sólo el streaming en directo, de acuerdo con la norma H.264 compatible con cualquier dispositivo que procese un código mpeg-4. Además se trabaja para que las intervenciones individuales se puedan embeber directamente en un sitio web o red social sin necesidad de pasar previamente por su descarga, lo cual garantiza la máxima apertura de los datos.

Un proyecto de la Secretaría General del Congreso

En tiempos en los que se pone en cuestión el trabajo de los empleados públicos., el proyecto audiovisual del Congreso es una trabajo realizado desde la Secretaría General del Congreso y en él intervienen numerosos actores con distintas responsabilidades, cuyo detalle específico excede con mucho las dimensiones y propósitos de un artículo informativo. A continuación se detallan algunas de las principales.

A la Dirección de Comunicación le corresponde, entre otras responsabilidades, el impulso inicial y la definición de las líneas y objetivos funcionales de lo que se espera, en términos comunicativos del proyecto. Es la encargada de la captura y producción de la señal, de la catalogación de los datos, de la gestión de la herramienta de edición, de la difusión de la información a través de la web y redes sociales y atiende de peticiones de vídeo.

El Centro TIC se encarga, entre otras funciones, de la gestión, desde el punto de vista tecnológico, de la información generada por la Dirección de Asistencia Técnico-Parlamentaria y la Dirección de Comisiones para ser utilizada en la catalogación, integra la información en video catalogada con los metadatos correspondientes de las diferentes bases de datos de la Cámara, la almacena de forma estructura para su publicación y trata la señal de video en formato H264.

En la parte final de la cadena documental, al Departamento de Edición Oficial le corresponde la incorporación de  los datos referentes a los Diarios de Sesiones y la validación de la información catalogada.

Los votantes dicen...
  1. […] hizo un repaso de recientes mejoras incorporadas a la página web http://www.congreso.es, tales como los contenidos audiovisuales renovados que permiten el acceso directo a una intervención de un parlamentario o a una parte de […]

  2. […] repaso de recientes mejoras incorporadas a la página web http://www.congreso.es, tales como los contenidos audiovisuales renovados que permiten el acceso directo a una intervención de un parlamentario o a una parte de […]

Comparte tu punto de vista

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>