Dune Flash Interface
#5161
Отправлено 21 August 2013 - 12:45
#5162
Отправлено 22 August 2013 - 14:53
Купил DFI 2, но присланный ключ не выводит программу из демо режима. Делаю, как мне написали, копирую ключ в папку флеша, который у меня сформирован на NAS. Кто-нибудь сталкивался с такой проблемой?
На ответное письмо никто не отвечает, на форуме поддержи http://forum.dfi-mc.ru/index.php даже мое сообщение не опубликовали, не то что ответили. Поддержка вообще есть, или только деньги собирают?
#5163
Отправлено 22 August 2013 - 22:44
Забросьте lic в C:\Program Files (x86)\Dune Flash Interface 2\flash и на NAS в папку с DFI, в ней файлы идентичные с C:\Program Files (x86)\Dune Flash Interface 2\flash.Добрый день!
Купил DFI 2, но присланный ключ не выводит программу из демо режима. Делаю, как мне написали, копирую ключ в папку флеша, который у меня сформирован на NAS. Кто-нибудь сталкивался с такой проблемой?
На ответное письмо никто не отвечает, на форуме поддержи http://forum.dfi-mc.ru/index.php даже мое сообщение не опубликовали, не то что ответили. Поддержка вообще есть, или только деньги собирают?
Dune HD TV-303D (190919_0242_R11) Сист.флешка присутствует 2Gb + Panasonic TX-PR50VT30
Apple TV4k + LG OLED65C7V
#5164
Отправлено 23 August 2013 - 11:07
#5165
Отправлено 23 August 2013 - 20:58
Gavr7
Спасибо, что откликнулись. Ничего не помогло
#5166
Отправлено 27 August 2013 - 11:42
#5167
Отправлено 29 August 2013 - 23:41
Недавно приобрел версию 2.0.
Заменил 2 скрипта: информация (пробовал с сайта поддержки и от пользователя RST) и награды
С ходу видно, что жанр и страна с кинопоиска не обновляются (зато тянутся с tmdb).
Где и что надо поменять, чтобы всё корректно работало?
Заранее спасибо!
Публикую дубль сообщения с официального форума, поскольку там оно всё ещё висит в модерации и по опыту может провисеть очень долго:
К сожалению, не владею языком, на котором написан этот скрипт. Даже не могу его опознать. В частности, не очень понимаю, как работает функция ParrseString() в этом скрипте.
Однако по аналогии для примера попробовал исправление по странам.
Нужно после строки
if (Country = '') then Country:= ParseString(HTMLAnswer, '<a href="/lists/m_act%5Bcountry%5D/\d+/" >([^<]+)</a>');вставить вот этот код:
if (Country = '') then begin
j:= Pos('<td class="type">страна</td>', HTMLAnswer);
HTMLAnswer:= Copy(HTMLAnswer, j, Length(HTMLAnswer));
j:= Pos('<a href="/lists/m_act%5Bcountry', HTMLAnswer);
HTMLAnswer:= Copy(HTMLAnswer, j, Length(HTMLAnswer));
j:= Pos('</td>', HTMLAnswer);
HTMLAnswer:= Copy(HTMLAnswer, 0, j);
Country := ParseString(HTMLAnswer, '<a href="/lists/m_act%5Bcountry%5D/\d+/">([^<]+)</a>');
end;
#5168
Отправлено 30 August 2013 - 01:51
После строки
if Genre = '' then Genre:= ParseString(HTMLAnswer, '<a href="/lists/m_act%5Bgenre%5D/\d+/" >([^<]+)</a>');
нужно добавить почти такую же (разница всего в один пробел):
if Genre = '' then Genre:= ParseString(HTMLAnswer, '<a href="/lists/m_act%5Bgenre%5D/\d+/">([^<]+)</a>');
#5169
Отправлено 30 August 2013 - 02:40
Перестала тянуться инфа по наградам с кинопоиска... У всех так? (v.2)
Здесь от Rti
Тоже перестал работать, опять поменяли на Кинопоиске.
Исправление зависло на официальном форуме в премодерации.
В скрипте везде вместо
'<font style="color: #f60">'нужно поставить
'style="color: #f60">'
#5170
Отправлено 30 August 2013 - 12:19
Спасибо,
вечером опробую
Dune HD TV-303D (190919_0242_R11) Сист.флешка присутствует 2Gb + Panasonic TX-PR50VT30
Apple TV4k + LG OLED65C7V
#5171
Отправлено 30 August 2013 - 19:57
Спасибо! Работает.... Вот полный исправленный скрипт для наград.... (заменить полностью)Тоже перестал работать, опять поменяли на Кинопоиске.
Исправление зависло на официальном форуме в премодерации.
В скрипте везде вместо'<font style="color: #f60">'нужно поставить'style="color: #f60">'
function GetInfoAwards: boolean;
var
Url, HTMLAnswer: String;
AwBlock, Award, AwardName, AwardPeople: String;
i, j, ib, jb, jn: Integer;
begin
Url:= 'http://www.kinopoisk.ru/film/'+MovieCode+'/awards/';
HTMLAnswer := DownloadPage_RUS(Url);
Result:= true;
if HTMLAnswer = '' then begin
Result:= false;
Exit;
end;
ParseAwards(HTMLAnswer, 'oscar');
ParseAwards(HTMLAnswer, 'golden_globes');
ParseAwards(HTMLAnswer, 'bafta');
ParseAwards(HTMLAnswer, 'mtv');
ParseAwards(HTMLAnswer, 'cannes');
ParseAwards(HTMLAnswer, 'saturn');
ParseAwards(HTMLAnswer, 'cesar');
ParseAwards(HTMLAnswer, 'berlin');
ParseAwards(HTMLAnswer, 'razzie');
ParseAwards(HTMLAnswer, 'venice');
ParseAwards(HTMLAnswer, 'georges');
ParseAwards(HTMLAnswer, 'efa');
ParseAwards(HTMLAnswer, 'emmy');
ParseAwards(HTMLAnswer, 'goya');
ParseAwards(HTMLAnswer, 'nika');
ParseAwards(HTMLAnswer, 'orel');
ParseAwards(HTMLAnswer, 'sundance');
ParseAwards(HTMLAnswer, 'sanseb');
ParseAwards(HTMLAnswer, 'asian');
ParseAwards(HTMLAnswer, 'karlovy_vary');
ParseAwards(HTMLAnswer, 'kinotavr');
ParseAwards(HTMLAnswer, 'miff');
ParseAwards(HTMLAnswer, 'mtv_russia');
end;
procedure ParseAwards(HTMLAnswer, AwardsType: string);
var
AwBlock, Award, AwardName, WinName, WinPeople: String;
i, j, ib, jb, jn: Integer;
begin
i:= Pos('<a href="/awards/'+AwardsType+'/', HTMLAnswer);
if i > 0 then
begin
AwBlock:= Copy(HTMLAnswer, i, Length(HTMLAnswer) - i);
j:= Pos('</table>', AwBlock);
AwBlock:= Copy(AwBlock, 0, j);
AwardName:= ParseString(AwBlock, '<a href="/awards/'+AwardsType+'/\d+/" class="all">([^<]+), \d+ год</a>');
ib:= Pos('<li class="trivia">', AwBlock);
while ib > 0 do begin
AwBlock:= Copy(AwBlock, ib + Length('<li class="trivia">'), Length(AwBlock));
jb:= Pos('style="color: #f60">', AwBlock);
if jb > 0 then
begin
AwBlock:= Copy(AwBlock, jb + Length('style="color: #f60">'), Length(AwBlock) - jb - Length('style="color: #f60">'));
jb:= Pos('</li>', AwBlock);
WinName:= Trim(Copy(AwBlock, 0, jb-1));
jn:= Pos('class="all">', WinName);
if jn > 0 then begin
WinPeople:= Copy(WinName, jn + Length('class="all">'), Length(WinName));
WinPeople:= Copy(WinPeople, 0, Pos('</a>', WinPeople)-1);
end else WinPeople:= '';
jb:= Pos('</font>', WinName);
if jb > 0 then WinName:= Trim(Copy(WinName, 0, jb-1));
jb:= Pos('(<a href', WinName);
if jb > 0 then WinName:= Trim(Copy(WinName, 0, jb-1));
// AwardName, WinName, WinPeople, AwardsType
//ShowMessage('AwardName:' + AwardName + ',WinName:' + WinName + ',WinPeople:' + WinPeople + ',AwardsType:' + AwardsType);
SetScriptResult('awards', VarArrayOf([AwardName, WinName, WinPeople, AwardsType]));
end;
ib:= Pos('<li class="trivia">', AwBlock);
end;
end;
end;
begin
//
end.
#5172
Отправлено 30 August 2013 - 20:18
А с жанрами ещё проще.
После строки
if Genre = '' then Genre:= ParseString(HTMLAnswer, '<a href="/lists/m_act%5Bgenre%5D/\d+/" >([^<]+)</a>');
нужно добавить почти такую же (разница всего в один пробел):
if Genre = '' then Genre:= ParseString(HTMLAnswer, '<a href="/lists/m_act%5Bgenre%5D/\d+/">([^<]+)</a>');
Спасибо! Здесь можно сделать всё проще, по Вашей анологии, просто в той строчке удалить этот пробел и в жанрах и в стране (ничего не добавляя), проверил, работает... вот код, заменить полностью скрипт "информация"
function GetInfo(LoadPeoples:boolean): boolean;
var
Url, HTMLAnswer: String;
Title, OrigTitle, Year, Time, Descr, Slogan,
MPAA, Age, Rating, RatingIMDB, Money: String;
Genre, Country, Studio: String;
StrList: TStringList;
i, j: Integer;
begin
Url:= 'http://www.kinopoisk.ru/level/1/film/'+MovieCode+'/';
HTMLAnswer := DownloadPage_RUS(Url);
Result:= true;
if HTMLAnswer = '' then begin
Result:= false;
Exit;
end;
HTMLAnswer:= ReplaceStr(HTMLAnswer, #13#10, ' ');
StrList:= TStringList.Create;
try
Title:= ParseString(HTMLAnswer, '<title>([^<]+)</title>');
//OrigTitle:= ParseString(HTMLAnswer, '<span style="color: #666; font-size: 13px" itemprop="alternativeHeadline">([^<]+)</span>');
OrigTitle:= ParseString(HTMLAnswer, '<span itemprop="alternativeHeadline">([^<]+)</span>');
if OrigTitle = '' then OrigTitle:= Title;
Slogan:= ParseString(HTMLAnswer, '<td style="color: #555">([^<]+)</td>');
Descr:= ParseString(HTMLAnswer, '<span class="_reachbanner_">[\t\n]*(.*?)[\t\n]*</span>');
Time:= ParseString(HTMLAnswer, '<td class="time" id="runtime">(\d+) мин.');
Year:= ParseString(HTMLAnswer, '<a href="/lists/m_act%5Byear%5D/\d+/" title="">(\d+)</a>');
MPAA:= ParseString(HTMLAnswer, '<a href="/film/\d+/rn/([^<]+)/">');
Age:= ParseString(HTMLAnswer, '<div class="ageLimit age(\d+)"></div>');
//Rating:= ParseString(HTMLAnswer, 'itemprop="ratingValue".*?<span>([^<]+)</span>');
Rating:= ParseString(HTMLAnswer, 'itemprop="ratingValue" content="([^<]+)"');
if Trim(Rating) = '' then Rating:= '0';
RatingIMDB:= ParseString(HTMLAnswer, 'IMDb: (.*?) ');
if Trim(RatingIMDB) = '' then RatingIMDB:= '0';
Money:= ParseString(HTMLAnswer, '<a href="/film/\d+/box/" title="">([^<]+)</a>');
StrList.Text:= Money;
if StrList.Count > 0 then Money:= Trim(StrList[0]);
if Money = '' then
Money:= Trim(ParseString(HTMLAnswer, '>бюджет</td>.*?<div style="position: relative">([^<]+)</div>'));
// Title, OrigTitle, Year, Time, Descr, Slogan, MPAA, Rating, RatingIMDB, Money, Url, Age
SetScriptResult('moviedescr', VarArrayOf([Title, OrigTitle, Year, Time, Descr, Slogan, MPAA, Rating, RatingIMDB, Money, Url, Age]));
// genres
Genre:= ParseString(HTMLAnswer, '<a href="/lists/m_act%5Bgenre%5D/\d+/">([^<]+)</a>');
StrList.Text:= Genre;
if StrList.Count > 0 then
for i:= 0 to StrList.Count - 1 do
// GenreName
SetScriptResult('genres', VarArrayOf([StrList[i]]));
// countries
Country:= ParseString(HTMLAnswer, '<a href="/lists/m_act%5Bcountry%5D/\d+/">([^<]+)</a>');
StrList.Text:= Country;
if StrList.Count > 0 then
for i:= 0 to StrList.Count - 1 do
// CountryName
SetScriptResult('countries', VarArrayOf([StrList[i]]));
// studios
Url:='http://www.kinopoisk.ru/level/91/film/'+MovieCode+'/';
HTMLAnswer := DownloadPage_RUS(Url);
HTMLAnswer:= ReplaceStr(HTMLAnswer, #13#10, ' ');
j:= Pos('<b>Производство:</b>', HTMLAnswer);
HTMLAnswer:= Copy(HTMLAnswer, j, Length(HTMLAnswer) - j);
j:= Pos('</table>', HTMLAnswer);
HTMLAnswer:= Copy(HTMLAnswer, 0, j);
Studio:= ParseString(HTMLAnswer, '<a href="/lists/m_act%5Bstudio%5D/\d+/" class="all">([^<]+)</a>');
StrList.Text:= Studio;
if StrList.Count > 0 then
for i:= 0 to StrList.Count - 1 do
// StudioName
SetScriptResult('studios', VarArrayOf([StrList[i]]));
finally
StrList.Free;
end;
if LoadPeoples then GetPeopleInfo('http://www.kinopoisk.ru/level/19/film/'+MovieCode+'/', true);
end;
function GetPeopleInfo(Url: String; MainPage: boolean): boolean;
var
HTMLAnswer: String;
splitStr: String;
PeopleTypeList, PeopleList: TStringList;
i, j, tagPos, PeopleCount: Integer;
loadDirectorsCount, loadWritersCount: integer;
Name, OrigName, Character, Num, SmallCover: string;
begin
//Url:= 'http://www.kinopoisk.ru/level/19/film/'+MovieCode+'/';
HTMLAnswer := DownloadPage_RUS(Url);
Result:= true;
if HTMLAnswer = '' then begin
Result:= false;
Exit;
end;
HTMLAnswer:= ReplaceStr(HTMLAnswer, #13#10, ' ');
splitStr:= '<div style="padding-left: 20px; border-bottom: 2px solid #f60; font-size: 16px">';
HTMLAnswer:= ReplaceStr(HTMLAnswer, splitStr, #13#10);
PeopleTypeList:= TStringList.Create;
PeopleList:= TStringList.Create;
try
loadDirectorsCount:= 0; loadWritersCount:= 0;
PeopleTypeList.Text:= HTMLAnswer;
for i:= 1 to PeopleTypeList.Count-1 do begin
PeopleTypeList[i]:= ReplaceStr(PeopleTypeList[i], '<div class="actorInfo"', #13#10);
PeopleList.Text:= PeopleTypeList[i];
// directors
if (Pos('Режиссеры</div>', PeopleTypeList[i]) > 0) or (Pos('Режиссер</div>', PeopleTypeList[i]) > 0) then begin
if PeopleList.Count-1 > DirectorCount then PeopleCount:= DirectorCount else PeopleCount:= PeopleList.Count-1;
for j:= 1 to PeopleCount do begin
Name:= ParseString(PeopleList[j], '<div class="name"><a href="/(?:level/4/people|name)/\d+/">(.*?)</a> <span class="gray">.*?</span></div>.*?<div class="role">.*?</div>');
OrigName:= ParseString(PeopleList[j], '<div class="name"><a href="/(?:level/4/people|name)/\d+/">.*?</a> <span class="gray">(.*?)</span></div>.*?<div class="role">.*?</div>');
Num:= ParseString(PeopleList[j], '<div class="photo"><a href="/(?:level/4/people|name)/(\d+)/">.*?</a> <span class="gray">.*?</span></div>.*?<div class="role">.*?</div>');
//Num:= ParseString(PeopleList[i], 'objId="(\d+)"');
SmallCover:= 'http://st.kinopoisk.ru/images/actor/'+Num+'.jpg';
// Name, OrigName, SmallCover
SetScriptResult('directors', VarArrayOf([Name, OrigName, SmallCover]));
loadDirectorsCount:= loadDirectorsCount + 1;
end;
// actors
end else if (Pos('Актеры</div>', PeopleTypeList[i]) > 0) or (Pos('Актер</div>', PeopleTypeList[i]) > 0) then begin
if PeopleList.Count-1 > ActorCount then PeopleCount:= ActorCount else PeopleCount:= PeopleList.Count-1;
for j:= 1 to PeopleCount do begin
Name:= ParseString(PeopleList[j], '<div class="name"><a href="/(?:level/4/people|name)/\d+/">(.*?)</a> <span class="gray">.*?</span></div>.*?<div class="role">.*?</div>');
OrigName:= ParseString(PeopleList[j], '<div class="name"><a href="/(?:level/4/people|name)/\d+/">.*?</a> <span class="gray">(.*?)</span></div>.*?<div class="role">.*?</div>');
Character:= ParseString(PeopleList[j], '<div class="name"><a href="/(?:level/4/people|name)/\d+/">.*?</a> <span class="gray">.*?</span></div>.*?<div class="role">(.*?)</div>');
Character:= ReplaceStr(Character, '...', '');
tagPos:= Pos('<font', Character);
if tagPos > 0 then Character:= Copy(Character, 0, tagPos - 3);
Num:= ParseString(PeopleList[j], '<div class="name"><a href="/(?:level/4/people|name)/(\d+)/">.*?</a> <span class="gray">.*?</span></div>.*?<div class="role">.*?</div>');
SmallCover:= 'http://st.kinopoisk.ru/images/actor/'+Num+'.jpg';
// Name, OrigName, Character, SmallCover
SetScriptResult('actors', VarArrayOf([Name, OrigName, Character, SmallCover]));
end;
// writers
end else if (Pos('Сценаристы</div>', PeopleTypeList[i]) > 0) or (Pos('Сценарист</div>', PeopleTypeList[i]) > 0) then begin
if PeopleList.Count-1 > WriterCount then PeopleCount:= WriterCount else PeopleCount:= PeopleList.Count-1;
for j:= 1 to PeopleCount do begin
Name:= ParseString(PeopleList[j], '<div class="name"><a href="/(?:level/4/people|name)/\d+/">(.*?)</a> <span class="gray">.*?</span></div>.*?<div class="role">.*?</div>');
// Name
SetScriptResult('writers', VarArrayOf([Name]));
loadWritersCount:= loadWritersCount + 1;
end;
end;
end;
if MainPage and (loadDirectorsCount = 0) then GetPeopleInfo('http://www.kinopoisk.ru/film/'+MovieCode+'/cast/who_is/director/', false);
if MainPage and (loadWritersCount = 0) then GetPeopleInfo('http://www.kinopoisk.ru/film/'+MovieCode+'/cast/who_is/writer/', false);
finally
PeopleTypeList.Free;
PeopleList.Free;
end;
end;
begin
//
end.
#5173
Отправлено 02 September 2013 - 12:37
#5174
Отправлено 03 September 2013 - 15:59
#5175
Отправлено 03 September 2013 - 18:44
hirurg, страны стали выводиться по-русски. Как сделать, чтобы они выводились по-английски, как было ранее
Страны ВСЕГДА выводились на русском с кинопоиска...
На инглише выводились только если поиск указать с http://www.themoviedb.org/
#5176
Отправлено 12 September 2013 - 10:30
#5177
Отправлено 19 September 2013 - 16:17
#5178
Отправлено 19 September 2013 - 21:37
не работает поиск фильма на http://www.themoviedb.org/ через программу. фанарт и обложки не тянет...
Это потому, что themoviedb изменила их API в новой версии.
Теперь все программы, которые использует themoviedb должны обновить свои программы ... Yadis; Zappity; DFI и т.д.
Dune BD Prime 3.0 ; Dune HD TV-301 ; Dune HD Pro 4K (tv292a)
#5179
Отправлено 20 September 2013 - 22:32
Это потому, что themoviedb изменила их API в новой версии.
Теперь все программы, которые использует themoviedb должны обновить свои программы ... Yadis; Zappity; DFI и т.д.
И чё делать? Фирсов молчит, форум по DFI мертв. За что платил? Работает все хуже и хуже. Фанарт вручную приходится делать.
#5180
Отправлено 23 September 2013 - 01:07
Други, у вас есть информация, куда пропал Виталий Фирсов (fet75) или почему он уже долгое время не выходит на связь? Может ему помощь нужна какая?









