pianod2
multisource multiuser scriptable networked music player
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
Pandora Namespace Reference

Pandora source, player and related datatype specializations. More...

Namespaces

 Key
 

Classes

class  Advert
 
class  AdvertPlayedNotification
 
class  Artist
 Class for Pandora artists. Constructed from annotations. More...
 
class  ArtistSeed
 A artist contructed from station seed information. More...
 
class  ArtistSuggestion
 An artist contructed from search results. More...
 
class  AuthorizationRequest
 Pandora login request. More...
 
class  Communication
 Pandora communication class. More...
 
struct  ConnectionParameters
 Pandora connection and source settings. More...
 
class  GenreSeed
 A class for Pandora genre seeds. More...
 
class  GenreSuggestion
 A genre constructed from a suggestion. More...
 
struct  JSONProtocolParameters
 
class  Library
 
class  MixEverythingStation
 Class representing a mix of all of a user's Pandora stations. More...
 
class  Notification
 Pandora request class. A request whose response is empty/unimportant. More...
 
class  PartnerLoginRequest
 
class  PlayableSong
 Playable song: a song with playback information. More...
 
class  QuickMixStation
 Class representing the Pandora quick mix station. More...
 
class  Request
 Pandora request class. More...
 
class  RequestAddFeedback
 Pandora message: Provide feedback for a song that has played on a station. More...
 
class  RequestAddStationSeed
 Pandora message: Add or remove station seeds. More...
 
class  RequestAddTiredSong
 Pandora message: Provide feedback for a song on a station. More...
 
class  RequestCreateStation
 Pandora message: create a station. More...
 
class  RequestDeleteFeedback
 Pandora message: Remove feedback for a song on a station. More...
 
class  RequestGenreStationList
 Pandora message: Retrieve station list. More...
 
class  RequestQueueTracks
 Pandora message: Retrieve list of music to play from a station. More...
 
class  RequestRemoveStation
 Pandora message: delete a station. More...
 
class  RequestRemoveStationSeed
 Pandora message: Add or remove station seeds. More...
 
class  RequestRenameStation
 Pandora message: rename a station. More...
 
class  RequestStationDetails
 Pandora message: Retrieve station seeds. More...
 
class  RequestStationList
 Pandora message: Retrieve station list. More...
 
class  RequestStationListChecksum
 Pandora message: Retrieve station list. More...
 
class  RequestTransformStation
 Pandora message: transform a shared station into a personal station. More...
 
class  RequestWithNoData
 Pandora request class. A request whose response is empty/unimportant. More...
 
class  RetrieveAdvert
 
class  SearchRequest
 
class  SetQuickMixStations
 Pandora message: set quickmix stations. More...
 
class  SkipTracker
 A class to manage Pandora skips. More...
 
class  Song
 Class for Pandora songs. Constructed from annotations. More...
 
class  SongRating
 A song that contains rating information. More...
 
class  SongSeed
 A song contructed from station seed information. More...
 
class  SongSuggestion
 A song constructed from a suggestion. More...
 
class  Source
 
class  Station
 
class  StationDefinitionDetails
 
class  StationLookup
 Station lookup. More...
 
class  UserFeatures
 

Typedefs

using StationList = RetainedList< Station * >
 

Enumerations

enum  Status {
  Status::Ok, Status::CorruptMessage, Status::MessageFormatUnknown, Status::AllocationError,
  Status::InternalError, Status::CommunicationError, Status::TooFrequentErrors, Status::BadRequest = 400,
  Status::Unauthorized = 401, Status::StreamingViolation = 429, Status::BadGateway = 502, Status::PandoraError0 = 999,
  Status::PandoraReadOnlyMode = 1000, Status::InvalidAuthToken = 1001, Status::InvalidPandoraCredentials = 1002, Status::PandoraSubscriptionExpired = 1003,
  Status::UserNotAuthorized = 1004, Status::StationLimitReached = 1005, Status::NoSuchStation = 1006, Status::SharedStationNotMutable = 1008,
  Status::DeviceNotAllowed = 1009, Status::PartnerNotAuthorized = 1010, Status::InvalidUsername = 1011, Status::InvalidPassword = 1012,
  Status::PlaylistRequestsExceeded = 1039
}
 Communication completion statuses. More...
 
enum  RequestOption { RequestOption::NONE = 0, RequestOption::DEBUG = 1, RequestOption::TLS = 2, RequestOption::UNENCRYPTED = 4 }
 
enum  ProtocolNature {
  ProtocolNature::AUTOMATIC, ProtocolNature::STANDARD, ProtocolNature::PANDORAPLUS, ProtocolNature::PANDORAPREMIUM,
  ProtocolNature::CUSTOM
}
 

Functions

const std::string status_strerror (Status status)
 Return a string corresponding to a Pandora communication status. More...
 
static constexpr RequestOption operator& (const RequestOption a, const RequestOption b)
 
static constexpr RequestOption operator| (const RequestOption a, const RequestOption b)
 
static Rating rounded_rating (const Rating rating)
 Round the value to Pandora's thumbs. More...
 
std::string pandora_to_music_id (const std::string &musicId)
 

Variables

static const std::unordered_map< Status, std::string > pandora_errors
 
static const int MinimumCacheMargin = 100
 
const LookupTable< ProtocolNatureProtocolNatureLookup ({ { "PandoraPlus", ProtocolNature::PANDORAPLUS }, { "PandoraOne", ProtocolNature::PANDORAPLUS }, { "PandoraPremium", ProtocolNature::PANDORAPREMIUM }, { "Standard", ProtocolNature::STANDARD }, { "Automatic", ProtocolNature::AUTOMATIC }, { "Custom", ProtocolNature::CUSTOM }, { "Plus", ProtocolNature::PANDORAPLUS }, { "Premium", ProtocolNature::PANDORAPREMIUM }})
 Name to enum translation for Pandora connection parameters. More...
 
const int StationListCacheTime = 1800
 
const int StationDetailCacheTime = 10000
 
const Rating ThumbsDown = Rating::POOR
 Rating value for negative Pandora feedback. More...
 
const Rating ThumbsUp = Rating::GOOD
 Rating value for positive Pandora feedback. More...
 

Detailed Description

Pandora source, player and related datatype specializations.

Typedef Documentation

◆ StationList

Enumeration Type Documentation

◆ ProtocolNature

Enumerator
AUTOMATIC 
STANDARD 
PANDORAPLUS 
PANDORAPREMIUM 
CUSTOM 

◆ RequestOption

Enumerator
NONE 
DEBUG 
TLS 
UNENCRYPTED 

◆ Status

enum Pandora::Status
strong

Communication completion statuses.

Enumerator
Ok 
CorruptMessage 
MessageFormatUnknown 
AllocationError 
InternalError 
CommunicationError 
TooFrequentErrors 
BadRequest 
Unauthorized 
StreamingViolation 
BadGateway 
PandoraError0 
PandoraReadOnlyMode 
InvalidAuthToken 
InvalidPandoraCredentials 
PandoraSubscriptionExpired 
UserNotAuthorized 
StationLimitReached 
NoSuchStation 
SharedStationNotMutable 
DeviceNotAllowed 
PartnerNotAuthorized 
InvalidUsername 
InvalidPassword 
PlaylistRequestsExceeded 

Function Documentation

◆ operator&()

static constexpr RequestOption Pandora::operator& ( const RequestOption  a,
const RequestOption  b 
)
inlinestaticconstexpr

◆ operator|()

static constexpr RequestOption Pandora::operator| ( const RequestOption  a,
const RequestOption  b 
)
inlinestaticconstexpr

◆ pandora_to_music_id()

std::string Pandora::pandora_to_music_id ( const std::string &  musicId)

◆ rounded_rating()

static Rating Pandora::rounded_rating ( const Rating  rating)
static

Round the value to Pandora's thumbs.

Exceptions
CommandError/unsupportedmedia value if an inappropriate rating.
Here is the caller graph for this function:

◆ status_strerror()

const std::string Pandora::status_strerror ( Status  status)

Return a string corresponding to a Pandora communication status.

Parameters
statusThe communication status.
Returns
The corresponding string.
Here is the caller graph for this function:

Variable Documentation

◆ MinimumCacheMargin

const int Pandora::MinimumCacheMargin = 100
static

◆ pandora_errors

const std::unordered_map<Status, std::string> Pandora::pandora_errors
static
Initial value:
{
{ Status::Ok, "Ok" },
{ Status::CorruptMessage, "Corrupt message" },
{ Status::MessageFormatUnknown, "Unknown message format" },
{ Status::AllocationError, "Allocation error" },
{ Status::CommunicationError, "Communication error" },
{ Status::TooFrequentErrors, "Too many errors (temporary lockout)" },
{ Status::BadRequest, "HTTP 400/Bad request" },
{ Status::Unauthorized, "HTTP 401/Unauthorized" },
{ Status::StreamingViolation, "HTTP 429/Streaming Violation" },
{ Status::BadGateway, "HTTP 502/Bad Gateway" },
{ Status::PandoraError0, "Unexpected Pandora error" },
{ Status::PandoraReadOnlyMode, "Pandora is in read-only mode" },
{ Status::InvalidAuthToken, "Invalid or expired auth token" },
{ Status::InvalidPandoraCredentials, "Invalid Pandora credentials" },
{ Status::PandoraSubscriptionExpired, "Subscription or trial expired" },
{ Status::UserNotAuthorized, "User not authorized" },
{ Status::StationLimitReached, "Station limit reached" },
{ Status::NoSuchStation, "No such station" },
{ Status::SharedStationNotMutable, "Station not mutable (transformation required)" },
{ Status::DeviceNotAllowed, "Device not allowed" },
{ Status::PartnerNotAuthorized, "Partner not authorized" },
{ Status::InvalidUsername, "Invalid username" },
{ Status::InvalidPassword, "Invalid password" },
{ Status::PlaylistRequestsExceeded, "Excessive requests for playlist" },
}

◆ ProtocolNatureLookup

const LookupTable<ProtocolNature> Pandora::ProtocolNatureLookup({ { "PandoraPlus", ProtocolNature::PANDORAPLUS }, { "PandoraOne", ProtocolNature::PANDORAPLUS }, { "PandoraPremium", ProtocolNature::PANDORAPREMIUM }, { "Standard", ProtocolNature::STANDARD }, { "Automatic", ProtocolNature::AUTOMATIC }, { "Custom", ProtocolNature::CUSTOM }, { "Plus", ProtocolNature::PANDORAPLUS }, { "Premium", ProtocolNature::PANDORAPREMIUM }})

Name to enum translation for Pandora connection parameters.

◆ StationDetailCacheTime

const int Pandora::StationDetailCacheTime = 10000

◆ StationListCacheTime

const int Pandora::StationListCacheTime = 1800

◆ ThumbsDown

const Rating Pandora::ThumbsDown = Rating::POOR

Rating value for negative Pandora feedback.

◆ ThumbsUp

const Rating Pandora::ThumbsUp = Rating::GOOD

Rating value for positive Pandora feedback.