diary/Kojima/2013-01-14
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[diary/Kojima]]
・smtubeの複数ページ検索
以前、[[こっち:http://plamo.linet.gr.jp/wiki/index.php?%C...
smtubeで日本語をキーワードに検索すると、2ページ目以降が表...
現実逃避で少し追いかけてみた。
Qt用のコードのデバッグをするのは久しぶりだったので、
あちこちにqDebug()を散りばめながら試行錯誤してみた感じ、...
YouTubeが返してくるキーワードを含めたURLの日本語の部分が...
%encodeされているのを、smtubeから送り直す際に再度 %encode...
一応、smtubeの側でも、ytdataapi.cpp の中で、
for(int i = 0; i< links.count(); ++i)
{
if(links.item(i).toElement().attribute("rel") == ...
{
formattedReply.nextUrl = unescape(links.item(...
}
}
みたいな処理はあって、YouTubeから帰ってくるデータの、
次のページへのURLはunescapeしているようなんだけど、そのun...
QString YTDataAPI::unescape(QString html)
{
html.replace("&", "&");
html.replace("<", "<");
return html.replace(">", ">");
}
になっていて、非ASCIIな文字列が%encodeされてしまった場合...
どうするのがいいのかはよく分かってないのだけど、
QUrl::fromPercentEncoding()というのを通せば %encoding は...
一応帰ってきた文字列中に"%"があれば QUrl::fromPercentEnco...
元のunescape処理を通すようにしてみた。
--- smtube-1.5/src/ytdataapi.cpp 2012-07-06 13:28:51.000...
+++ build/src/ytdataapi.cpp 2013-01-14 17:45:07.00000000...
@@ -129,6 +134,12 @@ void YTDataAPI::reset()
QString YTDataAPI::unescape(QString html)
+ if (html.indexOf("%") > 0) {
+ QString decode_url;
+ decode_url = QUrl::fromPercentEncoding(html.toAscii());
+ qDebug() << decode_url ;
+ html = decode_url;
+ }
html.replace("&", "&");
html.replace("<", "<");
return html.replace(">", ">");
一応、手もとではこれぐらいの修正で、
2ページ目以降もたぐれるようになった感じ。
このパッチをあてた64ビット用のsmtubeを[[Plamo-test以下に:...
興味ある人は試してみてください。
- 確認してないけど、このあたり、UTF8なら%encodeされずに通...
- Pythonとかもそうだけど、最近の言語だと、自分のやりたい...
#comment
終了行:
[[diary/Kojima]]
・smtubeの複数ページ検索
以前、[[こっち:http://plamo.linet.gr.jp/wiki/index.php?%C...
smtubeで日本語をキーワードに検索すると、2ページ目以降が表...
現実逃避で少し追いかけてみた。
Qt用のコードのデバッグをするのは久しぶりだったので、
あちこちにqDebug()を散りばめながら試行錯誤してみた感じ、...
YouTubeが返してくるキーワードを含めたURLの日本語の部分が...
%encodeされているのを、smtubeから送り直す際に再度 %encode...
一応、smtubeの側でも、ytdataapi.cpp の中で、
for(int i = 0; i< links.count(); ++i)
{
if(links.item(i).toElement().attribute("rel") == ...
{
formattedReply.nextUrl = unescape(links.item(...
}
}
みたいな処理はあって、YouTubeから帰ってくるデータの、
次のページへのURLはunescapeしているようなんだけど、そのun...
QString YTDataAPI::unescape(QString html)
{
html.replace("&", "&");
html.replace("<", "<");
return html.replace(">", ">");
}
になっていて、非ASCIIな文字列が%encodeされてしまった場合...
どうするのがいいのかはよく分かってないのだけど、
QUrl::fromPercentEncoding()というのを通せば %encoding は...
一応帰ってきた文字列中に"%"があれば QUrl::fromPercentEnco...
元のunescape処理を通すようにしてみた。
--- smtube-1.5/src/ytdataapi.cpp 2012-07-06 13:28:51.000...
+++ build/src/ytdataapi.cpp 2013-01-14 17:45:07.00000000...
@@ -129,6 +134,12 @@ void YTDataAPI::reset()
QString YTDataAPI::unescape(QString html)
+ if (html.indexOf("%") > 0) {
+ QString decode_url;
+ decode_url = QUrl::fromPercentEncoding(html.toAscii());
+ qDebug() << decode_url ;
+ html = decode_url;
+ }
html.replace("&", "&");
html.replace("<", "<");
return html.replace(">", ">");
一応、手もとではこれぐらいの修正で、
2ページ目以降もたぐれるようになった感じ。
このパッチをあてた64ビット用のsmtubeを[[Plamo-test以下に:...
興味ある人は試してみてください。
- 確認してないけど、このあたり、UTF8なら%encodeされずに通...
- Pythonとかもそうだけど、最近の言語だと、自分のやりたい...
#comment
ページ名: