Skip to content

Commit

Permalink
Playlist queue limit has been raised to 500. Closes #286
Browse files Browse the repository at this point in the history
  • Loading branch information
Master Kwoth committed May 9, 2016
1 parent bb19551 commit 28af70a
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 17 deletions.
33 changes: 23 additions & 10 deletions NadekoBot/Classes/SearchHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -197,24 +197,37 @@ public static async Task<string> GetPlaylistIdByKeyword(string query)
return data.items.Length > 0 ? data.items[0].id.playlistId.ToString() : null;
}

public static async Task<IEnumerable<string>> GetVideoIDs(string playlist, int number = 50)
public static async Task<IList<string>> GetVideoIDs(string playlist, int number = 50)
{
if (string.IsNullOrWhiteSpace(NadekoBot.Creds.GoogleAPIKey))
{
throw new ArgumentNullException(nameof(playlist));
}
if (number < 1 || number > 100)
if (number < 1)
throw new ArgumentOutOfRangeException();
var link =
$"https://www.googleapis.com/youtube/v3/playlistItems?part=contentDetails" +
$"&maxResults={number}" +
$"&playlistId={playlist}" +
$"&key={NadekoBot.Creds.GoogleAPIKey}";

var response = await GetResponseStringAsync(link).ConfigureAwait(false);
var obj = await Task.Run(() => JObject.Parse(response)).ConfigureAwait(false);
string nextPageToken = null;

List<string> toReturn = new List<string>();

return obj["items"].Select(item => "http://www.youtube.com/watch?v=" + item["contentDetails"]["videoId"]);
do
{
var toGet = number > 50 ? 50 : number;
number -= toGet;
var link =
$"https://www.googleapis.com/youtube/v3/playlistItems?part=contentDetails" +
$"&maxResults={toGet}" +
$"&playlistId={playlist}" +
$"&key={NadekoBot.Creds.GoogleAPIKey}";
if (!string.IsNullOrWhiteSpace(nextPageToken))
link += $"&pageToken={nextPageToken}";
var response = await GetResponseStringAsync(link).ConfigureAwait(false);
var data = await Task.Run(() => JsonConvert.DeserializeObject<PlaylistItemsSearch>(response)).ConfigureAwait(false);
nextPageToken = data.nextPageToken;
toReturn.AddRange(data.items.Select(i => i.contentDetails.videoId));
} while (number > 0 && !string.IsNullOrWhiteSpace(nextPageToken));

return toReturn;
}


Expand Down
9 changes: 7 additions & 2 deletions NadekoBot/Modules/Music/MusicModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -282,10 +282,15 @@ await e.Channel.SendMessage($"🎵`Now Playing` {currentSong.PrettyName} " +
await e.Channel.SendMessage("No search results for that query.");
return;
}
var ids = await SearchHelper.GetVideoIDs(plId, 50).ConfigureAwait(false);
var ids = await SearchHelper.GetVideoIDs(plId, 500).ConfigureAwait(false);
if (ids == null || ids.Count == 0)
{
await e.Channel.SendMessage($"🎵`Failed to find any songs.`");
return;
}
//todo TEMPORARY SOLUTION, USE RESOLVE QUEUE IN THE FUTURE
var idArray = ids as string[] ?? ids.ToArray();
var count = idArray.Count();
var count = idArray.Length;
var msg =
await e.Channel.SendMessage($"🎵 `Attempting to queue {count} songs".SnPl(count) + "...`").ConfigureAwait(false);
foreach (var id in idArray)
Expand Down
10 changes: 5 additions & 5 deletions NadekoBot/_Models/JSONModels/Configuration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,14 @@ public class Configuration
"Calling %target%"
} },
{"%mention% disguise", new List<string>() {
"https://cdn.discordapp.com/attachments/140007341880901632/156721710458994690/Cc5mixjUYAADgBs.jpg",
"https://cdn.discordapp.com/attachments/140007341880901632/156721715831898113/hqdefault.jpg",
"https://cdn.discordapp.com/attachments/140007341880901632/156721724430352385/okawari_01_haruka_weird_mask.jpg",
"https://cdn.discordapp.com/attachments/140007341880901632/156721728763068417/mustache-best-girl.png"
"https://cdn.discordapp.com/attachments/140007341880901632/156721710458994690/Cc5mixjUYAADgBs.jpg",
"https://cdn.discordapp.com/attachments/140007341880901632/156721715831898113/hqdefault.jpg",
"https://cdn.discordapp.com/attachments/140007341880901632/156721724430352385/okawari_01_haruka_weird_mask.jpg",
"https://cdn.discordapp.com/attachments/140007341880901632/156721728763068417/mustache-best-girl.png"

} }
};

public List<string> RotatingStatuses { get; set; } = new List<string>();
public CommandPrefixesModel CommandPrefixes { get; set; } = new CommandPrefixesModel();
public HashSet<ulong> ServerBlacklist { get; set; } = new HashSet<ulong>();
Expand Down
9 changes: 9 additions & 0 deletions NadekoBot/_Models/JSONModels/_JSONModels.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,15 @@ public class YtVideoId
public string kind { get; set; }
public string videoId { get; set; }
}
public class PlaylistItemsSearch
{
public string nextPageToken { get; set; }
public PlaylistItem[] items { get; set; }
}
public class PlaylistItem
{
public YtVideoId contentDetails { get; set; }
}

#region wikpedia example
// {
Expand Down

0 comments on commit 28af70a

Please sign in to comment.