Какой лучший способ для меня использовать url как: http://foobar.com/foo.torrent и проверить, действительно ли это торрент, а не html-страница или что-то еще смешное. Предложения? Спасибо:)
Проверьте, является ли URL-адрес торрентом в С#.NET.
Ответ 1
Чтобы проверить тип ресурса без его загрузки, используйте запрос HEAD:
WebRequest request= WebRequest.Create("http://foobar.com/foo.torrent");
request.Method= "HEAD";
WebResponse response= request.GetResponse();
if (response.Headers.Get("Content-Type")=="application/x-bittorrent") {
...
Однако тип application/x-bittorrent
может не настроен на некоторых серверах, поэтому вы можете получить application/octet-stream
вместо этого или даже text/plain
, если вам не повезло. Если вам нужно учитывать это, обо всем, что вы могли бы сделать, - это получить файл с обычным GET-запросом и посмотреть, можете ли вы его декодировать.
Формат файла BitTorrent основан на формате "bencode". Вот библиотека .NET, которая утверждает, что обрабатывает ее. Вы можете догадаться о любом файле, который действительный bencode является торрент файлом, но если вы хотите убедиться, что можете посмотреть на его декодирование и проверить свойства info
и announce
.
Ответ 2
Единственный способ узнать, действительно ли это файл торрента, скачать его и проверить, если он торрент файл.
Ответ 3
Вероятно, лучше всего загрузить и проверить его и/или проверить тип содержимого application/x-bittorrent
.
Ответ 4
Прочитайте спецификацию торрент файла, затем напишите приложение С#, чтобы загрузить содержимое URL-адреса и посмотреть, соответствует ли оно правилам в спецификации.
Ответ 5
В дополнение к хорошему ответу bobince, вы также можете взглянуть на monotorrent с открытым исходным кодом С#. Они загружают весь файл .torrent и затем анализируют bencode (cf.: http://anonsvn.mono-project.com/viewvc/trunk/bitsharp/src/MonoTorrent/MonoTorrent.Common/Torrent.cs lines 611ff)
Ответ 6
Я бы использовал библиотеку MonoTorrent. В частности, вы можете использовать статический метод
Torrent.TryLoad(Uri url, string location, out Torrent torrent)
который вернет логическое значение, указывающее, указывает ли параметр url
на действительный файл торрента.
Ответ 7
Если вы хотите изучить некоторые С++, вы можете сделать внешний вызов libtorrent с помощью P/Invoke я am shure имеет способ проверки файлов.