@@ -160,7 +160,7 @@ private async Task<string> GetVqd(string keywords)
160160 stream . Read ( content , 0 , content . Length ) ;
161161 return Utils . ExtractVqd ( content , keywords ) ;
162162 }
163-
163+
164164 /// <summary>
165165 /// DuckDuckGo text search. Query params: https://duckduckgo.com/params.
166166 /// </summary>
@@ -416,7 +416,7 @@ public async Task<IEnumerable<ImageSearchItem>> ImagesAsync(
416416 /// <param name="licenseVideos">creativeCommon, youtube. Defaults to null.</param>
417417 /// <param name="maxResults">Max number of results. If null, returns results only from the first response. Defaults to null.</param>
418418 /// <returns>List of video search results.</returns>
419- public async Task < List < Dictionary < string , string > > > VideosAsync (
419+ public async Task < List < VideoSearchItem > > VideosAsync (
420420 string keywords ,
421421 string region = "wt-wt" ,
422422 string safesearch = "moderate" ,
@@ -443,25 +443,15 @@ public async Task<List<Dictionary<string, string>>> VideosAsync(
443443 } ;
444444
445445 var cache = new HashSet < string > ( ) ;
446- var results = new List < Dictionary < string , string > > ( ) ;
446+ var results = new List < VideoSearchItem > ( ) ;
447447
448448 for ( int i = 0 ; i < 8 ; i ++ )
449449 {
450450 using var resp = await GetUrl ( "GET" , "https://duckduckgo.com/v.js" , paramsDict : payload ) ;
451451 var jsonStr = await resp . Content . ReadAsStringAsync ( ) ;
452452 var respJson = JsonSerializer . Deserialize < Dictionary < string , object > > ( jsonStr ) ;
453- var pageData = JsonSerializer . Deserialize < List < Dictionary < string , string > > > ( respJson [ "results" ] . ToString ( ) ) ;
454-
455- foreach ( var row in pageData )
456- {
457- if ( ! cache . Contains ( row [ "content" ] ) )
458- {
459- cache . Add ( row [ "content" ] ) ;
460- results . Add ( row ) ;
461- if ( maxResults . HasValue && results . Count >= maxResults . Value ) return results ;
462- }
463- }
464-
453+ var pageData = JsonSerializer . Deserialize < List < VideoSearchItem > > ( respJson [ "results" ] . ToString ( ) ) ;
454+ results . AddRange ( pageData ) ;
465455 string next = respJson . ContainsKey ( "next" ) ? respJson [ "next" ] . ToString ( ) : null ;
466456 if ( string . IsNullOrEmpty ( next ) || ! maxResults . HasValue ) return results ;
467457 payload [ "s" ] = next . Split ( "s=" ) [ 1 ] . Split ( "&" ) [ 0 ] ;
0 commit comments