История изменений
Исправление
dzidzitop,
(текущая версия)
:
код тут:
https://github.com/dzidzitop/gravifon_lastfm_scrobbler_deadbeef_plugins/blob/...
Почти уверен, что без знания/дебага он выглядит совсем непонятно (вариант - как неснятая георгиевская лента на антенне «бэхи» оголтелого «русского патриота» в марте). Поэтому прокомментирую ключевые моменты:
1) не используется динамическая память в принципе. Весь парсинг идёт на стэке
2) используется не универсальный парсер JSON, а набор утилит для построения своего парсера. Что-то типа лексера
3) используется знание о том, что за данные будут парсится. Например, что объект «duration» имеет два поля - величина и единица измерения («ms» или «s»). Но при этом если что-то идёт не так, то идёт сообщение об ошибке. Т.е. какашку скормить не получится.
Такой код пишется долго и нудно. Но зато потом работает быстро и экономично.
Исправление
dzidzitop,
:
код тут:
https://github.com/dzidzitop/gravifon_lastfm_scrobbler_deadbeef_plugins/blob/...
Почти уверен, что без знания/дебага он выглядит совсем непонятно (вариант - как неснятая георгиевская лента на антенне бэхи оголтелого «русского патриота» в марте). Поэтому прокомментирую ключевые моменты:
1) не используется динамическая память в принципе. Весь парсинг идёт на стэке
2) используется не универсальный парсер JSON, а набор утилит для построения своего парсера. Что-то типа лексера
3) используется знание о том, что за данные будут парсится. Например, что объект «duration» имеет два поля - величина и единица измерения («ms» или «s»). Но при этом если что-то идёт не так, то идёт сообщение об ошибке. Т.е. какашку скормить не получится.
Исходная версия
dzidzitop,
:
код тут:
https://github.com/dzidzitop/gravifon_lastfm_scrobbler_deadbeef_plugins/blob/...
Почти уверен, что без знания/дебага он выглядит совсем непонятно (вариант - как неснятая георгиевская лента на антенне бэхи оголтелого русского патриота в марте). Поэтому прокомментирую ключевые моменты:
1) не используется динамическая память в принципе. Весь парсинг идёт на стэке
2) используется не универсальный парсер JSON, а набор утилит для построения своего парсера. Что-то типа лексера
3) используется знание о том, что за данные будут парсится. Например, что объект 'duration' имеет два поля - величина и единица измерения ms или s. Но при этом если что-то идёт не так, то идёт сообщение об ошибке. Т.е. какашку скормить не получится.