тогда вам просто нужно обновить базу данных нет ?
UPDATE
[VideosTable]
SET
video_url =
SUBSTRING(
video_url,
CHARINDEX('v=', video_url) + 2,
CHARINDEX('&', video_url, CHARINDEX('v=', video_url)) -
(CHARINDEX('v=', video_url) + 2)
)
WHERE
video_url LIKE '%youtube.com%';
Тогда вы можете просто использовать идентификатор видео из базы данных ...
если вы загружаете идентификатор видео из ссылки на дыру, используйте объект URI
вместо
Uri youtube = new Uri("http://www.youtube.com/watch?v=72xSxQIRelc&feature=youtube_gdata");
string videoId = HttpUtility.ParseQueryString(youtube.Query)["v"];
Обновление Silverlight
У Silveright нет двух вещей: поддержка ParseQueryString
части System.Web.HttpUtility
и System.Collections.Specialized.NameValueCollection
Так почему бы не добавить эту функциональность самостоятельно?
Поскольку HttpUtility
уже является static
объектом, вы не можете расширить его, но вы можете легко создать себе что-то новое:
public static class MyHttpUtilities
{
public static System.Collections.Generic.Dictionary<string, string>
ParseQueryString(this string queryString)
{
System.Collections.Generic.Dictionary<string, string> r =
new Dictionary<string, string>();
// remove extra noise
queryString = queryString.TrimStart('?').Replace("amp;", "");
// split up and fill up Dictionary
foreach (string s in queryString.Split('&'))
{
if (s.Contains('='))
{
string[] par = s.Split('=');
r.Add(par[0], par[1]);
}
}
return r;
}
}
и затем используйте:
string videoId = MyHttpUtilities.ParseQueryString(youtube.Query)["v"],
feature = MyHttpUtilities.ParseQueryString(youtube.Query)["feature"];