libspotify: иногда создаваемые плей-листы не получают имен

Я использую последнюю версию libspotify API (12.1.51). И я кодирую использование C# и libspotify. ЧИСТЫЙ (простая interop библиотека-оболочка для libspotify). Я построил программу, которая создает плей-листы, используя libspotify API. Я использую последнего клиента Spotify по рождению для Windows для проверки моих созданных плей-листов.

Я построил программу, которая ждет названия плей-листа и списка следа URIs или один URI альбома и создает соответствующий плей-лист. Если URI альбома будет поставляться тогда, то все следы из альбома будут добавлены к новому плей-листу иначе поставляемый список следа, URIs будет использоваться, чтобы создать новый плей-лист. Программа ждет до отзыва

playlist_update_in_progress

назван и сделанный параметр равняется верный прежде, чем принять, что новые плей-листы создают.

Это работает хорошо за исключением того, что иногда плей-листы создаются без имен, но действительно имеют все следы. Я могу просто сказать программе создавать тот же самый плей-лист, который не получил имени, и это могло бы работать во второй раз. Это происходит беспорядочно, но я заметил, что, если я создаю приблизительно 200 плей-листов тогда, возможно, 5-10 плей-листов не получают имен. Я вижу, что плей-листы добавляются в вашем клиенте Spotify, когда программа управляет и создает плей-листы и беспорядочно видит плей-листы без имен. Плей-листы появляются почти в то же время, отзыв называют и делают, равняется верный (не всегда, конечно, могла бы быть задержка). Я пытался вручную переименовать плей-листы в клиенте Spotify для Windows без проблем (длина названия плей-листа была 0 или пустая строка, если вы будете). Клиент Spotify по рождению даже не позволяет пустые названия плей-листа.

Я использую:

sp_playlistcontainer_add_new_playlist

чтобы добавить новый плей-лист и я попытался использовать IntPtr и последовательность C#, чтобы пройти к нему. Попробованный оба:

[DllImport("libspotify")]
public static extern IntPtr sp_playlistcontainer_add_new_playlist(IntPtr playlistContainerPtr, string name);

[DllImport("libspotify")]
public static extern IntPtr sp_playlistcontainer_add_new_playlist(IntPtr playlistContainerPtr, IntPtr namePtr);

И я также попробовал

sp_playlist_rename

переименовывать плей-лист несколько раз (как своего рода фиксация) без успеха. Я не знаю точно, что происходит в сервере, когда плей-листы создаются. Действительно ли это - ошибка или что продолжается?

Я действительно попробовал много хакерских проникновений, чтобы сделать эту работу, но напрасно.

Больше информации о программе:

Сначала это соединяется с Spotify и затем ждет некоторого входа пульта. Это проверяет вход на следующие последовательности:

Создать плей-лист, используя имя и список следов:

createplaylistfromtracks "Tracks playlist" spotify:track:36MuLw248uzLPtrJ6073ZR spotify:track:5WPkvx0MARhlWhXp1sJg4k spotify:track:1VrdbSFVU9wJkuDM2sWYVe spotify:track:66RG0BBwpQqHxZs06UUyeo spotify:track:0zp3uPuhnARR1XYsgg5JLV

и создать плей-лист, используя имя и список следов от URI альбома:

createplaylistfromalbum "Album playlist" spotify:album:5rVwDKRKa1FjDlLofDZyRb

И затем программа разбирает вход и создает плей-лист и параметры настройки флаг, Занятый = верный так, чтобы пульт не читал входа до Занятый = ложный, который происходит, когда playlist_update_in_progress отзыв называют и делают, верно. Тогда это читает вход снова...

Любая помощь высоко ценилась бы.

1
nl ja de
Можно ли зарегистрироваться в нашем настольном клиенте, чтобы видеть, появляются ли плей-листы там с правильными именами?
добавлено автор iKenndac, источник
Это точно, где я проверяю и где я вижу, что у них нет названий плей-листа. С "в моем клиенте Spotify" я имел в виду вашего клиента Spotify.
добавлено автор user2050434, источник
Привет снова iKenndac. Спасибо за занимание время, чтобы ответить на мой вопрос. Я приложил printscreen клиента Spotify, ясно показав проблему: dropbox.com/s/2bp7psw0874zvel/playlist_no_name.png Я имею также после создания плей-листов, читая список всех моих плей-листов в моем счете Spotify как так: IEnumerable перечисляют = PlaylistContainer. GetSessionContainer ().GetAllPlaylists ().Wh‌ ​ до (p => Плей-лист. Доберитесь (p. Указатель)! = пустой указатель && последовательность. IsNullOrWhiteSpace (p. Имя) || p. Имя == "Тест плей-листа!"); я получаю только 1 плей-лист, у которого есть Имя = "" хотя!
добавлено автор user2050434, источник
О, и я не уверен, но это просто походит на своего рода ошибка, которую вы имеете на своем конце. Я действительно отлаживал, и весь мой созданный плей-лист возражает, чтобы иметь имена. Те же самые, если вы будете. Я отлаживал много. Нам действительно нужно, это зафиксировало, поскольку эта полезность будет очень важна в нашей компании.
добавлено автор user2050434, источник

1 ответы

У нас есть много заявлений, бегущих libspotify и внутренне и внешне и у нас не было проблем как это с библиотекой, которая предположила бы, что это не ошибка в libspotify.

Несколько указателей, которые могли бы заставить это происходить:

  • Удостоверяется, что вы управляете нитями правильно. Когда вы добираетесь notify_main_thread() требование (который прибывает в некоторый фоновый поток), вы должны , асинхронно звонят sp_sesion_process_events() от главной нити, таким образом, необходимо удостовериться, что вы выстраиваете это к главной нити правильно. Если этот процесс не будет работать правильно, материал начнет действовать странный.

  • , Так как вы делаете много операций, удостоверьтесь, что у libspotify есть время, чтобы синхронизировать все ваши изменения с обслуживанием. playlist_update_in_progress разработан, чтобы уведомить вас, когда многократные мутации происходят с плей-листом, и типично полезно, когда изменения входят откуда-либо. Вместо этого playlist_state_changed - то, в чем вы нуждаетесь для слушания изменений как этот (как правило, после переименовывания, я полагаю, что плей-листы входят в состояние "погрузки", в то время как изменение применяется, затем обратно (то есть, sp_playlist_is_loading прибыль , ложный снова), как только это сделано.

  • кроме того, когда вы выходите из своего заявления, удостоверяется, что вы выступаете sp_session_logout() звонят и ждут до logged_out отзыв запущен перед переходом. Если вы не делаете, некоторые изменения не могли бы быть синхронизированы с обслуживанием.

0
добавлено
Да, я имел в виду sp_playlist_is_loaded. Когда вы получаете state_changed, проверьте is_loaded и другие свойства, таким образом, вы видите, каково государство. update_in_progress не имеет никакого отношения к имени, просто отследите изменения.
добавлено автор iKenndac, источник
Удостоверьтесь you' ре, управляющее вашим notify_main_thread() обращающийся правильно. Если это неправильно, сетевая нить может получить остановленные означающие местные изменения don' t заканчиваются в сервере. It' s также возможный, что у обслуживания плей-листа есть проблемы, которые могут время от времени происходить.
добавлено автор iKenndac, источник
Спасибо за ответ. Я проверю те пункты. Но sp_playlist_is_loading действительно существует? Я googled с 0 результатами. Но sp_playlist_is_loaded действительно существует. Это - функция, которую вы имели в виду? И после добавления нового плей-листа, state_changed отзыв называют 5 раз. Как я могу знать, когда плей-лист добавляется и закончил загружать тогда, если я не использую playlist_update_in_progress отзыв? Могло случиться так, что плей-лист находится все еще на стадии погрузки, и так или иначе не заканчивается полностью так, чтобы имя никогда не было определено. Это поведение только происходит, когда я быстро добавляю несколько Спасибо плей-листов
добавлено автор user2050434, источник
is_loaded прибыль , верный , каждый раз state_change называют - это становится названным 5 раз. По крайней мере, после запроса add_new_playlist функция. Так или иначе, если я получаю название плей-листа с API, это правильно. Так отладка очень трудная. Это - просто клиент, который показывает его пустой. Именно поэтому я думал, что это была ошибка. Но я не обвиняю, просто задавшись вопросом. Спасибо.
добавлено автор user2050434, источник
С тех пор имя всегда правильно (читая его через libspotify API), тогда это должно быть что-то еще, что неправильно - который заставляет клиента показать пустую строку как имя. Если я мог бы просто выяснить, что сделать, который будет фантастическим. Используя state_change не было полезно для меня. Все еще не может изобразить, как знать, что плей-лист закончил загружать, потому что он всегда возвращается верный.
добавлено автор user2050434, источник
Я вполне уверен, это обработано правильно, так как я использую хорошую обертку, которая также используется в известном плагине Jamcast в качестве клиента Spotify. Это очень печально: (У нас есть все работающее кроме этого. Мы также интегрировали эту полезность в нашу собственную систему. И мы должны полагаться на него, который мы не можем в данный момент. Сделайте у вас есть любые другие идеи:)? Еще раз спасибо за выручение нас!
добавлено автор user2050434, источник
Привет, вы были правы. Я изменил пример SPSHELL и добавил мою собственную команду к списку, названному "add_new_playlist" и двумя отзывами плей-листа, которые я использую. Я должен был изменить функцию console_input, потому что она напечатала управляющие символы ASCII к стандартному выводу, который заставил прессу Изменения быть похожей на пробелы и Spotify, URIs были замараны upp, когда приклеивается в пульте. Так или иначе я успешно создал 1,000 плей-листов без пустых названий! Спасибо.
добавлено автор user2050434, источник