feschukov / rhythmbox-plugin-yandex-music

Плагин для работы с музыкальным сервисом Яндекс.Музыка в Rhythmbox
GNU General Public License v3.0
187 stars 19 forks source link

Загружает не весь список треков из плейлиста #11

Closed DeadMozay closed 2 years ago

DeadMozay commented 2 years ago

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

feschukov commented 2 years ago

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

Можете скинуть плейлист, на котором ошибка проявляется? У меня плейлисты мелкие. Только в плейлисте "Мне нравится" порядка 200 треков, они все прогружаются.

DeadMozay commented 2 years ago

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

Можете скинуть плейлист, на котором ошибка проявляется? У меня плейлисты мелкие. Только в плейлисте "Мне нравится" порядка 200 треков, они все прогружаются.

В нем больше 500 треков https://music.yandex.ru/users/deadmostdie/playlists/1006?utm_medium=copy_link

feschukov commented 2 years ago

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

Можете скинуть плейлист, на котором ошибка проявляется? У меня плейлисты мелкие. Только в плейлисте "Мне нравится" порядка 200 треков, они все прогружаются.

В нем больше 500 треков https://music.yandex.ru/users/deadmostdie/playlists/1006?utm_medium=copy_link

Я не смог воспроизвести проблему. Добавил вывод итератора в качестве номера дорожки, чтобы проверить сколько треков добавляются в базу, получился 531 трек в плейлисте.

https://user-images.githubusercontent.com/11454622/168720844-5ce4270b-506d-4486-8361-999907f04d06.mp4

DeadMozay commented 2 years ago

Интересно, у вас релизная версия плагина или из main? потом попробую еще на тругом ПК

feschukov commented 2 years ago

Интересно, у вас релизная версия плагина или из main? потом попробую еще на тругом ПК

Из ветки main. В релизной версии нет пользовательских плейлистов, только потоки.

DeadMozay commented 2 years ago

потыкал еще, все равно загружает только 510 треков изображение

Traceback (most recent call last):
  File "/home/dm/.local/share/rhythmbox/plugins/yandex-music/rotor_stations_dashboard.py", line 64, in add_entry
    entry = self.db.entry_lookup_by_location(self.station[:6]+str(track.id)+':'+str(track.albums[0].id))
IndexError: list index out of range
feschukov commented 2 years ago

Хм... у меня подобной ошибки не появляется. Кажется, что плагин не находит массив в track.albums и поэтому уходит в ошибку. Хотя по документации он должен быть там. Попробуйте в файл rotor_stations_dashboard.py после 63 строки добавить вывод альбомов

print(track.albums)

и запустить rhythmbox через терминал командой

rhythmbox -D yandex-music

Там вывода будет много, но интересен вывод перед тем, как появится ошибка.

DeadMozay commented 2 years ago

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

DeadMozay commented 2 years ago
(22:52:31) <rhythmbox> [YMUserPlaylistSource.add_entry] .local/share/rhythmbox/plugins/yandex-music/rotor_stations_dashboard.py:141: [{'id': 22040051, 'error': None, 'title': 'Наследие', 'track_count': 9, 'artists': [{'id': 5926594, 'error': None, 'reason': None, 'name': 'Radio Tapok', 'cover': {'type': 'from-artist-photos', 'uri': 'avatars.yandex.net/get-music-content/5678677/47634638.p.5926594/%%', 'items_uri': None, 'dir': None, 'version': None, 'custom': None, 'is_custom': None, 'copyright_name': None, 'copyright_cline': None, 'prefix': '47634638.p.5926594/', 'error': None}, 'various': False, 'composer': False, 'genres': [], 'og_image': None, 'op_image': None, 'no_pictures_from_search': None, 'counts': None, 'available': None, 'ratings': None, 'links': [], 'tickets_available': None, 'likes_count': None, 'popular_tracks': [], 'regions': None, 'decomposed': None, 'full_names': None, 'hand_made_description': None, 'description': None, 'countries': None, 'en_wikipedia_link': None, 'db_aliases': None, 'aliases': None, 'init_date': None, 'end_date': None, 'ya_money_id': None}], 'labels': [{'id': 1255706, 'name': 'RADIO TAPOK'}], 'available': True, 'available_for_premium_users': True, 'version': None, 'cover_uri': 'avatars.yandex.net/get-music-content/6202531/adb23c18.a.22040051-1/%%', 'content_warning': None, 'original_release_year': None, 'genre': 'alternativemetal', 'text_color': None, 'short_description': None, 'description': None, 'is_premiere': None, 'is_banner': None, 'meta_type': 'music', 'storage_dir': None, 'og_image': 'avatars.yandex.net/get-music-content/6202531/adb23c18.a.22040051-1/%%', 'buy': [], 'recent': False, 'very_important': False, 'available_for_mobile': True, 'available_partially': False, 'bests': [103201255, 103201257], 'duplicates': [], 'prerolls': None, 'volumes': None, 'year': 2022, 'release_date': '2022-03-17T00:00:00+03:00', 'type': None, 'track_position': {'volume': 1, 'index': 4}, 'regions': None, 'available_as_rbt': None, 'lyrics_available': None, 'remember_position': None, 'albums': [], 'duration_ms': None, 'explicit': None, 'start_date': None, 'likes_count': 3261, 'deprecation': None, 'available_regions': None}]
Traceback (most recent call last):
  File "/home/dm/.local/share/rhythmbox/plugins/yandex-music/rotor_stations_dashboard.py", line 64, in add_entry
    entry = self.db.entry_lookup_by_location(self.station[:6]+str(track.id)+':'+str(track.albums[0].id))
IndexError: list index out of range
feschukov commented 2 years ago

Добавил поддержку понравившихся плейлистов https://github.com/dobroweb/rhythmbox-plugin-yandex-music/commit/140eeb5f0fa5388d0ca23d8ddbb99d63ccaec183 Но при этом так же не могу словить ошибку, что у вас появляется. Может с новой версией всё в порядке? Могли бы проверить?

DeadMozay commented 2 years ago

Появилась проблема, при первой установке плагина из main отвалилась авторизация

Traceback (most recent call last):
  File "/home/dm/.local/share/rhythmbox/plugins/yandex-music/yandex-music.py", line 21, in do_activate
    if self.login_yandex():
  File "/home/dm/.local/share/rhythmbox/plugins/yandex-music/yandex-music.py", line 97, in login_yandex
    window = YMAuthWindow(None)
NameError: name 'YMAuthWindow' is not defined

При обновлении существующего ошибки нет.

Мою ошибку это не решило. Что бы воспроизвести ошибку, загрузите любой трек которого нет в Яндекс музыке в любой плейлист, например из вложения

Vladimir Zelentsov - Terminator Theme (metal cover).zip

Проверьте подгрузил его плагин или нет, у меня плагин грузит до первого повавшегося такого трека, а дальше останавливает загрузку

feschukov commented 2 years ago

Появилась проблема, при первой установке плагина из main отвалилась авторизация

Спасибо за наводку. Поправил https://github.com/dobroweb/rhythmbox-plugin-yandex-music/commit/c6c216a01ff708bc7e011f1b330c402a61826bf2

Что бы воспроизвести ошибку, загрузите любой трек которого нет в Яндекс музыке в любой плейлист, например из вложения

Сейчас не за компьютером, чуть позже попробую.

feschukov commented 2 years ago

Наконец удалось воспроизвести проблему и устранить её. Исправил здесь https://github.com/dobroweb/rhythmbox-plugin-yandex-music/commit/573eca2cd9a7dcfca8b334507d94f65c8ca8f62c Прошу вас проверить и отписаться.

DeadMozay commented 2 years ago

Наконец удалось воспроизвести проблему и устранить её. Исправил здесь 573eca2 Прошу вас проверить и отписаться.

Подтверждаю, теперь все ОК, спасибо

DeadMozay commented 2 years ago

Снова плейлист стал не полностью загружаться

Traceback (most recent call last):
  File "/usr/lib64/rhythmbox/plugins/yandex-music/source.py", line 83, in add_entry
    self.album_arts.ensure_art_exists(track)
  File "/usr/lib64/rhythmbox/plugins/yandex-music/album_arts.py", line 28, in ensure_art_exists
    uri = f'https://{track.cover_uri.replace("%%", size)}'
AttributeError: 'NoneType' object has no attribute 'replace'
feschukov commented 2 years ago

Попробую в ближайшие дни разобраться с этим вопросом

feschukov commented 2 years ago

Снова плейлист стал не полностью загружаться

Traceback (most recent call last):
  File "/usr/lib64/rhythmbox/plugins/yandex-music/source.py", line 83, in add_entry
    self.album_arts.ensure_art_exists(track)
  File "/usr/lib64/rhythmbox/plugins/yandex-music/album_arts.py", line 28, in ensure_art_exists
    uri = f'https://{track.cover_uri.replace("%%", size)}'
AttributeError: 'NoneType' object has no attribute 'replace'

Исправил в коммите https://github.com/feschukov/rhythmbox-plugin-yandex-music/commit/bd8ab6cf07724249e33e82edaac40b48af757668