This repository has been archived by the owner on Jan 10, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 19
/
SpotiFire.xml
3416 lines (2508 loc) · 133 KB
/
SpotiFire.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0"?>
<doc>
<assembly>
spotifire
</assembly>
<members>
<member name="M:UTF8(System.SByte!System.Runtime.CompilerServices.IsSignUnspecifiedByte!System.Runtime.CompilerServices.IsConst*)">
@file api.h Public API for libspotify
@note All input strings are expected to be in UTF-8
@note All output strings are in UTF-8.
@note All usernames are valid XMPP nodeprep identifiers:
http://tools.ietf.org/html/rfc3920#appendix-A
If you need to store user data, we strongly advise you
to use the canonical form of the username.
@example browse.c
The browse.c example shows how you can use the album, artist, and browse functions.
The example also include some rudimentary playlist browsing.
It is part of the spshell program
@example search.c
The search.c example shows how you can use search functions.
It is part of the spshell program
@example toplist.c
The toplist.c example shows how you can use toplist functions.
It is part of the spshell program
@example jukebox.c
The jukebox.c example shows how you can use playback and playlist functions.
</member>
<member name="M:sp_build_id">
@}
Return the libspotify build ID
This might be useful to have available for display somewhere in your
user interface.
</member>
<member name="M:sp_inbox_release(sp_inbox*)">
Decrease the reference count of a inbox result
@param[in] inbox The inbox result object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_inbox_add_ref(sp_inbox*)">
Increase the reference count of a inbox result
@param[in] inbox The inbox result object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_inbox_error(sp_inbox*)">
Check if inbox operation returned an error code.
@param[in] inbox Inbox object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
SP_ERROR_OTHER_TRANSIENT
SP_ERROR_PERMISSION_DENIED
SP_ERROR_INVALID_INDATA
SP_ERROR_INBOX_IS_FULL
SP_ERROR_NO_SUCH_USER
SP_ERROR_OTHER_PERMANENT
</member>
<member name="M:sp_inbox_post_tracks(sp_session*,System.SByte!System.Runtime.CompilerServices.IsSignUnspecifiedByte!System.Runtime.CompilerServices.IsConst*,sp_track*!System.Runtime.CompilerServices.IsConst*,System.Int32,System.SByte!System.Runtime.CompilerServices.IsSignUnspecifiedByte!System.Runtime.CompilerServices.IsConst*,=FUNC:System.Void(sp_inbox*,System.Void*),System.Void*)">
Add to inbox
@param[in] session Session object
@param[in] user Canonical username of recipient
@param[in] tracks Array of tracks to post
@param[in] num_tracks Number of tracks in \p tracks
@param[in] message Message to attach to tracks. UTF-8
@param[in] callback Callback to be invoked when the request has completed
@param[in] userdata Userdata passed to callback
@return sp_inbox object if the request has been sent, NULL if request failed to initialize
</member>
<member name="D:inboxpost_complete_cb">
@}
@defgroup inbox Inbox subsystem
@{
The type of a callback used in sp_inbox_post()
When this callback is called, the sp_track_is_loaded(), sp_album_is_loaded(),
and sp_artist_is_loaded() functions will return non-zero for the objects
contained in the search result.
@param[in] result The same pointer returned by sp_search_create()
@param[in] userdata The opaque pointer given to sp_search_create()
</member>
<member name="M:sp_toplistbrowse_backend_request_duration(sp_toplistbrowse*)">
Return the time (in ms) that was spent waiting for the Spotify backend to serve the request
@param[in] tlb Toplist object
@return -1 if the request was served from the local cache
If the result is not yet loaded the return value is undefined
</member>
<member name="M:sp_toplistbrowse_track(sp_toplistbrowse*,System.Int32)">
Return the track at the given index in the given toplist browse object
@param[in] tlb Toplist object
@param[in] index Index of the wanted track. Should be in the interval [0, sp_toplistbrowse_num_tracks() - 1]
@return The track at the given index in the given toplist browse object
</member>
<member name="M:sp_toplistbrowse_num_tracks(sp_toplistbrowse*)">
Given an toplist browse object, return number of tracks
@param[in] tlb Toplist browse object
@return Number of tracks on toplist
</member>
<member name="M:sp_toplistbrowse_album(sp_toplistbrowse*,System.Int32)">
Return the album at the given index in the given toplist browse object
@param[in] tlb Toplist object
@param[in] index Index of the wanted album. Should be in the interval [0, sp_toplistbrowse_num_albums() - 1]
@return The album at the given index in the given toplist browse object
</member>
<member name="M:sp_toplistbrowse_num_albums(sp_toplistbrowse*)">
Given an toplist browse object, return number of albums
@param[in] tlb Toplist browse object
@return Number of albums on toplist
</member>
<member name="M:sp_toplistbrowse_artist(sp_toplistbrowse*,System.Int32)">
Return the artist at the given index in the given toplist browse object
@param[in] tlb Toplist object
@param[in] index Index of the wanted artist. Should be in the interval [0, sp_toplistbrowse_num_artists() - 1]
@return The artist at the given index in the given toplist browse object
</member>
<member name="M:sp_toplistbrowse_num_artists(sp_toplistbrowse*)">
Given an toplist browse object, return number of artists
@param[in] tlb Toplist browse object
@return Number of artists on toplist
</member>
<member name="M:sp_toplistbrowse_release(sp_toplistbrowse*)">
Decrease the reference count of an toplist browse result
@param[in] tlb The toplist browse result object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_toplistbrowse_add_ref(sp_toplistbrowse*)">
Increase the reference count of an toplist browse result
@param[in] tlb The toplist browse result object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_toplistbrowse_error(sp_toplistbrowse*)">
Check if browsing returned an error code.
@param[in] tlb Toplist browse object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
SP_ERROR_IS_LOADING
SP_ERROR_OTHER_PERMANENT
SP_ERROR_OTHER_TRANSIENT
</member>
<member name="M:sp_toplistbrowse_is_loaded(sp_toplistbrowse*)">
Check if an toplist browse request is completed
@param[in] tlb Toplist browse object
@return True if browsing is completed, false if not
</member>
<member name="D:toplistbrowse_complete_cb">
The type of a callback used in sp_toplistbrowse_create()
When the callback is called, the metadata of all tracks belonging to it will have
been loaded, so sp_track_is_loaded() will return non-zero. The same goes for the
similar toplist data.
@param[in] result The same pointer returned by sp_toplistbrowse_create()
@param[in] userdata The opaque pointer given to sp_toplistbrowse_create()
</member>
<member name="M:sp_user_release(sp_user*)">
Decrease the reference count of an user
@param[in] user The user object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_user_add_ref(sp_user*)">
Increase the reference count of an user
@param[in] user The user object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_user_is_loaded(sp_user*)">
Get load status for a user object. Before it is loaded, only the user's canonical username
is known.
@param[in] user Spotify user object
@return True if user object is loaded, otherwise false
</member>
<member name="M:sp_user_display_name(sp_user*)">
Get a pointer to a string representing the user's displayable username.
If there is no difference between the canonical username and the display name,
or if the library does not know about the display name yet, the canonical username will
be returned.
@param[in] user The Spotify user whose displayable username you would like a string representation of
@return A string
</member>
<member name="M:sp_user_canonical_name(sp_user*)">
Get a pointer to a string representing the user's canonical username.
@param[in] user The Spotify user whose canonical username you would like a string representation of
@return A string representing the canonical username.
</member>
<member name="T:sp_relation_type">
@}
@defgroup user User handling
@{
User relation type
</member>
<member name="M:sp_playlistcontainer_clear_unseen_tracks(sp_playlistcontainer*,sp_playlist*)">
Clears a playlist from unseen tracks, so that next call to sp_playlistcontainer_get_unseen_tracks() will return 0 until a new track is added to the \p playslist.
@param[in] pc Playlist container.
@param[in] playlist Playlist object.
@return Returns 0 on success and -1 on failure.
</member>
<member name="M:sp_playlistcontainer_get_unseen_tracks(sp_playlistcontainer*,sp_playlist*,sp_track**,System.Int32)">
Get the number of new tracks in a playlist since the corresponding
function sp_playlistcontainer_clear_unseen_tracks() was called. The
function always returns the number of new tracks, and fills the
\p tracks array with the new tracks, but not more than specified in
\p num_tracks. The function will return a negative value on failure.
@param[in] pc Playlist container.
@param[in] playlist Playlist object.
@param[out] tracks Array of pointer to new tracks (maybe NULL)
@param[in] num_tracks Size of tracks array
@return Returns the number of unseen tracks
</member>
<member name="M:sp_playlistcontainer_release(sp_playlistcontainer*)">
Release reference count on playlistconatiner object
@param[in] pc Playlist container.
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_playlistcontainer_add_ref(sp_playlistcontainer*)">
Increase reference count on playlistconatiner object
@param[in] pc Playlist container.
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_playlistcontainer_owner(sp_playlistcontainer*)">
Return a pointer to the user object of the owner.
@param[in] pc Playlist container.
@return The user object or NULL if unknown or none.
</member>
<member name="M:sp_playlistcontainer_add_folder(sp_playlistcontainer*,System.Int32,System.SByte!System.Runtime.CompilerServices.IsSignUnspecifiedByte!System.Runtime.CompilerServices.IsConst*)">
* Add a playlist folder
*
* @param[in] pc Playlist container
* @param[in] index Position of SP_PLAYLIST_TYPE_START_FOLDER entry
* @param[in] name Name of group
* @return error One of the following errors, from ::sp_error
* SP_ERROR_OK
* SP_ERROR_INDEX_OUT_OF_RANGE
*
* @note This operation will actually create two playlists. One of
* type SP_PLAYLIST_TYPE_START_FOLDER and immediately following a
* SP_PLAYLIST_TYPE_END_FOLDER one.
*
* To remove a playlist folder both of these must be deleted or the list
* will be left in an inconsistant state.
*
* There is no way to rename a playlist folder. Instead you need to remove
* the folder and recreate it again.
</member>
<member name="M:sp_playlistcontainer_move_playlist(sp_playlistcontainer*,System.Int32,System.Int32,System.Boolean)">
* Move a playlist in the playlist container
*
* @param[in] pc Playlist container
* @param[in] index Index of playlist to be moved
* @param[in] new_position New position for the playlist
* @param[in] dry_run Do not execute the move, only check if it possible
* @return error One of the following errors, from ::sp_error
* SP_ERROR_OK
* SP_ERROR_INDEX_OUT_OF_RANGE
* SP_ERROR_INVALID_INDATA - If trying to move a folder into itself
</member>
<member name="M:sp_playlistcontainer_remove_playlist(sp_playlistcontainer*,System.Int32)">
Remove playlist at index from the given playlist container
@param[in] pc Playlist container
@param[in] index Index of playlist to be removed
@return error One of the following errors, from ::sp_error
SP_ERROR_OK
SP_ERROR_INDEX_OUT_OF_RANGE
</member>
<member name="M:sp_playlistcontainer_add_playlist(sp_playlistcontainer*,sp_link*)">
Add an existing playlist at the end of the given playlist container
@param[in] pc Playlist container
@param[in] link Link object pointing to a playlist
@return Pointer to the new playlist. Will be NULL if the playlist already exists.
</member>
<member name="M:sp_playlistcontainer_add_new_playlist(sp_playlistcontainer*,System.SByte!System.Runtime.CompilerServices.IsSignUnspecifiedByte!System.Runtime.CompilerServices.IsConst*)">
Add an empty playlist at the end of the playlist container.
The name must not consist of only spaces and it must be shorter than 256 characters.
@param[in] pc Playlist container
@param[in] name Name of new playlist
@return Pointer to the new playlist. Can be NULL if the operation fails.
</member>
<member name="M:sp_playlistcontainer_playlist_folder_id(sp_playlistcontainer*,System.Int32)">
Return the folder id at @a index
@param[in] pc Playlist container
@param[in] index Index in playlist container. Should be in the interval [0, sp_playlistcontainer_num_playlists() - 1]
@return The group ID of the folder. Returns 0 on index out of range, pc being NULL or indexed item not being a folder
@sa sp_session_playlistcontainer()
</member>
<member name="M:sp_playlistcontainer_playlist_folder_name(sp_playlistcontainer*,System.Int32,System.SByte!System.Runtime.CompilerServices.IsSignUnspecifiedByte*,System.Int32)">
Return the folder name at @a index
@param[in] pc Playlist container
@param[in] index Index in playlist container. Should be in the interval [0, sp_playlistcontainer_num_playlists() - 1].
Index should point at a start-folder entry, otherwise the empty string is written to buffer.
@param[in] buffer Pointer to char[] where to store folder name
@param[in] buffer_size Size of array
@return One of the following errors, from ::sp_error
SP_ERROR_OK
SP_ERROR_INDEX_OUT_OF_RANGE
@sa sp_session_playlistcontainer()
</member>
<member name="M:sp_playlistcontainer_playlist_type(sp_playlistcontainer*,System.Int32)">
Return the type of the playlist at a @a index
@param[in] pc Playlist container
@param[in] index Index in playlist container. Should be in the interval [0, sp_playlistcontainer_num_playlists() - 1]
@return Type of the playlist, @see sp_playlist_type
@sa sp_session_playlistcontainer()
</member>
<member name="M:sp_playlistcontainer_playlist(sp_playlistcontainer*,System.Int32)">
Return a pointer to the playlist at a specific index
@param[in] pc Playlist container
@param[in] index Index in playlist container. Should be in the interval [0, sp_playlistcontainer_num_playlists() - 1]
@return The playlist object
@sa sp_session_playlistcontainer()
</member>
<member name="M:sp_playlistcontainer_is_loaded(sp_playlistcontainer*)">
Return true if the playlistcontainer is fully loaded
@param[in] pc Playlist container
@return True if container is loaded
@note The container_loaded callback will be invoked when this flips to true
</member>
<member name="M:sp_playlistcontainer_num_playlists(sp_playlistcontainer*)">
Return the number of playlists in the given playlist container
@param[in] pc Playlist container
@return Number of playlists, -1 if undefined
@sa sp_session_playlistcontainer()
</member>
<member name="M:sp_playlistcontainer_remove_callbacks(sp_playlistcontainer*,sp_playlistcontainer_callbacks*,System.Void*)">
Unregister interest in changes to a playlist container
@param[in] pc Playlist container
@param[in] callbacks Callbacks, see sp_playlistcontainer_callbacks
@param[in] userdata Opaque value passed to callbacks.
@sa sp_session_playlistcontainer()
@sa sp_playlistcontainer_add_callbacks
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_playlistcontainer_add_callbacks(sp_playlistcontainer*,sp_playlistcontainer_callbacks*,System.Void*)">
Register interest in changes to a playlist container
@param[in] pc Playlist container
@param[in] callbacks Callbacks, see sp_playlistcontainer_callbacks
@param[in] userdata Opaque value passed to callbacks.
@note Every sp_playlistcontainer_add_callbacks() needs to be paired with a corresponding
sp_playlistcontainer_remove_callbacks() that is invoked before releasing the
last reference you own for the container. In other words, you must make sure
to have removed all the callbacks before the container gets destroyed.
@sa sp_session_playlistcontainer()
@sa sp_playlistcontainer_remove_callbacks
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="F:sp_playlistcontainer_callbacks.container_loaded">
Called when the playlist container is loaded
@param[in] pc Playlist container
@param[in] userdata Userdata as set in sp_playlistcontainer_add_callbacks()
</member>
<member name="F:sp_playlistcontainer_callbacks.playlist_moved">
Called when a playlist has been moved in the playlist container
@param[in] pc Playlist container
@param[in] playlist Playlist object.
@param[in] position Previous position in playlist container list
@param[in] new_position New position in playlist container list
@param[in] userdata Userdata as set in sp_playlistcontainer_add_callbacks()
</member>
<member name="F:sp_playlistcontainer_callbacks.playlist_removed">
Called when a new playlist has been removed from playlist container
@param[in] pc Playlist container
@param[in] playlist Playlist object.
@param[in] position Position in list
@param[in] userdata Userdata as set in sp_playlistcontainer_add_callbacks()
</member>
<member name="F:sp_playlistcontainer_callbacks.playlist_added">
Called when a new playlist has been added to the playlist container.
@param[in] pc Playlist container
@param[in] playlist Playlist object.
@param[in] position Position in list
@param[in] userdata Userdata as set in sp_playlistcontainer_add_callbacks()
</member>
<member name="T:sp_playlistcontainer_callbacks">
Playlist container callbacks.
If some callbacks should not be of interest, set them to NULL.
@see sp_playlistcontainer_add_callbacks
@see sp_playlistcontainer_remove_callbacks
</member>
<member name="M:sp_playlist_release(sp_playlist*)">
Decrease the reference count of a playlist
@param[in] playlist The playlist object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_playlist_add_ref(sp_playlist*)">
Increase the reference count of a playlist
@param[in] playlist The playlist object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_playlist_get_offline_download_completed(sp_session*,sp_playlist*)">
Get download progress for an offline playlist
@param[in] session Session object
@param[in] playlist Playlist object
@return Value from 0 - 100 that indicates amount of playlist that is downloaded
or 0 if the playlist is not in the SP_PLAYLIST_OFFLINE_STATUS_DOWNLOADING mode.
@see sp_playlist_offline_status()
</member>
<member name="M:sp_playlist_get_offline_status(sp_session*,sp_playlist*)">
Get offline status for a playlist
@param[in] session Session object
@param[in] playlist Playlist object
@return sp_playlist_offline_status
@see When in SP_PLAYLIST_OFFLINE_STATUS_DOWNLOADING mode the
sp_playlist_get_offline_download_completed() method can be used to query
progress of the download
</member>
<member name="M:sp_playlist_set_offline_mode(sp_session*,sp_playlist*,System.Boolean)">
Mark a playlist to be synchronized for offline playback.
The playlist must be in the users playlistcontainer
@param[in] session Session object
@param[in] playlist Playlist object
@param[in] offline True iff playlist should be offline, false otherwise
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_playlist_create(sp_session*,sp_link*)">
Load an already existing playlist without adding it to a playlistcontainer.
@param[in] session Session object
@param[in] link Link object referring to a playlist
@return A playlist. The reference is owned by the caller and should be released with sp_playlist_release()
</member>
<member name="M:sp_playlist_set_in_ram(sp_session*,sp_playlist*,System.Boolean)">
Return whether a playlist is loaded in RAM (as opposed to only
stored on disk)
@param[in] session Session object
@param[in] playlist Playlist object
@param[in] in_ram Controls whether or not to keep the list in RAM
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_playlist_is_in_ram(sp_session*,sp_playlist*)">
Return whether a playlist is loaded in RAM (as opposed to only
stored on disk)
@param[in] session Session object
@param[in] playlist Playlist object
@return True iff playlist is in RAM, False otherwise
@note When a playlist is no longer in RAM it will appear empty.
However, libspotify will retain information about the
list metadata (owner, title, picture, etc) in RAM.
There is one caveat tough: If libspotify has never seen the
playlist before this metadata will also be unset.
In order for libspotify to get the metadata the playlist
needs to be loaded at least once.
In order words, if libspotify starts with an empty playlist
cache and the application has set 'initially_unload_playlists'
config parameter to True all playlists will be empty.
It will not be possible to generate URI's to the playlists
nor extract playlist title until the application calls
sp_playlist_set_in_ram(..., true). So an application
that needs to stay within a low memory profile would need to
cycle thru all new playlists in order to extract metadata.
The easiest way to detect this case is when
sp_playlist_is_in_ram() returns false and
sp_link_create_from_playlist() returns NULL
</member>
<member name="M:sp_playlist_update_subscribers(sp_session*,sp_playlist*)">
Ask library to update the subscription count for a playlist
When the subscription info has been fetched from the Spotify backend
the playlist subscribers_changed() callback will be invoked.
In that callback use sp_playlist_num_subscribers() and/or
sp_playlist_subscribers() to get information about the subscribers.
You can call those two functions anytime you want but the information
might not be up to date in such cases
@param[in] session Session object
@param[in] playlist Playlist object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_playlist_subscribers_free(sp_subscribers*)">
Free object returned from sp_playlist_subscribers()
@param[in] subscribers Subscribers object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_playlist_subscribers(sp_playlist*)">
Return subscribers for a playlist
@param[in] playlist Playlist object
@return sp_subscribers struct with array of canonical usernames.
This object should be free'd using sp_playlist_subscribers_free()
@note The count returned for this function may be less than those
returned by sp_playlist_num_subscribers(). Spotify does not
track each user subscribed to a playlist for playlist with
many (>500) subscribers.
</member>
<member name="M:sp_playlist_num_subscribers(sp_playlist*)">
Return number of subscribers for a given playlist
@param[in] playlist Playlist object
@return Number of subscribers
</member>
<member name="M:sp_playlist_reorder_tracks(sp_playlist*,System.Int32!System.Runtime.CompilerServices.IsConst*,System.Int32,System.Int32)">
Move tracks in playlist
@param[in] playlist Playlist object
@param[in] tracks Array of pointer to track indices to be moved.
A certain track index should be present at most once, e.g. [0, 1, 2] is valid indata,
whereas [0, 1, 1] is invalid.
@param[in] num_tracks Length of \p tracks array
@param[in] new_position New position for tracks
@return One of the following errors, from ::sp_error
SP_ERROR_OK
SP_ERROR_INVALID_INDATA - position is > current playlist length
SP_ERROR_PERMISSION_DENIED
</member>
<member name="M:sp_playlist_remove_tracks(sp_playlist*,System.Int32!System.Runtime.CompilerServices.IsConst*,System.Int32)">
Remove tracks from a playlist
@param[in] playlist Playlist object
@param[in] tracks Array of pointer to track indices.
A certain track index should be present at most once, e.g. [0, 1, 2] is valid indata,
whereas [0, 1, 1] is invalid.
@param[in] num_tracks Length of \p tracks array
@return One of the following errors, from ::sp_error
SP_ERROR_OK
SP_ERROR_PERMISSION_DENIED
</member>
<member name="M:sp_playlist_add_tracks(sp_playlist*,sp_track*!System.Runtime.CompilerServices.IsConst*,System.Int32,System.Int32,sp_session*)">
Add tracks to a playlist
@param[in] playlist Playlist object
@param[in] tracks Array of pointer to tracks.
@param[in] num_tracks Length of \p tracks array
@param[in] position Start position in playlist where to insert the tracks
@param[in] session Your session object
@return One of the following errors, from ::sp_error
SP_ERROR_OK
SP_ERROR_INVALID_INDATA - position is > current playlist length
SP_ERROR_PERMISSION_DENIED
</member>
<member name="M:sp_playlist_has_pending_changes(sp_playlist*)">
Check if a playlist has pending changes
Pending changes are local changes that have not yet been acknowledged by the server.
@param[in] playlist Playlist object
@return A flag representing if there are pending changes or not
</member>
<member name="M:sp_playlist_get_image(sp_playlist*,System.Byte*)">
* Get description for a playlist
*
* @param[in] playlist Playlist object
* @param[out] image 20 byte image id
* @return TRUE if playlist has an image, FALSE if not
*
</member>
<member name="M:sp_playlist_get_description(sp_playlist*)">
Get description for a playlist
@param[in] playlist Playlist object
@return Playlist description or NULL if unset
</member>
<member name="M:sp_playlist_set_autolink_tracks(sp_playlist*,System.Boolean)">
Set autolinking state for a playlist.
If a playlist is autolinked, unplayable tracks will be made playable
by linking them to other Spotify tracks, where possible.
@param[in] playlist Playlist object
@param[in] link True or false
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_playlist_set_collaborative(sp_playlist*,System.Boolean)">
Set collaborative status for a playlist.
A playlist in collaborative state can be modified by all users, not only the user owning the list
@param[in] playlist Playlist object
@param[in] collaborative True or false
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_playlist_is_collaborative(sp_playlist*)">
Return collaborative status for a playlist.
A playlist in collaborative state can be modifed by all users, not only the user owning the list
@param[in] playlist Playlist object
@return true if playlist is collaborative, otherwise false
</member>
<member name="M:sp_playlist_owner(sp_playlist*)">
Return a pointer to the user for the given playlist
@param[in] playlist Playlist object
@return User object
</member>
<member name="M:sp_playlist_rename(sp_playlist*,System.SByte!System.Runtime.CompilerServices.IsSignUnspecifiedByte!System.Runtime.CompilerServices.IsConst*)">
Rename the given playlist
The name must not consist of only spaces and it must be shorter than 256 characters.
@param[in] playlist Playlist object
@param[in] new_name New name for playlist
@return One of the following errors, from ::sp_error
SP_ERROR_OK
SP_ERROR_INVALID_INDATA
SP_ERROR_PERMISSION_DENIED
</member>
<member name="M:sp_playlist_name(sp_playlist*)">
Return name of given playlist
@param[in] playlist Playlist object
@return The name of the given playlist
</member>
<member name="M:sp_playlist_track_message(sp_playlist*,System.Int32)">
Return a message attached to a playlist item. Typically used on inbox.
@param[in] playlist Playlist object
@param[in] index Index into playlist container. Should be in the interval [0, sp_playlist_num_tracks() - 1]
@return UTF-8 encoded message, or NULL if no message is present
</member>
<member name="M:sp_playlist_track_set_seen(sp_playlist*,System.Int32,System.Boolean)">
Set seen status of a playlist entry
@param[in] playlist Playlist object
@param[in] index Index into playlist container. Should be in the interval [0, sp_playlist_num_tracks() - 1]
@param[in] seen Seen status to be set
@return error One of the following errors, from ::sp_error
SP_ERROR_OK
SP_ERROR_INDEX_OUT_OF_RANGE
</member>
<member name="M:sp_playlist_track_seen(sp_playlist*,System.Int32)">
Return if a playlist entry is marked as seen or not
@param[in] playlist Playlist object
@param[in] index Index into playlist container. Should be in the interval [0, sp_playlist_num_tracks() - 1]
@return Seen state
</member>
<member name="M:sp_playlist_track_creator(sp_playlist*,System.Int32)">
Return user that added the given index in the playlist
@param[in] playlist Playlist object
@param[in] index Index into playlist container. Should be in the interval [0, sp_playlist_num_tracks() - 1]
@return User object
</member>
<member name="M:sp_playlist_track_create_time(sp_playlist*,System.Int32)">
Return when the given index was added to the playlist
@param[in] playlist Playlist object
@param[in] index Index into playlist container. Should be in the interval [0, sp_playlist_num_tracks() - 1]
@return Time, Seconds since unix epoch.
</member>
<member name="M:sp_playlist_track(sp_playlist*,System.Int32)">
Return the track at the given index in a playlist
@param[in] playlist Playlist object
@param[in] index Index into playlist container. Should be in the interval [0, sp_playlist_num_tracks() - 1]
@return The track at the given index
</member>
<member name="M:sp_playlist_num_tracks(sp_playlist*)">
Return number of tracks in the given playlist
@param[in] playlist Playlist object
@return The number of tracks in the playlist
</member>
<member name="M:sp_playlist_remove_callbacks(sp_playlist*,sp_playlist_callbacks*,System.Void*)">
Unregister interest in the given playlist
The combination of (\p callbacks, \p userdata) is used to find the entry to be removed
Here is a snippet from \c jukebox.c:
@dontinclude jukebox.c
@skipline sp_playlist_remove_callbacks
@param[in] playlist Playlist object
@param[in] callbacks Callbacks, see #sp_playlist_callbacks
@param[in] userdata Userdata to be passed to callbacks
@sa sp_playlist_add_callbacks
@return One of the following errors, from ::sp_error
SP_ERROR_OK
</member>
<member name="M:sp_playlist_add_callbacks(sp_playlist*,sp_playlist_callbacks*,System.Void*)">
Register interest in the given playlist
Here is a snippet from \c jukebox.c:
@dontinclude jukebox.c
@skipline sp_playlist_add_callbacks
@param[in] playlist Playlist object
@param[in] callbacks Callbacks, see #sp_playlist_callbacks
@param[in] userdata Userdata to be passed to callbacks
@sa sp_playlist_remove_callbacks
</member>
<member name="M:sp_playlist_is_loaded(sp_playlist*)">
Get load status for the specified playlist. If it's false, you have to wait until
playlist_state_changed happens, and check again if is_loaded has changed
@param[in] playlist Playlist object
@return True if playlist is loaded, otherwise false
</member>
<member name="F:sp_playlist_callbacks.subscribers_changed">
Called when playlist subscribers changes (count or list of names)
@param[in] pl Playlist object
@param[in] userdata Userdata passed to sp_playlist_add_callbacks()
</member>
<member name="F:sp_playlist_callbacks.track_message_changed">
Called when message attribute for a playlist entry changes.
@param[in] pl Playlist object
@param[in] position Position in playlist
@param[in] message UTF-8 encoded message
@param[in] userdata Userdata passed to sp_playlist_add_callbacks()
</member>
<member name="F:sp_playlist_callbacks.image_changed">
Called when playlist image has changed
@param[in] pl Playlist object
@param[in] image New image
@param[in] userdata Userdata passed to sp_playlist_add_callbacks()
</member>
<member name="F:sp_playlist_callbacks.description_changed">
Called when playlist description has changed
@param[in] pl Playlist object
@param[in] desc New description
@param[in] userdata Userdata passed to sp_playlist_add_callbacks()
</member>
<member name="F:sp_playlist_callbacks.track_seen_changed">
Called when seen attribute for a playlist entry changes.
@param[in] pl Playlist object
@param[in] position Position in playlist
@param[in] seen Set if entry it marked as seen
@param[in] userdata Userdata passed to sp_playlist_add_callbacks()
</member>
<member name="F:sp_playlist_callbacks.track_created_changed">
Called when create time and/or creator for a playlist entry changes
@param[in] pl Playlist object
@param[in] position Position in playlist
@param[in] user User object
@param[in] time When entry was created, seconds since the unix epoch.
@param[in] userdata Userdata passed to sp_playlist_add_callbacks()
</member>
<member name="F:sp_playlist_callbacks.playlist_metadata_updated">
Called when metadata for one or more tracks in a playlist has been updated.
@param[in] pl Playlist object
@param[in] userdata Userdata passed to sp_playlist_add_callbacks()
</member>
<member name="F:sp_playlist_callbacks.playlist_update_in_progress">
Called when a playlist is updating or is done updating
This is called before and after a series of changes are applied to the
playlist. It allows e.g. the user interface to defer updating until the
entire operation is complete.
@param[in] pl Playlist object
@param[in] done True iff the update is completed
@param[in] userdata Userdata passed to sp_playlist_add_callbacks()
</member>
<member name="F:sp_playlist_callbacks.playlist_state_changed">
Called when state changed for a playlist.
There are three states that trigger this callback:
- Collaboration for this playlist has been turned on or off
- The playlist started having pending changes, or all pending changes have now been committed
- The playlist started loading, or finished loading
@param[in] pl Playlist object
@param[in] userdata Userdata passed to sp_playlist_add_callbacks()
@sa sp_playlist_is_collaborative
@sa sp_playlist_has_pending_changes
@sa sp_playlist_is_loaded
</member>
<member name="F:sp_playlist_callbacks.playlist_renamed">
Called when a playlist has been renamed. sp_playlist_name() can be used to find out the new name
@param[in] pl Playlist object