reloni / cloudmusicplayer Goto Github PK
View Code? Open in Web Editor NEWPlayer that plays music from cloud services (like Yandex disk)
Player that plays music from cloud services (like Yandex disk)
Регулярно делаю ветки из девелопа, а там не настроен carthage и нет ссылок на зависимые библиотеки.
Так же возможно нужно удалить бранч yandex-json
@objc protocol CounterDataSource {
optional func incrementForCount(count: Int) -> Int
optional var fixedIncrement: Int { get }
}
Поместить файл с воркспейсом в директорию CloudMusicPlayer, что бы он тоже попадал в github
OAuthError не используется, а CloudResourceType используется очень редко, поэтому гораздо лочше заменить его на обычную строку внутри класса OAuthResourceBase.
Стрим работает, но не вызывается deinit у тасков.
Also provide method to set this property, but only if it is nil. This add ability to set this property to correct value while creating a StreamDataTask (at this time we have StreamResourceIdentifier).
При скачке трека с яндекс диска он говорит, что это octet/stream, а не audio/mpeg к примеру, из-за чего музыка не играется. При этом он сообщает правильный тип данных в url запроса, нужно это обрабатывать и вручную подсовывать правильный contentType в методе setResponseContentInformation
Distinguish http code (especially streaming) into separate project. Rename RxPlayer into something less weird and also distinguish into separate project.
Maintain own media library with offline mode
В итоге дополнительные заголовки не используются при потоковой загрузке (забавно, что яндекс позволяет это делать).
Когда токен прокис, либо когда передаешь неверный токен, яндек посылает нафиг. Нужно это обрабатывать
Рушится при преобразовании данных к типу T:
NSKeyedUnarchiver.unarchiveObjectWithData(loadedData as! NSData) as! T!
Пора уже это исправить
Убрать internal static var resources = String: OAuthResource и переместить все управление созданными экземплярами ресурсов (в том числе поиск, загрузку и т. д.) в другой класс, оставив тут только те методы, которые имеют отношение непосредственно к самому ресурсу
Add caching of cloud resource requests, this add ability to choose music tracks offline
Начать хотя бы с пары простых тестов.
Сейчас вызывается статический метод OAuthResourceBase.parseCallbackUrl в котором захардкожен вызов метода, который парсит ответ от яндекса (так же в последствии будет захардкожен лобой другой ресурс).
Для экземпляров ресурсов (яндекс и так далее) лучше сделать метод на уровне экземпляра, который будет парсить ответ.
Базовый статический метод переделать, что бы он сначала как-то определял URL схему (которая является ключем в словаре resources), достает нужный класс по этой схеме из кеша (на этот момент он уже должен там быть) и вызывает у этого класса метод парсинга.
Срабатывает только после переключения на другой row
Add ability to see amount of cached files and space. Also provide methods to clear storage
С этим.
Можно использовать Nuke
Судя по всему не может по умолчанию выполнить запрос, в адресе которого есть пробел, и кириллица
Сейчас метод ищет ресурс в локальном словаре, если не находит, то загружает из NSUserDefaults, если же и там не находит, то возвращает новый экземпляр (на данным момент только яндекс).
При этом он приватный и вызывается из метода getResourceById, который больше ничего не делает.
Наверно лучше оставить loadResourceById только загрузку ресурса из кеша (соответственно он будет возвращать nil, если ничего не найдет) и сделать его публичным, а создаиние нового объекта перенести в getResourceById. После этого переделать расширение у YandexOAuthResource, что бы он вызывал loadResourceById, и если ему вернется nil, то создавал новый объект.
Возможно лучше добавить в протокол CloudResource объект CloudResourceManager, что бы этот ресурс все через него и загружал. А метод загрузки корневых ресурсов перенести в менеджер
This add ability to access task object and retrieve current amount of cached data.
HttpClient has urlSession as property and should use configuration of this session
Необходимо делать так:
if json["name"].isExists()
Для проверки существует узел или нет. Потому что
if let notNullVar = json["notExists"] { // войдет в блок, но notNullVar на самом деле nil. XCode крашится вообще на этом
Внутри проекта файлы организованы по группам, но оказывается, что физически они все лежат в одной директории. Необходимо это переделать, что бы структура в XCode соответствовала физической структуре. Советы тут.
Сейчас все может навернуться, если параметры поменять местами.
AVPlayer умеет стримить аудио по ссылке. Но это не будет работать с яндексом, потому что ему нужно передавать ключ аутентификации в заголовке HTTP, что AVPlayer делать не умеет. Так же, судя по всему, нельзя получить доступ к данным, которые он где-то закешировал, что означает, что если нужно будет сохранить локально файл, который AVPlayer уже проиграл, его придется скачать еще раз.
Решения тут и тут.
Убрать вызовы:
OAuthResourceBase.resources[CloudResourceType.Yandex.rawValue] = self
self.saveResource()
Из конструктора и переместить их в extension property Yandex.
По какой-то причине эта папка не была исключена, хотя я пытался:(
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.