types.d.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. //#SECTION meta
  2. interface Artist {
  3. name: string | null;
  4. url: string | null;
  5. image: string | null;
  6. headerImage: string | null;
  7. }
  8. export interface SongMeta {
  9. url: string;
  10. path: string;
  11. language: string | null;
  12. meta: {
  13. title: string;
  14. fullTitle: string;
  15. artists: string;
  16. releaseDate: {
  17. year: number | null;
  18. month: number | null;
  19. day: number | null;
  20. };
  21. primaryArtist: Artist | null;
  22. featuredArtists: Artist[];
  23. };
  24. resources: {
  25. thumbnail: string | null;
  26. image: string | null;
  27. };
  28. lyricsState: string;
  29. id: number;
  30. }
  31. //#SECTION server
  32. export type ResponseType = "serverError" | "clientError" | "success";
  33. export type ResponseFormat = "json" | "xml";
  34. //#SECTION API
  35. export type ApiSearchResult = {
  36. response: {
  37. hits: SearchHit[];
  38. };
  39. };
  40. /** One result returned by the genius API search */
  41. export type SearchHit = {
  42. type: "song";
  43. result: {
  44. artist_names: string;
  45. full_title: string;
  46. header_image_thumbnail_url: string;
  47. header_image_url: string;
  48. id: number;
  49. language: string;
  50. lyrics_owner_id: number;
  51. lyrics_state: "complete";
  52. path: string;
  53. pyongs_count: number;
  54. relationships_index_url: string;
  55. release_date_components: {
  56. year: number;
  57. month: number;
  58. day: number;
  59. };
  60. song_art_image_thumbnail_url: string;
  61. song_art_image_url: string;
  62. title: string;
  63. title_with_featured: string;
  64. url: string;
  65. featured_artists: {
  66. api_path: string;
  67. header_image_url: string;
  68. id: number;
  69. image_url: string;
  70. name: string;
  71. url: string;
  72. }[];
  73. primary_artist: {
  74. api_path: string;
  75. header_image_url: string;
  76. id: number;
  77. image_url: string;
  78. name: string;
  79. url: string;
  80. };
  81. };
  82. };