[REL] [PL] FilmWeb.pl 3.0 - The Best Polish Script
upst pozostałość po testach:domi wrote:Duplikator ustawiony na 1 nie dopisuje pozycji do pliku Filmy.adb, a co za tym idzie nie oznacza zdublowanych pozycji.
Poprawna linijka
Code: Select all
if (GetOption('Duplikator') > 0) then duplikaty(TextBetween(Page.Text, '"filmId",', ')'));
Witajcie, dopisałem parę linijek skryptu (bazując na kodzie Ariell'a dotyczącego opisu), który umożliwia pobranie opisu, najczęściej bardzo krótkiego z karty Forum filmu tylko w przypadku gdy nie ma innych opisów (redakcji, użytkowników). Pobiera post z tytułem określonym w Linetmp, czasami tam są (tak jest w przypadku filmu Ak-eui yeon-dae-gi z 2014 roku). Jak ktoś będzie chciał to proszę uprzejmie, oto on:Trzeba jeszcze wstawić linijkę forum filmuWiem, że to nie jest doskonałe (może Ariell jak będzie miał chwilkę czasu i zechce to zerknie i poprawi, chodzi o Linetmp, czy da się zrobić to inaczej, niż tylko dopisywanie tytułu posta) ale jak na razie ta procedura spełnia moje oczekiwania w przypadku braku opisu redakcji lub użytkowników. Pozdrawiam wszystkich.
P.S. Dodałem zmienną PageTmp, bo czasami wartość Value nie była poprawna.
Code: Select all
procedure AnalizeFilmDiscussionPage(Address : String);
var
Line, PageTmp, Linetmp, Value : String;
Page : TStringList;
begin
Page := TStringList.Create;
Page.Text := UTF8Decode(GetPage(Address));
Line := TextBetween(Page.Text, 'class="topics-list"', 'filmSubpageMenu'); // + 'filmSubpageMenu';
while (Pos('<h3 class="s-16">', Line) > 0) do
begin
PageTmp := 'http://www.filmweb.pl' + TextBetween(Line, '<h3 class="s-16"><a href="/film', '"');
Linetmp := TextBetween(PageTmp, '/discussion/', ',');
if (Linetmp = 'Opis') or (Linetmp = 'Opis...') or (Linetmp = 'OPIS') or (Linetmp = 'Opis filmu') or (Linetmp = 'Info') or (Linetmp = 'info') Then
begin
Page.Text := UTF8Decode(GetPage(PageTmp));
Value := TextBetween(Page.Text, 'firstPost', 'class="plusPanel');
Value := TextBetween(Value, '<p class="text">', '</p');
Value := StringReplace(Value, '<br>', '');
CorrectTextError(Value);
UniToPol(Value);
HTMLRemoveTags(Value); //Value := Trim(Value);
end;
Line := Copy(Line, Pos('</p', Line) + Length('</p'), Length(Line));
end;
if Value<>'' then
SetField(fieldDescription, Trim(Value));
Page.Free;
end;
Code: Select all
// Opis
if (not ((GetOption('Aktualizacja') = 2) and (GetField(fieldDescription)<>''))) then AnalyzeFilmDescriptionsPage(Address + '/descs');
//forum filmu
if GetField(fieldDescription)='' then AnalizeFilmDiscussionPage(Address + '/discussion');
// Komentarze
P.S. Dodałem zmienną PageTmp, bo czasami wartość Value nie była poprawna.
athe wrote:Witajcie, dopisałem parę linijek skryptu (bazując na kodzie Ariell'a dotyczącego opisu), który umożliwia pobranie opisu, najczęściej bardzo krótkiego z karty Forum filmu tylko w przypadku gdy nie ma innych opisów (redakcji, użytkowników). Pobiera post z tytułem określonym w Linetmp, czasami tam są (tak jest w przypadku filmu Ak-eui yeon-dae-gi z 2014 roku). Jak ktoś będzie chciał to proszę uprzejmie, oto on:Trzeba jeszcze wstawić linijkę forum filmuCode: Select all
procedure AnalizeFilmDiscussionPage(Address : String); var Line, PageTmp, Linetmp, Value : String; Page : TStringList; begin Page := TStringList.Create; Page.Text := UTF8Decode(GetPage(Address)); Line := TextBetween(Page.Text, 'class="topics-list"', 'filmSubpageMenu'); // + 'filmSubpageMenu'; while (Pos('<h3 class="s-16">', Line) > 0) do begin PageTmp := 'http://www.filmweb.pl' + TextBetween(Line, '<h3 class="s-16"><a href="/film', '"'); Linetmp := TextBetween(PageTmp, '/discussion/', ','); if ((Linetmp = 'Opis') or (Linetmp = 'Opis...') or (Linetmp = 'OPIS') or (Linetmp = 'Opis filmu') or (Linetmp = 'Info') or (Linetmp = 'info')) Then // obejmuj nawiasami cały warunek. A lepiej zastąpić to wyrażeniem regularnym. begin Page.Text := UTF8Decode(GetPage(PageTmp)); Value := TextBetween(Page.Text, 'firstPost', 'class="plusPanel'); Value := TextBetween(Value, '<p class="text">', '</p'); Value := StringReplace(Value, '<br>', ''); CorrectTextError(Value); UniToPol(Value); HTMLRemoveTags(Value); //Value := Trim(Value); end; Line := Copy(Line, Pos('</p', Line) + Length('</p'), Length(Line)); end; if Value<>'' then SetField(fieldDescription, Trim(Value)); Page.Free; end;
Wiem, że to nie jest doskonałe (może Ariell jak będzie miał chwilkę czasu i zechce to zerknie i poprawi, chodzi o Linetmp, czy da się zrobić to inaczej, niż tylko dopisywanie tytułu posta) ale jak na razie ta procedura spełnia moje oczekiwania w przypadku braku opisu redakcji lub użytkowników. Pozdrawiam wszystkich.Code: Select all
// Opis if (not ((GetOption('Aktualizacja') = 2) and (GetField(fieldDescription)<>''))) then AnalyzeFilmDescriptionsPage(Address + '/descs'); //forum filmu if GetField(fieldDescription)='' then AnalizeFilmDiscussionPage(Address + '/discussion'); // Komentarze
P.S. Dodałem zmienną PageTmp, bo czasami wartość Value nie była poprawna.
@ Ariell
Tak sobie aktualizuje ostatnio filmy i stwierdzam że czegoś mi brakuje...
Może udałoby się dorzucić jeszcze jedno coustomowe pole z datą, a w nim dzień aktualizacji filmu (pobierania skryptu)
Dzięki temu można uaktualnić najstarsze pozycje - np. ocene filmu, tak by mieć zawsze aktualne dane i wiedzieć kiedy dany film był aktualizowany
Tak sobie aktualizuje ostatnio filmy i stwierdzam że czegoś mi brakuje...
Może udałoby się dorzucić jeszcze jedno coustomowe pole z datą, a w nim dzień aktualizacji filmu (pobierania skryptu)
Dzięki temu można uaktualnić najstarsze pozycje - np. ocene filmu, tak by mieć zawsze aktualne dane i wiedzieć kiedy dany film był aktualizowany
Dobry pomysł.Yogi_18 wrote:@ Ariell
Tak sobie aktualizuje ostatnio filmy i stwierdzam że czegoś mi brakuje...
Może udałoby się dorzucić jeszcze jedno coustomowe pole z datą, a w nim dzień aktualizacji filmu (pobierania skryptu)
Dzięki temu można uaktualnić najstarsze pozycje - np. ocene filmu, tak by mieć zawsze aktualne dane i wiedzieć kiedy dany film był aktualizowany
i już dodane do następnej alfy.
Ale najpierw nauczę go pobierać zdjęcia aktorów z katalogu Aktorzy ze skryptu MoveExtras.
to też już w alfie.
Teraz centralna baza zdjęć dla kilku katalogów.
Last edited by Ariell on 2017-04-06 10:08:27, edited 4 times in total.
Panowie pytanie...
Grzebie sobie cały czas przy pliku... i jak to wiadomo uczymy się na błędach...
Mając 1 plik zapisywałem sobie raz w miesiącu pod nową nazwą pliku: np "Filmoteka marzec 2017"...
Mając zdjęcia aktorów, plakatów i całość trzymana jest na zewnątrz pliku - takie zapisywanie mija się z celem, chciałem zmienić nazwę po prostu na "Filmoteka", niestety widzę dwa problemy...
Czas zapisywania takiego spisu to "kilka" godzin, wczorajszy test zaczął się o 19:21, a patrząc na czas utworzenia ostatniego pliku to 1:00 w nocy.
Druga to ilość plików? mój podstawowy "catalog" ma 130 320 plików, a po zapisie na nowo ma "tylko" 128 611 plików.... brakuje 1 709 plików i nie mogę załapać skąd ta rozbieżność...
Mieliście takie problemy...
Idzie przyśpieszyć zapis pod "nową nazwą"?
Wiecie skąd ta rozbieżność w ilości plików?
Grzebie sobie cały czas przy pliku... i jak to wiadomo uczymy się na błędach...
Mając 1 plik zapisywałem sobie raz w miesiącu pod nową nazwą pliku: np "Filmoteka marzec 2017"...
Mając zdjęcia aktorów, plakatów i całość trzymana jest na zewnątrz pliku - takie zapisywanie mija się z celem, chciałem zmienić nazwę po prostu na "Filmoteka", niestety widzę dwa problemy...
Czas zapisywania takiego spisu to "kilka" godzin, wczorajszy test zaczął się o 19:21, a patrząc na czas utworzenia ostatniego pliku to 1:00 w nocy.
Druga to ilość plików? mój podstawowy "catalog" ma 130 320 plików, a po zapisie na nowo ma "tylko" 128 611 plików.... brakuje 1 709 plików i nie mogę załapać skąd ta rozbieżność...
Mieliście takie problemy...
Idzie przyśpieszyć zapis pod "nową nazwą"?
Wiecie skąd ta rozbieżność w ilości plików?
Odnośnie pierwszego to ja robię to samo ale zanim zapiszę bazę Narzędzia > Zarządzanie obrazkami > Przekształć na połączenie absolutne.Yogi_18 wrote:Panowie pytanie...
Grzebie sobie cały czas przy pliku... i jak to wiadomo uczymy się na błędach...
Mając 1 plik zapisywałem sobie raz w miesiącu pod nową nazwą pliku: np "Filmoteka marzec 2017"...
Mając zdjęcia aktorów, plakatów i całość trzymana jest na zewnątrz pliku - takie zapisywanie mija się z celem, chciałem zmienić nazwę po prostu na "Filmoteka", niestety widzę dwa problemy...
Czas zapisywania takiego spisu to "kilka" godzin, wczorajszy test zaczął się o 19:21, a patrząc na czas utworzenia ostatniego pliku to 1:00 w nocy.
Druga to ilość plików? mój podstawowy "catalog" ma 130 320 plików, a po zapisie na nowo ma "tylko" 128 611 plików.... brakuje 1 709 plików i nie mogę załapać skąd ta rozbieżność...
Mieliście takie problemy...
Idzie przyśpieszyć zapis pod "nową nazwą"?
Wiecie skąd ta rozbieżność w ilości plików?
I podczas eksportu bazy zapisuje mi tylko bazę danych a pliki ma w starym katalogu. Oszczędność miejsca i czasu.
P.S. Ja mam MoveExtras 1.1.Alpha gdzie dodałem kilka opcji odnośnie zarządzania obrazkami i aktorami z wielu baz. Nie pamiętam czy 1.0 to potrafił.
Różnice w ilości plików to dziwna sprawa ale może być tak:
- Kopię trzymasz na dysku online i masz włączoną synchronizację automatyczną. podczas tworzenia bazy zmieniłeś kilka plików lub po prostu zostały przez skrypt usunięte bo je zmieniono natomiast twoja chmurka je przywróciła.
- Move Extras jak i filmweb.pl 3.0 nie może pracować stabilnie gdy pracujesz na katalogu który jakaś chmura automatycznie synchronizuje wtedy wszystko się wali.
Jeszcze nie
W tej wersji chcę połączyć MoveExtras z filmwebem tak by mogły ze sobą współpracować.
MoveExtras dostał też kilka nowych opcji VVV.
picture hosting
Ręczne dodanie daty aktualizacji:
Code: Select all
var
MovieName, MAddress, URL, ExtrasS, Tests, StrSep : String;
AUpdate, Ej,ACount : Integer;
SearchAddresses, Extras, preparexml, ActorsLS : TStringList;
Code: Select all
var
MovieName, MAddress, URL, ExtrasS, Tests, StrSep : String;
YY,MM,DD : Word;
AUpdate, Ej,ACount : Integer;
SearchAddresses, Extras, preparexml, ActorsLS : TStringList;
Code: Select all
if URL = '' then AUpdate := 0;
case AUpdate of
Code: Select all
if URL = '' then AUpdate := 0;
DeCodeDate (Date,YY,MM,DD);
SetCustomField('DataAktualizacji',InttoStr(YY) + '-' + InttoStr(MM) + '-' + InttoStr(DD));
case AUpdate of
Plus dodatkowe pole typu data o nazwie "DataAktualizacji".
Proste?
Prace idą powoli bo trzeba dużo zmienić począwszy od lokalizacji plików z bazami po dodanie nowych dla spójności. Jak dobrze poszukacie na forum to zamieściłem gdzieś link do alfathe wrote:Witam, Ariell, jak sytuacja z MoveExtras? Teraz idą święta, na pewno będzie przerwa. Możemy spodziewać się nowości na początku maja?
Dziś będę życzył wszystkim i Tobie spokojnych Świąt Wielkanocnych, smacznego jajka. Wszystkiego dobrego!
obecnie zakończono:
-wspólna baza aktorów (filmweb pobiera dane z Move Extras).
-Przeniesienie obrazków do wspólnego katalogu. Lokalizacja dowolna nawet na innym dysku (tego nie ma w udostępnionej alfie tylko katalog w podkatalogu z bazą(ami)). (trwa tworzenie bazy danych plików okładek i plakatów).
Jedyny minus to to że jak usuniemy film lub plik to w zewnętrznym katalogu okładki zostają ale ma to załatwić dodatkowy skrypcik. Alpha już jest.
Jakby ktoś chciał sprawdzić co się dzieje to tutaj są obecne alf-y (mało stabilne jeszcze ale działają) www89.zippyshare.com/v/zbddbrWP/file.html
I również życzę wszystkim zdrowych i pogodnych Świąt Wielkanocnych oraz mokrego Dyngusa.