bit sized

Just another WordPress.com weblog

tip’ タグのついている投稿

google reader – スター付きアイテムのRSSフィード

コメントなし

google readerはすごい。

検索機能、ショートカットや、AJAXによるスムーズでシンプルなUI。

でも、自分が読んでいるRSSフィードのフィードも出力してくれるのは結構隠れたいい機能だと思う。これがどういう事を意味するかというと、、、

  • Aさんが、毎日100個のニュースやブログのフィードを見ているとする。Aさんは自分の観点で「これは!!」と思うエントリ(10個くらい)にスターを付ける。
  • Aさんの友人で、Aさん程ネットのヘビーユーザーではないBさんは、Aさんの「スター付アイテム」のRSSフィードを購読する事で、Aさんが重要だと思ったことを10分の1の労力で発見できる。しかも「Aさんの目きき力」も借りることになる。

フィードの設定
他人にフィードを公開するには、フィードやタグについて個別に共有設定で「公開」と設定しなければ、ならない(FeedのURLは共有設定をしてなくても分かるが、未公開だとユーザーIDとPWで認証が必要になる)。

やり方は簡単。

  1. [設定] リンクをクリックします。
  2. [タグ] をクリックします。
  3. チェックボックスを使用して、共有するタグを選択します。 代わりにスター付きアイテムを共有することもできます。
  4. [共有を変更] メニューから [公開] を選択します。

google reader - 共有�定

エントリごとに、共有するという手もあるがちょっと手間な気がする。こちらはフッター部分の「共有」をクリックするだけ。後は、共有アイテムのフィードURLを登録すればよい。

共有 - エントリごと

↓下記のような記事を見ると、Webの広がりというか可能性を感じずにはいられない…

 小林氏はこれらのWebユーザーをさらに、さまざまなWebコンテンツを無償で創造する「クリエータ」、Web上の情報を関連付ける「エディタ」、Web上の情報の価値を判定する「バリュア」の3種類に分類。閲覧のみのレーシーバーを3284万人、クリエーターを783万人、エディタを 1476万人、バリュアを951万人と推測。さらにそれらすべてを行う人々をCEVと定義して234万人と推測し、その中でも毎日活動している人が63万人いるとした。

NRIの調査によると、CEVが1日にWebに費やす時間は3.9時間なので、そのうちの半分をCEV活動に費やしているとすると、1日2時間×365日×63万人で約4億時間になり、東京都の最低時給739円で換算すると年間3400億円規模にもなると試算した。

エレクトロニクス市場における日本の地位は大きく低下
BtoCのEC市場は2012年に10兆円規模に~NRIがトレンド予測
http://www.atmarkit.co.jp/news/200712/19/nri.html

投稿者: t4ku

12月 29, 2007 1:32 pm

Technology への投稿

タグ: , ,

Podcast × 速聴 – Podcastを速聴してみる(新刊JP)

コメントなし

Podcast に登録している番組の数が増えてきたというのと、以前ちょっと興味を引かれた速聴なるものを試したいと思い、「じゃあ、Podcastを速聴してみよう」と企ててみました。

速聴については、簡単に言えば

「普通に話しているスピードの3-4倍以上で話を聞くと、普段の言語処理を行う際には使用されない脳の部分が活性化され、記憶力などの脳力向上に役立つ」

というものです。

どうやって、Podcastを3-4倍速で聞こうか?という部分ですが

  1. Podcast再生時にipodの再生速度を変更する機能を使用する
  2. Podcastに登録される前に、mp3の音声データを編集しておく(3-4倍速に変換しておく)

という2種類の方法が考えられると思いますが、1の方法では

  • せいぜい20%くらいの速度変換しかできない
  • オーディオブックしか再生速度を変えられない

という事で、自宅にある余っているLinux+ Apacheを使用して自分用のフィードに変換(mp3 + rssを編集)して、それをPodcastに登録する事にしました(下図)

最近個人的によく聞く、新刊JPで配信している新刊のダイジェスト(火木土更新)での例。

  1. rssファイルを新刊JPのサイトから取得
  2. 1のファイルをparseして、各エントリのmp3ファイルをダウンロードする。
  3. ダウンロードしたmp3を3-4倍速に変換。
  4. 変換済みのmp3ファイルのパスを、1のrssファイルでの各エントリの ファイルとして書き換える
  5. 変換済みのmp3ファイル+編集済みのrssファイルをapacheのディレクトリに配置する。
  6. iTuneから、5のurlを指定してpodcastを登録する

RapidPodcast2

Linuxマシンの方で必要なものは下記ですが、sox以外はデフォルトで使用できるのではないでしょうか?

  • ruby
    • 本体
    • ライブラリ
      • rexml
      • open-uri
  • Linuxコマンド
    • wget
    • sox (mp3編集ツール)

処理としては、上記のツールをつなぎ合わせているだけのようなものなので、
シェルでもできとおもいますが、勉強も兼ねてRubyで書いてみました。

あとは、更新日にあわせてCronに登録しておけばよいでしょう

#!/usr/bin/ruby

require 'open-uri'
require 'rexml/document'

# global variables

$feed_org = "http://www.sinkan.jp/rss.xml"       #新刊JPダイジェストのRSS

$data_dir = "/var/www/xxx/xxx/"                  #Linuxのhttpdディレクトリ

$data_dir_url = "htttp://hostname/xxx/xxx/"      #↑のurl

$username = "username"                           #新刊JPのユーザー名(メールアドレス)

$password = "password"                           #パスワード


class Feed
  def initialize(feed_path)
    @feed_path = feed_path
    @rss_file_name = @feed_path.split(/\//)[-1]

    @feed_local = $data_dir + @rss_file_name
    doc = REXML::Document.new(open(@feed_path).read)
    @rss_root = doc.root
    @feed_items = Array.new
    @rss_root.elements.to_a("/rss/channel/item").each { |i|
    @feed_items.push( FeedItem.new(i))
  }
  end

  def comp_feed_entry(org_idx,stretch_rate)
    @feed_items[org_idx].stretch_rate = stretch_rate
    @feed_items[org_idx].download_mp3($username,$password)
    @feed_items[org_idx].time_stretch
  end

  def comp_all(stretch_rate)
    for i in 0..@feed_items.size - 1
      comp_feed_entry(i,stretch_rate)
    end
    @rss_root.elements["/rss/channel/title"].text = "[" + stretch_rate.to_s + "

]" +  @rss_root.elements["/rss/channel/title"].text + "_"
  end

  def save_feed
    local_doc = File.open(@feed_local,"w")
    @rss_root.write  local_doc
  end

end

class FeedItem
  def initialize(rss_node,stretch_rate = "")
    @rss_node = rss_node
    @stretch_rate = stretch_rate
    # rss node mapping

    @title = @rss_node.elements['title']
    @mp3_path = @rss_node.elements['enclosure'].attributes['url']
    @mp3_name = @mp3_path.split(/\//)[-1]
  end

  def time_stretch
    puts @stretch_rate
    stretched_mp3_name = @mp3_name.sub(/(.+?)\.(.+)/) {|m|  $1 + "_" + @stretch_
rate.to_s + "." + $2 }
    stretched_mp3_path = $data_dir + stretched_mp3_name
    command_line ="sox " + @mp3_path + " " +stretched_mp3_path +  " stretch " + @stretch_rate.to_s
    puts command_line
    system(command_line)
    @title.text =  "[" + @stretch_rate.to_s + "]" +  @title.text
    @rss_node.elements['enclosure'].attributes['url'] = $data_dir_url + stretche
d_mp3_name
  end

  def download_mp3(un = "",pw = "")
    if File.exist?($data_dir + @mp3_name) then
      File.unlink($data_dir + @mp3_name)
    end
    if un != "" || pw != "" then
      command_line = "wget -P " + $data_dir + " --user=" + un + " --password="
+ pw + " " +  @mp3_path
    else
      command_line = "wget -P " + $data_dir + @mp3_path
    end
    system(command_line)
    @mp3_path = $data_dir + @mp3_name
  end

  attr_accessor :rss_node
  attr_accessor :title
  attr_accessor :stretch_rate
end

fd = Feed.new($feed_org)
fd.comp_all(0.3)
fd.save_feed

投稿者: t4ku

9月 28, 2007 12:02 am

Programming, Uncategorized への投稿

タグ: , ,