HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0322
初心者RSSでの画像取得について。4解決


初心者

リンク

2011/3/22(Tue) 18:16:23|NO.37803

初めまして、今回初めて質問させていただきます。

今回 RSSで壁紙を配布しているサイト様から
RSSから画像を取得⇒背景に設定
という処理を考えています。

RSSの取得はHSPのサンプルを見ればわかりますが画像のURL取得まではできません。
どうすればいいのでしょうか?
よろしくお願いいたします。
------
取得しようとしたサイト様
Save the screen:http://savethescreen.net/
RSS :http://feeds.feedburner.com/SaveTheScreen



この記事に返信する


najac

リンク

2011/3/22(Tue) 20:48:29|NO.37809

RSSを取得するときに使ったXMLDOMでRSSのXMLドキュメントの要素をノードをたどって取得していくか
ドキュメントをテキストで取得してinstrやstrtrimなどでURI部分を切り出すなどすれば。



初心者

リンク

2011/3/22(Tue) 22:08:12|NO.37814

やはり それしかないのでしょうか・・・
何かそれだと効率が悪いのかなって思うのですが
そんなことはないのでしょうか?



inovia

リンク

2011/3/22(Tue) 22:45:04|NO.37816

サンプルを適当に改造してみました。


#ifndef __mod_rss2__ #define __mod_rss2__ #module "rssmod2" #deffunc rssload2 array _v1, array _v2, array _v3, str _p1, int _p2 ; ; XMLパーサー(MSXML)を使用してRSSを読み込む ; rssload 変数1,変数2,パス,個数 ; ; 変数1,2 = 文字列型配列変数として結果が代入されます ; (変数1はRSSの内容、変数2はリンク先) ; パス = URLまたはファイルパスを指定します ; 個数 = 読み込むRSSフィールドの数を指定します ; (0または省略時は5個になります) ; newcom oDom,"Microsoft.XMLDOM" oDom("async")="FALSE" ; 同期読み込みを行う oDom->"load" _p1 oRoot = oDom("documentElement") if varuse(oRoot)=0 : return 1 rsstag = getpath(""+oRoot("tagName"),16) if rsstag="rdf:rdf" : goto *rsspick if rsstag="rss" : goto *rsspick delcom oRoot delcom oDom return *rsspick maxnum=_p2 if maxnum<=0 : maxnum=5 comres elm_ch oDom->"getElementsByTagName" "title" comres elm_link oDom->"getElementsByTagName" "link" comres elm_des oDom->"getElementsByTagName" "description" max=elm_ch("length") if max>maxnum : max=maxnum sdim _v1, 64, max sdim _v2, 64, max sdim _v3, 512, max repeat max i=cnt node = elm_ch("item",i) node2 = node("firstChild") _v1.i = node2("nodeValue") node = elm_link("item",i) node2 = node("firstChild") _v2.i = node2("nodeValue") node = elm_des("item",i) node2 = node("firstChild") _v3.i = node2("nodeValue") loop delcom node delcom node2 delcom elm_ch delcom elm_link delcom elm_des delcom oRoot delcom oDom return 0 #defcfunc GetImgPath str _buf buf = _buf _a = instr(buf,0,"<img src=") _b = instr(buf,_a+strlen("<img src="),">") if _a = -1 | _b = -1 : return "" return strmid(buf,_a+strlen("<img src="),_b) #global #endif // モジュール終了 ; RSSリーダーサンプル ; url="http://feeds.feedburner.com/SaveTheScreen" rssload2 tt, link, des, url, 6 ; if stat=1 : dialog "取得に失敗しました。" : end if stat=2 : dialog "RSSではありません。" : end ; mes "RSSの内容を表示します。" mes url mes "----------------------------------------------------------------" foreach tt mes ""+cnt+":"+tt(cnt) mes " ("+link(cnt)+")" ;mes " ("+des(cnt)+")" mes " ("+GetImgPath(des(cnt))+")" loop stop



初心者

リンク

2011/3/22(Tue) 23:20:00|NO.37817

ありがとうございます!

これで、無事ソフトを完成させることができそうです。

また、このソースがどのようになっているかよく理解し
今後の開発に役立たせていただきます!



ONION software Copyright 1997-2023(c) All rights reserved.