Reimubot×Apricot
Marisabot×Apricotに引き続き、8bitさんが作られたTwitter上にいるReimubotの発言をApricot上の霊夢に喋らせるよう連携させるXSLファイルを作ってみました。
ちなみにApricotでは、キャラクターのXMLファイルをXSL(Extensible Stylesheet Language)の仕組みを使って拡張することが出来ます。今回も、その方法を使ってWeb上のXMLファイルをインポートしてキャラクターに喋らせてみました。
デスクトップマスコット「Apricot」はこちら
アプリコタン.NET (http://www.apricotan.net/)
Reimubotの発言をApricot上の霊夢に喋らせるには、
- Apricot.exeがあるフォルダからCharacters\Reimu\Script.xslを見つける
- Script.xslファイルを下記のXSLファイルと置き換える(エンコーディングはUTF-8)
- Apricotを起動(必要があれば、霊夢にキャラクターを切り替える)
<?xml version="1.0" encoding="utf-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" /> <xsl:template match="/"> <script> <character> <xsl:attribute name="name"> <xsl:value-of select="/script/character/@name" /> </xsl:attribute> <xsl:attribute name="x"> <xsl:value-of select="/script/character/@x" /> </xsl:attribute> <xsl:attribute name="y"> <xsl:value-of select="/script/character/@y" /> </xsl:attribute> <xsl:attribute name="width"> <xsl:value-of select="/script/character/@width" /> </xsl:attribute> <xsl:attribute name="height"> <xsl:value-of select="/script/character/@height" /> </xsl:attribute> <xsl:attribute name="offset-x"> <xsl:value-of select="/script/character/@offset-x" /> </xsl:attribute> <xsl:attribute name="offset-y"> <xsl:value-of select="/script/character/@offset-y" /> </xsl:attribute> <xsl:copy-of select="/script/character/sequence" /> <xsl:for-each select="document('http://twitter.com/statuses/user_timeline/33187277.xml')/statuses/status/text"> <sequence name="Activate"> <message> <xsl:value-of select="." /> </message> <call name="Say" /> </sequence> </xsl:for-each> <xsl:for-each select="document('http://twitter.com/statuses/user_timeline/7247262.xml')/statuses/status/text"> <sequence name="Activate"> <message> <xsl:choose> <xsl:when test="contains(., '[twicco.jp')"> <xsl:value-of select="normalize-space(substring-before(., ' [twicco.jp'))" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="." /> </xsl:otherwise> </xsl:choose> </message> <call name="Say" /> </sequence> </xsl:for-each> </character> </script> </xsl:template> </xsl:stylesheet>