###前提・実現したいこと
twitter streaming api より流れてくるjsonのデータを自分のパソコンの中にjsonファイルとして保存しています。指定したキーワードを含むツイートがされるとそのツイート情報が々jsonファイルに次々に上書きされるという状況です。
その不定期に更新されるjsonファイルをopenframeworksのupdate()にて常に読み込み続けており、jsonファイル内のデータを実行画面に表示させています。ですのでjsonファイルの更新があるたびopenframeworksの実行画面の文章も変化していきます。
ここまでは完成しています。
これからやりたいこととして、jsonファイルが更新され、openframeworks上の実行画面の文章が変化するたびに音を出したい(mysound.play()を実行したい)と思っているのですが、どのようにjsonファイルの更新を検知?すればよいのでしょうか?
C++
1#include "ofApp.h" 2 3 4void ofApp::setup() 5{ 6 ofSetFrameRate(30); 7 std::string file = "twitter.json"; 8 font.loadFont("meiryo.ttc", 15); 9 10 // Now parse the JSON 11 bool parsingSuccessful = result.open(file); 12 13 if (parsingSuccessful) 14 { 15 ofLogNotice("ofApp::setup") << result.getRawString(); 16 17 // now write pretty print 18 if (!result.save("example_output_pretty.json", true)) 19 { 20 ofLogNotice("ofApp::setup") << "example_output_pretty.json written unsuccessfully."; 21 } 22 else 23 { 24 ofLogNotice("ofApp::setup") << "example_output_pretty.json written successfully."; 25 } 26 27 // now write without pretty print 28 if (!result.save("example_output_fast.json", false)) 29 { 30 ofLogNotice("ofApp::setup") << "example_output_pretty.json written unsuccessfully."; 31 } 32 else 33 { 34 ofLogNotice("ofApp::setup") << "example_output_pretty.json written successfully."; 35 } 36 37 } 38 else 39 { 40 ofLogError("ofApp::setup") << "Failed to parse JSON" << endl; 41 } 42 43 mysound.loadSound("decision2.mp3"); 44 mysound.setVolume(10); 45} 46 47void ofApp::update() 48{ 49 std::string file = "twitter.json"; 50 result.open(file); 51} 52 53 54void ofApp::draw() 55{ 56 ofBackground(240); 57 58 //---- 59 ofSetHexColor(212121); 60 std::stringstream ss; 61 font.drawString("@", 5, 20); 62 font.drawString(result["user"]["screen_name"].asString(), 26, 20); 63 font.drawString(result["text"].asString(), 5, 40); 64 ofDrawBitmapString(ss.str(), 10, 14); 65 //---- 66 67 mysound.play(); //ここの実行を何とかしたい 68 69} 70
C++
1#pragma once 2 3 4#include "ofMain.h" 5#include "ofxJSON.h" 6 7 8class ofApp: public ofBaseApp 9{ 10public: 11 void setup(); 12 void draw(); 13 void update(); 14 15 ofxJSONElement result; 16 ofTrueTypeFont font; 17 ofSoundPlayer mysound; 18 19}; 20
###試したこと
C++
1if(result != result){ 2 mysound.Play(); 3}
みたいなことをしてみたり、GetFileTime関数を使用してファイルの更新日時が変化していたら音を出そうみたいなことをやってみたのですがうまくいきませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
C++
openframeworks 0.9.3
使用アドオン ofxjson
windows10 VisualStudio2015
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/09/02 02:20