const //Parse results prError = 0; prFinished = 1; prList = 2; prListImage = 3; prDownload = 4; //Credits types ctActors = 0; ctDirectors = 1; ctWriters = 2; ctComposers = 3; ctProducers = 4; //Script data SCRIPT_VERSION = '0.1'; SCRIPT_NAME = 'DMM (Anime info.) [JP]'; SCRIPT_DESC = '[JP] Get anime information from dmm.co.jp'; SCRIPT_LANG = $11; //Japanese SCRIPT_TYPE = 0; //Movies CODE_PAGE = 20932; //EUC-JP RATING_NAME = 'Avg'; BASE_URL = 'http://unblockdmm.com'; SEARCH_STR = BASE_URL +'/browse.php?u=http%3A%2F%2Fwww.dmm.co.jp%2Fsearch%2F%3D%2Fsearchstr%3D%s%2Fsort%3Ddate%2Fview%3D%2F&b=0&f=norefer'; //also include VOD and Blu-ray (lots of duplicate search results) //SEARCH_STR = BASE_URL +'/allsearch/search?q=%s'; var ParsingMovie: Boolean; PosterURL: string; ScreenshotsURL: string; function GetScriptVersion: string; begin Result := SCRIPT_VERSION; end; function GetScriptName: string; begin Result := SCRIPT_NAME; end; function GetScriptDesc: string; begin Result := SCRIPT_DESC; end; function GetRatingName: string; begin Result := RATING_NAME; end; function GetScriptLang: Cardinal; begin Result := SCRIPT_LANG; end; function GetCodePage: Cardinal; begin Result := CODE_PAGE; end; function GetBaseURL: AnsiString; begin Result := BASE_URL; end; function GetDownloadURL: AnsiString; begin if PosterURL <> '' then Result := PosterURL else Result := SEARCH_STR; LogMessage(SEARCH_STR); end; function GetScriptType: Byte; begin Result := SCRIPT_TYPE; end; function GetCurrentMode: Byte; begin if ParsingMovie then Result := 1 else Result := 0; end; function HTMLValue(HTML: string; StartPos, EndPos: Integer; StartValue, EndValue: string): string; var ValueStart, ValueEnd: Integer; begin ValueStart := PosFrom(StartValue, HTML, StartPos); if (ValueStart > 0) and ((ValueStart < EndPos) or (EndPos = 0)) then begin ValueStart := ValueStart + Length(StartValue); ValueEnd := PosFrom(EndValue, HTML, ValueStart); Result := Trim(HTMLToText(RemoveTags(Copy(HTML, ValueStart, ValueEnd - ValueStart), True))); end else Result := ''; end; procedure AddHTMLValue(HTML, Field: string; StartPos, EndPos: Integer; StartValue, EndValue: string); var Value: string; begin Value := HTMLValue(HTML, StartPos, EndPos, StartValue, EndValue); if Value <> '' then begin LogMessage(Field +': '+ Value); AddFieldValueXML(Field, Value); end else LogMessage(Field +' not found'); end; procedure ParseMovie(URL, HTML: string); var CastURL, Cast, Genre, Year, Rdate, mLength, mRating: string; StartPos, EndPos: Integer; begin AddFieldValueXML('url', URL); //Poster StartPos := Pos('
', '<'); end else LogMessage('tagline/description not found'); //Series add to writer item StartPos := Pos('
', HTML); while ItemStart > 0 do begin ItemEnd := PosFrom('
', HTML, ItemStart+1);
URL := BASE_URL + HTMLValue(HTML, ItemStart, ItemEnd, '', HTML) > 0 then
begin
LogMessage('movies found');
ParseSearchResults(HTML);
Result := prList;
end
// If no movies are found
else if Pos(' ', HTML) > 0 then
begin
LogMessage('No movie found');
Result := prError;
end
// If page contains a movie
else if Pos('