Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины.
   

Вернуться   Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины. > Анонсы, Информация и Общие Темы > Подсказки, описания и FAQ по XBMC

Ответ
 
Опции темы Опции просмотра
Старый 19.01.2013, 22:02   #51
ViPetroFF
Senior Member
 
Регистрация: 17.12.2012
Сообщений: 166
Exclamation Code Review

Цитата:
Сообщение от nightik Посмотреть сообщение
Добавил в первый пост ссылку на исходники.
Код:
TiXmlDocument xmlDoc;
if (!xmlDoc.Parse(strXML))
{
XBMC->Log(LOG_ERROR, "invalid EPG data (no/invalid data found at '%s')", m_strXMLTVUrl.c_str());
return false;
}
не совсем правильный код, функция Parse возвращает не булевую переменную успех/не успех, а указатель на char-овский символ в том месте строки, где был закончен разбор xml документа, может быть такая ситуация, не ошибочная, что разбор закончился на самом последнем нулевом символе окончания строки, тогда аддон будет вылетать постоянно с ошибкой на правильном xml файле.

Лучше это так написать:
Код:
TiXmlDocument xmlDoc;
xmlDoc.Parse(strXML);
if (xmlDoc.Error())
{
XBMC->Log(LOG_ERROR, "invalid EPG data (no/invalid data found at '%s')", m_strXMLTVUrl.c_str());
return false;
}

Последний раз редактировалось ViPetroFF; 19.01.2013 в 22:05. Причина: подправил форматирование кода
ViPetroFF вне форума   Ответить с цитированием
   
Старый 19.01.2013, 23:43   #52
nightik
Senior Member
 
Регистрация: 12.12.2012
Сообщений: 1,674
По умолчанию

Цитата:
Сообщение от ViPetroFF Посмотреть сообщение
не совсем правильный код, .....

Лучше это так написать:
Спасибо за замечания. Если будут еще - пишите, или дам доступ к репозитарию

2All:
Друзья, скачиваний больше чем коментариев. Неужели всех всё устраивает?

Планы на будующие релизы:
1. Улучшение настроек (в случае локальных файлов плейлиста и программы, возможность выбрать их через UI xbmc).
2. Добавление настройки сдвига EPG по времени.
3. Добавление настройки папки с логотипами каналов.
nightik вне форума   Ответить с цитированием
Старый 20.01.2013, 00:39   #53
nemone
Senior Member
 
Регистрация: 01.12.2011
Адрес: Украина.Львов
Сообщений: 164
По умолчанию

Цитата:
Сообщение от nightik Посмотреть сообщение
Спасибо за замечания. Если будут еще - пишите, или дам доступ к репозитарию

2All:
Друзья, скачиваний больше чем коментариев. Неужели всех всё устраивает?

Планы на будующие релизы:
1. Улучшение настроек (в случае локальных файлов плейлиста и программы, возможность выбрать их через UI xbmc).
2. Добавление настройки сдвига EPG по времени.
3. Добавление настройки папки с логотипами каналов.
сдвиг нужен в первую очередь, так как для людей из Украины теряеться весь смысл egp...или я чего то не понимаю - может в плэйлисте можно указать сдвиг?

также хотелось бы конвертер плэлиста в нужный формат, думаю это реально - такой как Roman_V_M делал для своей разработки...
__________________
Мать: Asus P8z68 V LX; Проц:Intel® Core™ i3-2120; Память:4Gb; Видео:интегрированное;
Дисплеи: Asus 19'' и ТВ Samsung 32'';
Пульт: китайского проискождения;
Ось: Win7x86+ АССТЕР x32; XBMC: Eden + PVR
nemone вне форума   Ответить с цитированием
Старый 20.01.2013, 00:57   #54
ViPetroFF
Senior Member
 
Регистрация: 17.12.2012
Сообщений: 166
Lightbulb Иконки

Цитата:
Сообщение от nightik Посмотреть сообщение
Если будут еще - пишите, или дам доступ к репозитарию
Есть предложение по иконкам
Предлагаю в том случае если иконка канала не нашлась по имени файла поискать её в стандартном наборе аддона.
Вот тут есть xbmc плагин с набором неплохих иконок, версия 0.1.0, и готовым map файлом к именам каналов "canal_list.py" в формате
Цитата:
"россия 2":"466",
"россия 24":"467",
"россия к":"468",
"культура":"468",
Могу сразу дать образец кода для работы с именами иконок:
Код:
std::map<std::wstring, int>      m_mapLogo;


string logoCfgFile = g_strClientPath;
if (logoCfgFile.at(logoCfgFile.size() - 1) == '\\' ||
    logoCfgFile.at(logoCfgFile.size() - 1) == '/')
{
    logoCfgFile.append("canal_list.py");
}
else
{
    logoCfgFile.append("\\canal_list.py");
}

void* hFile = XBMC->OpenFile(logoCfgFile.c_str(), 0);
if (hFile != NULL)
{
    CStdString buffer;

    while (XBMC->ReadFileString(hFile, buffer.SetBuf(256), 256))
    {
        buffer.RelBuf();
        int ndx = buffer.Find(':');
        if(ndx > 0)
        {
            CStdString name, id;

            name = buffer.Left(ndx);
            id = buffer.Mid(ndx + 1);

            int ndxBegin = name.Find('\"');
            int ndxEnd = name.ReverseFind('\"');
            if(ndxBegin > -1 && ndxEnd > ndxBegin)
            {
                name = name.Mid(ndxBegin + 1, ndxEnd - ndxBegin - 1);
            }
            else
            {
                name.Empty();
            }

            int iId = 0;

            ndxBegin = id.Find('\"');
            ndxEnd = id.ReverseFind('\"');
            if(ndxBegin > -1 && ndxEnd > ndxBegin)
            {
                id = id.Mid(ndxBegin + 1, ndxEnd - ndxBegin - 1);
                iId = atoi(id);
            }

            typedef pair <wstring, int> StrIntPair;

            if(!name.IsEmpty() && iId > 0)
            {
                CStdStringW nameW = UTF8Util::ConvertUTF8ToUTF16(name.c_str());
                m_mapLogo.insert(StrIntPair(nameW.ToLower(), iId));
            }
        }
    }

    XBMC->Log(LOG_DEBUG, "%s - insert to map %u channel to id matches", __FUNCTION__, m_mapLogo.size());

    XBMC->CloseFile(hFile);
}
else
{
    XBMC->Log(LOG_ERROR, "can not open %s for read", logoCfgFile.c_str());
}


typedef const_mem_fun1_ref_t<int, const CStdString, typename CStdString::value_type> TStrFindFunc1;
typedef binder1st<TStrFindFunc1> TStrFindFunc1Binder;

class charfinder: unary_function<typename CStdString::value_type, bool>
{
public:
    charfinder(const TStrFindFunc1Binder& binder):_FuncBinder(binder){}
    result_type operator()(argument_type ch)
    {
        return (result_type)(_FuncBinder(ch) > -1);
    }
private:
    const TStrFindFunc1Binder& _FuncBinder;
};

std::string PVRDemoData::GetIconPath(LPCSTR lpszIcoFName) const
{
  string iconFile = g_strClientPath;
  string iconName = lpszIcoFName;

  const CStdString chars("\\/:*?|<>");
  TStrFindFunc1 funcFind(&CStdString::Find);
  TStrFindFunc1Binder binderFind(funcFind, chars);
  charfinder findPred(binderFind);

  replace_if(iconName.begin(), iconName.end(), findPred, '~') ;

  CStdStringW strNameW = UTF8Util::ConvertUTF8ToUTF16(iconName.c_str());
  std::map<std::wstring, int>::const_iterator pos = m_mapLogo.find(strNameW.Trim().ToLower());
  if(m_mapLogo.end() != pos && pos->second > 0)
  {
      if (iconFile.at(iconFile.size() - 1) == '\\' ||
          iconFile.at(iconFile.size() - 1) == '/')
        iconFile.append("Logo\\");
      else
        iconFile.append("\\Logo\\");

      CStdString strName;
      strName.Format("%.3d.png", pos->second);
      
      iconFile.append(strName.c_str());
  }
  else
  {
      if (iconFile.at(iconFile.size() - 1) == '\\' ||
          iconFile.at(iconFile.size() - 1) == '/')
        iconFile.append("Icons\\");
      else
        iconFile.append("\\Icons\\");

      iconFile.erase(iconFile.begin(),
          find_if(iconFile.begin(), iconFile.end(), NotSpace<string::value_type>()));
      string::const_reverse_iterator it = find_if(iconFile.rbegin(), iconFile.rend(), NotSpace<string::value_type>());
      iconFile.erase(!(it == iconFile.rend()) ? iconFile.find_last_of(*it) + 1 : 0);

      //iconFile.append(WideCharToMultiByte(strNameW));
      iconFile.append(iconName);
      iconFile.append(".png");
  }

  //XBMC->Log(LOG_DEBUG, "%s - icon path: %s", __FUNCTION__, iconFile.c_str());

  return iconFile;
}
Этот код ещё умеет заменять специальные символы файловой системы на знак '~'. Но его нужно ещё немного доработать, так как имеется зависимость с windows платформой, надо поискать для линукса аналог функции "UTF8Util::ConvertUTF8ToUTF16".
ViPetroFF вне форума   Ответить с цитированием
Старый 20.01.2013, 01:14   #55
olegon85
Junior Member
 
Регистрация: 04.02.2011
Сообщений: 25
По умолчанию

Указываю ссылку на плейлист нашего провайдера и читаю в логах что плейлист либо отсутвует либо неправильный. Хотя из соседней темы этот же плейлист конвертируется и нормально добавляется в pvr.demo. Подскажите пожалуйста в чем может быть проблема?
P.S. Клал плейлист в папку плагина с переименовыванием и все также неработает.
olegon85 вне форума   Ответить с цитированием
Старый 20.01.2013, 01:15   #56
olegon85
Junior Member
 
Регистрация: 04.02.2011
Сообщений: 25
По умолчанию

Указываю ссылку на плейлист нашего провайдера и читаю в логах что плейлист либо отсутвует либо неправильный. Хотя из соседней темы этот же плейлист конвертируется и нормально добавляется в pvr.demo. Подскажите пожалуйста в чем может быть проблема?
P.S. Клал плейлист в папку плагина с переименовыванием и все также неработает.
olegon85 вне форума   Ответить с цитированием
Старый 20.01.2013, 01:35   #57
razzor
Senior Member
 
Регистрация: 03.08.2011
Сообщений: 222
По умолчанию

Цитата:
Сообщение от nightik Посмотреть сообщение
Ваш путь должны быть вида smb://server/folder/palylist.m3u все файлы загружаются через API xbmc, а следовательно и пути должны быть понятны для него.
ага. Написал, а потом сам об этом подумал... Увы, не работает... Ни smb://, ни даже http-ссылка. На той-же машине другой плейер из той-же сетевой папки влет берет... Где что посмотреть?


olegon85 а если вписать ссылка типа c:\папка\плейлист.m3u ? У меня, как видите та-же проблема ((( win7 64 RC3
razzor вне форума   Ответить с цитированием
Старый 20.01.2013, 02:02   #58
olegon85
Junior Member
 
Регистрация: 04.02.2011
Сообщений: 25
По умолчанию

Вот блин нифига. Пока непонятная штука. На десктопе сейчас обновил xbmc 11 до 12rc3 поставил плагин и кинул плейлист в с:\123\iptv.m3u и так и прописал. Все заработало. Пойду теперь тестить на компе у телека.
olegon85 вне форума   Ответить с цитированием
Старый 20.01.2013, 02:37   #59
olegon85
Junior Member
 
Регистрация: 04.02.2011
Сообщений: 25
По умолчанию

Положил именно этот файл плейлист на комп под телеком где был сразу только xbmc 12rc3 и нифига. Надо чет думать. Что-то тут нето
olegon85 вне форума   Ответить с цитированием
Старый 20.01.2013, 02:52   #60
DiZet
Member
 
Регистрация: 14.04.2012
Сообщений: 40
По умолчанию

Цитата:
2All:
Друзья, скачиваний больше чем коментариев. Неужели всех всё устраивает?
Всё вроде работает (работало) на windows8. У меня тоже появился странный баг с плейлистом. Установил 0.0.3 на 0.0.2, закинул снова плейлист и иконки в папку плагина и все работало без проблем. Удалил плагин и установил заново и теперь не воспроизводит плейлист не версия 0.0.2, не версия 0.0.3. Прописывал путь и кидал в папку, но ничего не помогает . Пока особо не заворачивался, так как жду "сдвига времени в EPG".

Заметил в названии темы "Android ASAP" жду с нетерпением...
DiZet вне форума   Ответить с цитированием
Ответ

Метки
epg, ip-tv, iptv, m3u, plugin, pvr
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IPTV для XBMC? Hexus Помощь по плагинам 65 13.05.2016 20:28
XBMC + IPTV + Apple TV (РЕШЕНО) Mastyf Подсказки, описания и FAQ по XBMC 6 06.01.2013 18:28
Плагин для IP-TV провайдеров Vitaliy86 Связь с разработчиками XBMC 34 07.12.2012 00:40
IPTV+XBMC+LightPack lel Общие темы для обсуждения 3 14.07.2012 22:22
IPTV на XBMC + спутниковое Roha Поддержка платформы Linux \ Live 33 28.02.2012 11:12


Текущее время: 20:04. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.