Skrypt do tworzenia kanałów RSS. Wykorzystuje REST API Allegro (WebAPI ma zostać wygaszone - dotychczasowe rozwiązania z którymi się spotkałem opierają się na starym rozwiązaniu).
Stworzone na podstawie php-allegro-rest-api użytkownika @Wiatrogon oraz wykorzystuje rozwiązania (i sporą część instrukcji :)) projektu alleRSS od @iskuzik
Skrypt używa publicznej metody GET offers/listing, tak więc nadaje się to do wykorzystania w generowaniu kanału RSS - część zasobów np. wymaga autoryzacji użytkownika. Jest to duża zmiana w stosunku do WebAPI. W tym przypadku do działania jest potrzebny clientID oraz clientSecret dla DeviceFlow (o tym poniżej)
Mimo wszystko rozwiązanie nie jest tak dobre jak oryginalny generator RSS od allegro (wygaszony w marcu 2018) - więcej o tym w uwagach
- Pobieramy skrypt
- Dodajemy do pliku
index.php
nasze dane do REST API - (o tym jak wygenerować clientID oraz clientSecret można przeczytać tutaj - Zmodyfikowany skrypt wysyłamy na własny serwer, bądź na nasz lokalny serwer z obsługą PHP
- Tworzymy link do kanału RSS (więcej o tym niżej)
- Sprawdzamy poprawność naszego linku w przeglądarce
- Dodajemy link do naszego czytnika kanałów RSS
Link do kanału RSS tworzymy poprzez podanie adresu serwera na jaki wysłaliśmy skrypt, a następnie podaniu ścieżki do skryptu. Przykładowo, gdy wysłaliśmy skrypt do głównego katalogu serwera, to podstawowym adresem kanału RSS będzie:
http://www.naszadomena.pl/index.php?
Do takiego adresu dodajemy kolejne parametry. Przed każdym kolejnym parametrem dodajemy znak &
. Poniżej podałem kilka przykładowe linki do kanałów z wykorzystaniem parametrów.
Użycie jednego z poniższych parametrów jest wymagane, żeby wyświetlić jakiekolwiek oferty. Oczywiście możemy wykorzystać też dwa z tych parametrów jednocześnie.
W parametrze string
określamy frazę, która będzie wyszukiwana w tytułach ofert. Jeśli składa się ona z kilku wyrazów, spacje zamieniamy na znak +
. Przykładowo:
string=szukany+przedmiot
W parametrze categoryId
możemy podać ID kategorii, z której chcemy wyświetlać oferty. Przykładowo:
categoryId=348
Niestety aktualnie ID kategorii musimy wyszukać ręcznie wchodząc do wybranej kategorii, np. Akcesoria GSM. Tam w pasku adresu, po nazwie kategorii mozemy znaleźć numer, który jest właśnie ID kategorii.
W tym parametrze możemy podać słowa, które nie mają znajdować się w wyświetlonych ofertach. Dzięki temu pozbędziemy się podobnych ofert do tej, której szukamy. Może nam to oszczędzić wiele czasu na sprawdzanie ofert, którymi na pewno nie jesteśmy zainteresowani. Kolejne słowa możemy podawać ze znakiem +
, przykładowo:
exclude=ram+cpu+gpu
Parametr description
określa, czy oprócz szukania naszej frazy w tytułach, chcemy jej też szukać w opisach i parametrach ofert. Jeśli chcemy rozszerzyć wyszukiwanie, to dodajemy parametr:
description=1
Parametr ten określa id sprzedawcy w którego przedmiotach chcemy wyszukiwać oferty. Wartość parametru można pobrać z linka karty ocen konkretnego sprzedawcy. Będzie miał on formę https://allegro.pl/uzytkownik/ID_SPRZEDAWCY/oceny
sellerId=22609257
closed=1
W parametrze priceFrom
możemy określić minimalną cenę, od której powinny zaczynać się oferty. Możemy w nim podawać liczby całkowite, np. 1000
, jak i zmiennoprzecinkowe, np. 999.99
. Przykładowo:
priceFrom=150.50
W parametrze priceTo
możemy określić maksymalną cenę w jakiej wyświetlane będą oferty. Możemy w nim podawać liczby całkowite, np. 1000
, jak i zmiennoprzecinkowe, np. 999.99
. Przykładowo:
priceTo=300
W parametrze offerType
możemy sprecyzować typy ofert, które będą dostarczane dla nas w kanale. Domyślnie wyświetlane są wszystkie typy ofert (ogłoszenia, licytacje i oferty kup teraz). Dodając ten parametr, możemy wyświetlić jedynie aukcje (auction
) lub oferty kup teraz (buyNow
). Przykładowo:
offerType=1
offerType=2
offerType=3
W parametrze offerCondition
możemy ustawić, że interesują nas tylko konkretny stan przedmiotu. Podobnie jak w innych parametrach - do linku z kanałem dodajemy nazwę parametru z jedną z wartości poniżej.
offerCondition=1
offerCondition=2
Work in progress...
Work in progress...
- Najprostszy kanał RSS z wykorzystaniem jedynie parametru
string
http://www.naszadomena.pl/alleRSS.php?string=szukany+przedmiot
- Kanał wykorzystujący większość dostepnych parametrów jednocześnie
http://www.naszadomena.pl/alleRSS.php?string=szukany+przedmiot&exclude=pomin+slowa&categoryId=348&priceTo=400
- Nie jestem programistą PHP, dlatego skrypt może nie być napisany idealnie, niektóre założenia mogą być dyskusyjne dla profesjonalistów. Każdy zawsze może zrobić forka ;)
- Podobnie jak w WebAPI skrypt najpierw pobiera promowane oferty (w tytule pojawia się znacznik
(PROMOWANE)
). - Niestety, ale skrypt na ten moment nie jest tak dopracowany jak oryginalny alleRSS. Tutaj brakuje sporej części opcji filtrowania. Jest to do odtworzenia, ale potrzebuję trochę czasu. Jakiekolwiek problemy/sugestie proszę zgłaszać przez Issues.
- Zarówno stare WebAPI jak i REST API nie zwracają informacji o czasie rozpoczęcia aukcji - czasami czytnik RSS zwraca zdublowane wpisy. Mam na to rozwiązanie, które będzie wymagało używania bazy danych MySQL.
- Pamiętajmy o limicie przydzielonym dla każdego klucza REST API: 9000 zapytań na minutę oraz limicie dla IP: 120 zapytań na sekundę.
- dodanie większej ilości możliwych filtrów
- dodanie dat publikacji aukcji w oparciu o MySQL
- konwersja kanału z RSS 2.0 na Atom
MIT