
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) или почему он уже долгое время не выходит на связь? Может ему помощь нужна какая?