5

ユーザーが入力した特定のURLを取得して、そのURLが画像を指しているのかビデオを指しているのかを判断しようとしています。

ユースケースの例:

ユーザーがYouTubeビデオのURLを貼り付けると、保存時にページに埋め込まれたYouTubeプレーヤーが自動的に表示されます。

ユーザーがFlickrに画像のURLを投稿すると、保存時に、ページにFlickr画像の小さいバージョンが自動的に表示されます。

4

6 に答える 6

9

URLを取得して、応答からContent-typeを確認できます。

ApacheからHTTPクライアントを使用できます。これは、URLのコンテンツをフェッチするのに役立ち、リダイレクトをナビゲートするために使用できます。たとえば、次のものをフェッチしてみてください。

http://www.youtube.com/watch?v=d4LkTstvUL4

ビデオを含むHTMLを返します。しばらくすると、ビデオがここにあることがわかります。

http://www.youtube.com/v/d4LkTstvUL4

ただし、そのページを取得すると、リダイレクトが発生します。

HTTP/1.0 302 Redirect
Date: Fri, 23 Jan 2009 02:25:37 GMT
Content-Type: text/plain
Expires: Fri, 23 Jan 2009 02:25:37 GMT
Cache-Control: no-cache
Server: Apache
X-Content-Type-Options: nosniff
Set-Cookie: VISITOR_INFO1_LIVE=sQc75zc-QSU; path=/; domain=.youtube.com; expires=
Set-Cookie: VISITOR_INFO1_LIVE=sQc75zc-QSU; path=/; domain=.youtube.com; expires=
Location: http://www.youtube.com/swf/l.swf?swf=http%3A//s.ytimg.com/yt/swf/cps-vf
L4&rel=1&eurl=&iurl=http%3A//i1.ytimg.com/vi/d4LkTstvUL4/hqdefault.jpg&sk=Z_TM3JF
e_get_video_info=1&load_modules=1

したがって、最終的なコンテンツが得られるまで、URLを取得して調べる必要があります。

このセクションでは、リダイレクトの処理方法について説明します。

于 2009-01-23T02:36:55.120 に答える
6

最初にドキュメント全体をダウンロードしなくても返される HTTP ヘッダーを調べることができるように、HTTP HEAD 要求を発行します。「curl」を使用して Linux で非プログラムのケースを表示する:

$ curl --head http://stackoverflow.com/Content/Img/stackoverflow-logo-250.png
HTTP/1.1 200 OK
キャッシュ制御: max-age=28800
コンテンツの長さ: 3428
コンテンツ タイプ: 画像/png
最終更新日: 2009 年 1 月 16 日 (金) 09:35:30 GMT
Accept-Ranges: バイト
ETag: "98f590c5bd77c91:0"
サーバー: Microsoft-IIS/7.0
日付: 2009 年 1 月 23 日 (金) 03:55:39 GMT

Content-Type から、これが画像であることがわかります。Javaから Apache の HTTPClientを使用して、HTTP ヘッド要求を実行できます。

確実にコンテンツをダウンロードしたい場合は、HTTP GET を (Httpclient を使用して) 発行し、同じ HTTP ヘッダーを使用してコンテンツ タイプを判別します。

于 2009-01-23T03:58:52.850 に答える
3

リンクをクリックして、コンテンツタイプヘッダーを調べますか?結果がHTMLページの場合、ページ上で最大の画像または埋め込まれたフラッシュファイルを探して、それを表示することを選択できますか?

于 2009-01-23T02:20:20.050 に答える
0

Fast video indexer は、ビデオのリストからビデオ フレームを自動的にキャプチャし、インデックス Web ページ、インデックス画像、または画像のリストを作成できるビデオ キャプチャ ソフトウェアです。

于 2009-08-03T07:26:47.110 に答える