目指せ1級!30代サラリーマンボルダリング日記

都内IT企業で働く30代サラリーマンのクライミング記録

2010年02月

zoomeの動画をタグで検索

最近のゲーム動画はやっぱりzoomeですよね。
画面サイズ大きいし、容量も大きいし、ビットレートも高い。
ニコ動からもだいぶ流れてきてるように思います。
というわけで、zoomeのタグ検索をPHPで。

require_once 'XML/RPC.php';

$arr = array('tagname' => 'ゲーム',
             'offset' => 0,
             'length' => 10
             );
$params  = new XML_RPC_Value(array(
                                   'tagname' => new XML_RPC_Value($arr['tagname'], 'string'),
                                   'offset' => new XML_RPC_Value($arr['offset'], 'i4'),
                                   'length' => new XML_RPC_Value($arr['length'], 'i4'),
                                   ), "struct");

$msg = new XML_RPC_Message('zoome.tagSearch', array($params));
$cli = new XML_RPC_Client('/xmlrpc', 'up.zoome.jp', 80);
$res = $cli->send($msg);

if (!$res->faultCode()) {
  $data = XML_RPC_decode($res->value());
  /* "Total:". $data['count']; */
  foreach($data['list'] as $key => $val) {
    $zoome = array(
                   'zoomeid' => $val['zoomeid'],
                   'diaryid' => $val['diaryid'],
                   'title' => $val['title'],
                   'url' => $val['diaryurl'],
                   'body' => $val['body'],
                   );
  }
} else {
  exit('CODE:'.$res->faultCode(). ':'. $res->faultString());
}


欲をいえばソートがほしいですね。
デフォルトで新着順だと思うんですけど、再生数のソートくらいはほしいかなー。
他にも投稿とかのメソッドがあるので公式ドキュメントを参照してみてください。

参考:zoome API(XML-RPC)ドキュメント
    このエントリーをはてなブックマークに追加

OpenIDでログインして、ニックネームを登録してもらうような画面でのバリデートメモ。

usersテーブルのnicknameカラムにバリデートをかけたい。


チェック項目は3つ。

  • ユニークなニックネームか
  • 文字数制限内か
  • 空白のみではないか

空白のみの入力をfunction notSpaceでチェック。

APP/model/user.php

<?php
class User extends AppModel {
    var $name = 'User';
    var $validate = array(
        'nickname' => array(
                            'notSpace' => array(
                                                'rule' => array('notSpace'),
                                                'message' => '空白のみは登録できません。'
                                                ),
                            'between' => array(
                                               'rule' => array('between', 1, 45),
                                               'message' => '1文字以上入力してください。(全角15文字まで)'
                                               ),
                            'isUnique' => array(
                                                'rule' => 'isUnique',
                                                'message' => 'すでに登録されています。'
                                                ),
                            ),
        );
    function notSpace($field=array()) {
      foreach($field as $name => $value){
        if (preg_match("/^( | )+$/", $value)) {
          return false;
        } else {
          return true;
        }
      }
    }
}
?>
    このエントリーをはてなブックマークに追加

前回(アメブロのAtomAPIが倒せない)の記事から数カ月。。
アクセス解析見てもやっぱり同じように困ってる人がいるみたい。

というわけで、久しぶりに調べ直した。
前回のソースと違う部分をピックアップ。
やっぱりWSSE認証がポイントでした。これさえ通ればあとはすんなり。


$nonce = sha1(md5(time()));


ランダム文字生成だから何でもいいとは思うけど。


$pass_digest = base64_encode(pack('H*', sha1($nonce.$created.strtolower(md5($password)))));


ここが全然逆だった。
大文字にするんじゃなくて小文字にする。


あとはgetで記事情報を取得し、その結果からpostするURLをとって記事を投げるみたい。

今回使用したソース。
続きを読む
    このエントリーをはてなブックマークに追加

このページのトップヘ