WebOOB -> Woob
This commit is contained in:
parent
9a532c0da1
commit
9b6407db05
1
.gitignore
vendored
1
.gitignore
vendored
@ -10,5 +10,4 @@ data/
|
|||||||
doc/_build
|
doc/_build
|
||||||
data_rework/
|
data_rework/
|
||||||
.env
|
.env
|
||||||
weboob
|
|
||||||
.htpasswd
|
.htpasswd
|
||||||
|
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"cSpell.words": [
|
"cSpell.words": [
|
||||||
"Weboob",
|
"woob",
|
||||||
"flatisfy"
|
"flatisfy"
|
||||||
],
|
],
|
||||||
"sqltools.useNodeRuntime": true,
|
"sqltools.useNodeRuntime": true,
|
||||||
|
@ -53,9 +53,9 @@ locale.
|
|||||||
Thanks!
|
Thanks!
|
||||||
|
|
||||||
|
|
||||||
## Adding support for a new Weboob backend
|
## Adding support for a new Woob backend
|
||||||
|
|
||||||
To enable a new Weboob `CapHousing` backend in Flatisfy, you should add it to
|
To enable a new Woob `CapHousing` backend in Flatisfy, you should add it to
|
||||||
the list of available backends in
|
the list of available backends in
|
||||||
[flatisfy/fetch.py#L69-70](https://git.phyks.me/Phyks/flatisfy/blob/master/flatisfy/fetch.py#L69-70)
|
[flatisfy/fetch.py#L69-70](https://git.phyks.me/Phyks/flatisfy/blob/master/flatisfy/fetch.py#L69-70)
|
||||||
and update the list of `BACKEND_PRECEDENCES` for deduplication in
|
and update the list of `BACKEND_PRECEDENCES` for deduplication in
|
||||||
|
@ -19,7 +19,7 @@ and it is working fine :)
|
|||||||
|
|
||||||
<img src="doc/img/home.png" width="45%"/> <img src="doc/img/home2.png" width="45%"/>
|
<img src="doc/img/home.png" width="45%"/> <img src="doc/img/home2.png" width="45%"/>
|
||||||
|
|
||||||
It uses [WebOOB](http://weboob.org/) to get all the housing posts on most of
|
It uses [woob](https://gitlab.com/woob/woob/) to get all the housing posts on most of
|
||||||
the websites offering housings posts, and then offers a bunch of pipelines to
|
the websites offering housings posts, and then offers a bunch of pipelines to
|
||||||
filter and deduplicate the fetched housings.
|
filter and deduplicate the fetched housings.
|
||||||
|
|
||||||
@ -116,9 +116,9 @@ Feel free to open issues. An IRC channel is available at [irc://irc.freenode.net
|
|||||||
|
|
||||||
## Thanks
|
## Thanks
|
||||||
|
|
||||||
* [WebOOB](http://weboob.org/). Note that this is actually the only and best
|
* [Woob](https://gitlab.com/woob/woob/). Note that this is actually the only and best
|
||||||
software out there to scrape housing posts online. Using it in Flatisfy does
|
software out there to scrape housing posts online. Using it in Flatisfy does
|
||||||
not mean the authors of Flatisfy endorse WebOOB authors' views.
|
not mean the authors of Flatisfy endorse Woob authors' views.
|
||||||
* The OpenData providers listed above!
|
* The OpenData providers listed above!
|
||||||
* Navitia for their really cool public transportation API.
|
* Navitia for their really cool public transportation API.
|
||||||
* A lots of Python modules, required for this script (see `requirements.txt`).
|
* A lots of Python modules, required for this script (see `requirements.txt`).
|
||||||
|
@ -2,36 +2,34 @@ Getting started
|
|||||||
===============
|
===============
|
||||||
|
|
||||||
|
|
||||||
## Dependency on WebOOB
|
## Dependency on Woob
|
||||||
|
|
||||||
**Important**: Flatisfy relies on [WebOOB](http://weboob.org/) to fetch
|
**Important**: Flatisfy relies on [Woob](https://gitlab.com/woob/woob/) to fetch
|
||||||
housing posts from housing websites. Then, you should install the [`devel`
|
housing posts from housing websites.
|
||||||
branch](https://git.weboob.org/weboob/devel/) and update it regularly,
|
|
||||||
especially if Flatisfy suddenly stops fetching housing posts.
|
|
||||||
|
|
||||||
If you `pip install -r requirements.txt` it will install the latest
|
If you `pip install -r requirements.txt` it will install the latest
|
||||||
development version of [WebOOB](https://git.weboob.org/weboob/devel/) and the
|
development version of [Woob](https://gitlab.com/woob/woob/) and the
|
||||||
[WebOOB modules](https://git.weboob.org/weboob/modules/), which should be the
|
[Woob modules](https://gitlab.com/woob/modules/), which should be the
|
||||||
best version available out there. You should update these packages regularly,
|
best version available out there. You should update these packages regularly,
|
||||||
as they evolve quickly.
|
as they evolve quickly.
|
||||||
|
|
||||||
WebOOB is made of two parts: a core and modules (which is the actual code
|
Woob is made of two parts: a core and modules (which is the actual code
|
||||||
fetching data from websites). Modules tend to break often and are then updated
|
fetching data from websites). Modules tend to break often and are then updated
|
||||||
often, you should keep them up to date. This can be done by installing the
|
often, you should keep them up to date. This can be done by installing and
|
||||||
`weboob-modules` package listed in the `requirements.txt` and using the
|
upgrading the packages listed in the `requirements.txt` and using the default
|
||||||
default configuration.
|
configuration.
|
||||||
|
|
||||||
This is a safe default configuration. However, a better option is usually to
|
This is a safe default configuration. However, a better option is usually to
|
||||||
clone [WebOOB git repo](https://git.weboob.org/weboob/devel/) somewhere, on
|
clone [Woob git repo](https://gitlab.com/woob/woob/) somewhere, on
|
||||||
your disk, to point `modules_path` configuration option to
|
your disk, to point `modules_path` configuration option to
|
||||||
`path_to_weboob_git/modules` (see the configuration section below) and to run
|
`path_to_woob_git/modules` (see the configuration section below) and to run
|
||||||
a `git pull; python setup.py install` in the WebOOB git repo often.
|
a `git pull; python setup.py install` in the Woob git repo often.
|
||||||
|
|
||||||
A copy of the WebOOB modules is available in the `modules` directory at the
|
A copy of the Woob modules is available in the `modules` directory at the
|
||||||
root of this repository, you can use `"modules_path": "/path/to/flatisfy/modules"` to use them.
|
root of this repository, you can use `"modules_path": "/path/to/flatisfy/modules"` to use them.
|
||||||
This copy may or may not be more up to date than the current state of official
|
This copy may or may not be more up to date than the current state of official
|
||||||
WebOOB modules. Some changes are made there, which are not backported
|
Woob modules. Some changes are made there, which are not backported
|
||||||
upstream. WebOOB official modules are not synced in the `modules` folder on a
|
upstream. Woob official modules are not synced in the `modules` folder on a
|
||||||
regular basis, so try both and see which ones match your needs! :)
|
regular basis, so try both and see which ones match your needs! :)
|
||||||
|
|
||||||
|
|
||||||
@ -81,7 +79,7 @@ The available commands are:
|
|||||||
_Note:_ Fetching flats can be quite long and take up to a few minutes. This
|
_Note:_ Fetching flats can be quite long and take up to a few minutes. This
|
||||||
should be better optimized. To get a verbose output and have an hint about the
|
should be better optimized. To get a verbose output and have an hint about the
|
||||||
progress, use the `-v` argument. It can remain stuck at "Loading flats for
|
progress, use the `-v` argument. It can remain stuck at "Loading flats for
|
||||||
constraint XXX...", which simply means it is fetching flats (using WebOOB
|
constraint XXX...", which simply means it is fetching flats (using Woob
|
||||||
under the hood) and this step can be super long if there are lots of flats to
|
under the hood) and this step can be super long if there are lots of flats to
|
||||||
fetch. If this happens to you, you can set `max_entries` in your config to
|
fetch. If this happens to you, you can set `max_entries` in your config to
|
||||||
limit the number of flats to fetch.
|
limit the number of flats to fetch.
|
||||||
@ -123,11 +121,11 @@ List of configuration options:
|
|||||||
* `mapbox_api_key` is an API token for [Mapbox](http://mapbox.com/)
|
* `mapbox_api_key` is an API token for [Mapbox](http://mapbox.com/)
|
||||||
which is required to compute travel times for `WALK`, `BIKE` and `CAR`
|
which is required to compute travel times for `WALK`, `BIKE` and `CAR`
|
||||||
modes.
|
modes.
|
||||||
* `modules_path` is the path to the WebOOB modules. It can be `null` if you
|
* `modules_path` is the path to the Woob modules. It can be `null` if you
|
||||||
want WebOOB to use the locally installed [WebOOB
|
want Woob to use the locally installed [Woob
|
||||||
modules](https://git.weboob.org/weboob/modules), which you should install
|
modules](https://gitlab.com/woob/modules/), which you should install
|
||||||
yourself. This is the default value. If it is a string, it should be an
|
yourself. This is the default value. If it is a string, it should be an
|
||||||
absolute path to the folder containing WebOOB modules.
|
absolute path to the folder containing Woob modules.
|
||||||
* `port` is the port on which the development webserver should be
|
* `port` is the port on which the development webserver should be
|
||||||
listening (default to `8080`).
|
listening (default to `8080`).
|
||||||
* `host` is the host on which the development webserver should be listening
|
* `host` is the host on which the development webserver should be listening
|
||||||
@ -135,8 +133,8 @@ List of configuration options:
|
|||||||
* `webserver` is a server to use instead of the default Bottle built-in
|
* `webserver` is a server to use instead of the default Bottle built-in
|
||||||
webserver, see [Bottle deployment
|
webserver, see [Bottle deployment
|
||||||
doc](http://bottlepy.org/docs/dev/deployment.html).
|
doc](http://bottlepy.org/docs/dev/deployment.html).
|
||||||
* `backends` is a list of WebOOB backends to enable. It defaults to any
|
* `backends` is a list of Woob backends to enable. It defaults to any
|
||||||
available and supported WebOOB backend.
|
available and supported Woob backend.
|
||||||
* `store_personal_data` is a boolean indicated whether or not Flatisfy should
|
* `store_personal_data` is a boolean indicated whether or not Flatisfy should
|
||||||
fetch personal data from housing posts and store them in database. Such
|
fetch personal data from housing posts and store them in database. Such
|
||||||
personal data include contact phone number for instance. By default,
|
personal data include contact phone number for instance. By default,
|
||||||
|
@ -20,9 +20,6 @@ virtualenv .env && source .env/bin/activate
|
|||||||
# Install required Python modules
|
# Install required Python modules
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
|
|
||||||
# Clone and install webOOB
|
|
||||||
git clone https://git.weboob.org/weboob/devel weboob && cd weboob && python setup.py install && cd ..
|
|
||||||
|
|
||||||
# Install required JS libraries and build the webapp
|
# Install required JS libraries and build the webapp
|
||||||
npm install && npm run build:prod
|
npm install && npm run build:prod
|
||||||
|
|
||||||
@ -45,7 +42,7 @@ python -m flatisfy import --config config/config.json -v
|
|||||||
_Note 1_: In the config, you should set `data_directory` to the absolute path of
|
_Note 1_: In the config, you should set `data_directory` to the absolute path of
|
||||||
the `data` directory created below. This directory should be writable by the
|
the `data` directory created below. This directory should be writable by the
|
||||||
user running Flatisfy. You should also set `modules_path` to the absolute path
|
user running Flatisfy. You should also set `modules_path` to the absolute path
|
||||||
to the `modules` folder under the previous `weboob` clone. Finally, the last
|
to the `modules` folder under the previous `woob` clone. Finally, the last
|
||||||
`import` command can be `cron`-tasked to automatically fetch available
|
`import` command can be `cron`-tasked to automatically fetch available
|
||||||
housings posts periodically.
|
housings posts periodically.
|
||||||
|
|
||||||
@ -246,4 +243,4 @@ Restart:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
systemctl restart uwsgi
|
systemctl restart uwsgi
|
||||||
```
|
```
|
||||||
|
@ -27,7 +27,7 @@ set `max_entries` in your config to limit the number of posts fetched.
|
|||||||
|
|
||||||
## Docker image does not start the webserver at first start?
|
## Docker image does not start the webserver at first start?
|
||||||
|
|
||||||
When you launch the Docker image, it first updates WebOOB and fetches the
|
When you launch the Docker image, it first updates Woob and fetches the
|
||||||
housing posts matching your criterias. The webserver is only started once this
|
housing posts matching your criterias. The webserver is only started once this
|
||||||
is done. As fetching housing posts can take a bit of time (up to 10 minutes),
|
is done. As fetching housing posts can take a bit of time (up to 10 minutes),
|
||||||
the webserver will not be available right away.
|
the webserver will not be available right away.
|
||||||
|
@ -18,11 +18,6 @@ RUN pip install -U setuptools && \
|
|||||||
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
|
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
|
||||||
&& apt-get install -y nodejs
|
&& apt-get install -y nodejs
|
||||||
|
|
||||||
# Install weboob's code itself.
|
|
||||||
RUN git clone --depth 1 https://git.weboob.org/weboob/weboob /home/user/weboob \
|
|
||||||
&& cd /home/user/weboob \
|
|
||||||
&& pip install .
|
|
||||||
|
|
||||||
RUN mkdir -p /flatisfy/data
|
RUN mkdir -p /flatisfy/data
|
||||||
VOLUME /flatisfy
|
VOLUME /flatisfy
|
||||||
|
|
||||||
|
@ -14,7 +14,4 @@ echo "[ENTRYPOINT] Setting fake values for git config..."
|
|||||||
git config --global user.email flatisfy@example.com
|
git config --global user.email flatisfy@example.com
|
||||||
git config --global user.name "Flatisfy Root"
|
git config --global user.name "Flatisfy Root"
|
||||||
|
|
||||||
echo "Update Weboob..."
|
|
||||||
/home/user/update_weboob.sh
|
|
||||||
|
|
||||||
exec su user -c "$@"
|
exec su user -c "$@"
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
echo "Updating Weboob..."
|
|
||||||
cd /home/user/weboob
|
|
||||||
git pull && pip install --upgrade . || echo "Couldn't upgrade Weboob; maybe the server is unreachable?"
|
|
@ -134,7 +134,7 @@ def import_and_filter(config, load_from_db=False, new_only=False):
|
|||||||
|
|
||||||
:param config: A config dict.
|
:param config: A config dict.
|
||||||
:param load_from_db: Whether to load flats from database or fetch them
|
:param load_from_db: Whether to load flats from database or fetch them
|
||||||
using WebOOB.
|
using Woob.
|
||||||
:return: ``None``.
|
:return: ``None``.
|
||||||
"""
|
"""
|
||||||
# Fetch and filter flats list
|
# Fetch and filter flats list
|
||||||
|
@ -15,7 +15,7 @@ import sys
|
|||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
import appdirs
|
import appdirs
|
||||||
from weboob.capabilities.housing import POSTS_TYPES, HOUSE_TYPES
|
from woob.capabilities.housing import POSTS_TYPES, HOUSE_TYPES
|
||||||
|
|
||||||
from flatisfy import data
|
from flatisfy import data
|
||||||
from flatisfy import tools
|
from flatisfy import tools
|
||||||
@ -23,6 +23,9 @@ from flatisfy.constants import TimeToModes
|
|||||||
from flatisfy.models.postal_code import PostalCode
|
from flatisfy.models.postal_code import PostalCode
|
||||||
|
|
||||||
|
|
||||||
|
DIRPATH = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|
||||||
|
|
||||||
# Default configuration
|
# Default configuration
|
||||||
DEFAULT_CONFIG = {
|
DEFAULT_CONFIG = {
|
||||||
# Constraints to match
|
# Constraints to match
|
||||||
@ -74,10 +77,8 @@ DEFAULT_CONFIG = {
|
|||||||
"max_entries": None,
|
"max_entries": None,
|
||||||
# Directory in wich data will be put. ``None`` is XDG default location.
|
# Directory in wich data will be put. ``None`` is XDG default location.
|
||||||
"data_directory": None,
|
"data_directory": None,
|
||||||
# Path to the modules directory containing all Weboob modules. ``None`` if
|
# Path to the modules directory containing all Woob modules.
|
||||||
# ``weboob_modules`` package is pip-installed, and you want to use
|
"modules_path": os.path.join(DIRPATH, '..', 'modules'),
|
||||||
# ``pkgresource`` to automatically find it.
|
|
||||||
"modules_path": None,
|
|
||||||
# SQLAlchemy URI to the database to use
|
# SQLAlchemy URI to the database to use
|
||||||
"database": None,
|
"database": None,
|
||||||
# Path to the Whoosh search index file. Use ``None`` to put it in
|
# Path to the Whoosh search index file. Use ``None`` to put it in
|
||||||
@ -89,7 +90,7 @@ DEFAULT_CONFIG = {
|
|||||||
"host": "127.0.0.1",
|
"host": "127.0.0.1",
|
||||||
# Web server to use to serve the webapp (see Bottle deployment doc)
|
# Web server to use to serve the webapp (see Bottle deployment doc)
|
||||||
"webserver": None,
|
"webserver": None,
|
||||||
# List of Weboob backends to use (default to any backend available)
|
# List of Woob backends to use (default to any backend available)
|
||||||
"backends": None,
|
"backends": None,
|
||||||
# Should email notifications be sent?
|
# Should email notifications be sent?
|
||||||
"send_email": False,
|
"send_email": False,
|
||||||
|
@ -20,27 +20,27 @@ LOGGER = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from weboob.capabilities.housing import Query, POSTS_TYPES, HOUSE_TYPES
|
from woob.capabilities.housing import Query, POSTS_TYPES, HOUSE_TYPES
|
||||||
from weboob.core.bcall import CallErrors
|
from woob.core.bcall import CallErrors
|
||||||
from weboob.core.ouiboube import WebNip
|
from woob.core.ouiboube import WebNip
|
||||||
from weboob.tools.json import WeboobEncoder
|
from woob.tools.json import WoobEncoder
|
||||||
except ImportError:
|
except ImportError:
|
||||||
LOGGER.error("Weboob is not available on your system. Make sure you installed it.")
|
LOGGER.error("Woob is not available on your system. Make sure you installed it.")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
||||||
class WebOOBProxy(object):
|
class WoobProxy(object):
|
||||||
"""
|
"""
|
||||||
Wrapper around WebOOB ``WebNip`` class, to fetch housing posts without
|
Wrapper around Woob ``WebNip`` class, to fetch housing posts without
|
||||||
having to spawn a subprocess.
|
having to spawn a subprocess.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def version():
|
def version():
|
||||||
"""
|
"""
|
||||||
Get WebOOB version.
|
Get Woob version.
|
||||||
|
|
||||||
:return: The installed WebOOB version.
|
:return: The installed Woob version.
|
||||||
"""
|
"""
|
||||||
return WebNip.VERSION
|
return WebNip.VERSION
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ class WebOOBProxy(object):
|
|||||||
|
|
||||||
def __init__(self, config):
|
def __init__(self, config):
|
||||||
"""
|
"""
|
||||||
Create a WebOOB handle and try to load the modules.
|
Create a Woob handle and try to load the modules.
|
||||||
|
|
||||||
:param config: A config dict.
|
:param config: A config dict.
|
||||||
"""
|
"""
|
||||||
@ -95,13 +95,13 @@ class WebOOBProxy(object):
|
|||||||
|
|
||||||
def build_queries(self, constraints_dict):
|
def build_queries(self, constraints_dict):
|
||||||
"""
|
"""
|
||||||
Build WebOOB ``weboob.capabilities.housing.Query`` objects from the
|
Build Woob ``woob.capabilities.housing.Query`` objects from the
|
||||||
constraints defined in the configuration. Each query has at most 3
|
constraints defined in the configuration. Each query has at most 3
|
||||||
cities, to comply with housing websites limitations.
|
cities, to comply with housing websites limitations.
|
||||||
|
|
||||||
:param constraints_dict: A dictionary of constraints, as defined in the
|
:param constraints_dict: A dictionary of constraints, as defined in the
|
||||||
config.
|
config.
|
||||||
:return: A list of WebOOB ``weboob.capabilities.housing.Query``
|
:return: A list of Woob ``woob.capabilities.housing.Query``
|
||||||
objects. Returns ``None`` if an error occurred.
|
objects. Returns ``None`` if an error occurred.
|
||||||
"""
|
"""
|
||||||
queries = []
|
queries = []
|
||||||
@ -163,9 +163,9 @@ class WebOOBProxy(object):
|
|||||||
|
|
||||||
def query(self, query, max_entries=None, store_personal_data=False):
|
def query(self, query, max_entries=None, store_personal_data=False):
|
||||||
"""
|
"""
|
||||||
Fetch the housings posts matching a given WebOOB query.
|
Fetch the housings posts matching a given Woob query.
|
||||||
|
|
||||||
:param query: A WebOOB `weboob.capabilities.housing.Query`` object.
|
:param query: A Woob `woob.capabilities.housing.Query`` object.
|
||||||
:param max_entries: Maximum number of entries to fetch.
|
:param max_entries: Maximum number of entries to fetch.
|
||||||
:param store_personal_data: Whether personal data should be fetched
|
:param store_personal_data: Whether personal data should be fetched
|
||||||
from housing posts (phone number etc).
|
from housing posts (phone number etc).
|
||||||
@ -181,7 +181,7 @@ class WebOOBProxy(object):
|
|||||||
"search_housings",
|
"search_housings",
|
||||||
query,
|
query,
|
||||||
# Only run the call on the required backends.
|
# Only run the call on the required backends.
|
||||||
# Otherwise, WebOOB is doing weird stuff and returning
|
# Otherwise, Woob is doing weird stuff and returning
|
||||||
# nonsense.
|
# nonsense.
|
||||||
backends=[x for x in self.backends if x.name in useful_backends],
|
backends=[x for x in self.backends if x.name in useful_backends],
|
||||||
),
|
),
|
||||||
@ -189,7 +189,7 @@ class WebOOBProxy(object):
|
|||||||
):
|
):
|
||||||
if not store_personal_data:
|
if not store_personal_data:
|
||||||
housing.phone = None
|
housing.phone = None
|
||||||
housings.append(json.dumps(housing, cls=WeboobEncoder))
|
housings.append(json.dumps(housing, cls=WoobEncoder))
|
||||||
except CallErrors as exc:
|
except CallErrors as exc:
|
||||||
# If an error occured, just log it
|
# If an error occured, just log it
|
||||||
LOGGER.error("An error occured while fetching the housing posts: %s", str(exc))
|
LOGGER.error("An error occured while fetching the housing posts: %s", str(exc))
|
||||||
@ -199,7 +199,7 @@ class WebOOBProxy(object):
|
|||||||
"""
|
"""
|
||||||
Get information (details) about an housing post.
|
Get information (details) about an housing post.
|
||||||
|
|
||||||
:param full_flat_id: A WebOOB housing post id, in complete form
|
:param full_flat_id: A Woob housing post id, in complete form
|
||||||
(ID@BACKEND)
|
(ID@BACKEND)
|
||||||
:param store_personal_data: Whether personal data should be fetched
|
:param store_personal_data: Whether personal data should be fetched
|
||||||
from housing posts (phone number etc).
|
from housing posts (phone number etc).
|
||||||
@ -223,7 +223,7 @@ class WebOOBProxy(object):
|
|||||||
# Otherwise, we miss the @backend afterwards
|
# Otherwise, we miss the @backend afterwards
|
||||||
housing.id = full_flat_id
|
housing.id = full_flat_id
|
||||||
|
|
||||||
return json.dumps(housing, cls=WeboobEncoder)
|
return json.dumps(housing, cls=WoobEncoder)
|
||||||
except Exception as exc: # pylint: disable=broad-except
|
except Exception as exc: # pylint: disable=broad-except
|
||||||
# If an error occured, just log it
|
# If an error occured, just log it
|
||||||
LOGGER.error("An error occured while fetching housing %s: %s", full_flat_id, str(exc))
|
LOGGER.error("An error occured while fetching housing %s: %s", full_flat_id, str(exc))
|
||||||
@ -232,7 +232,7 @@ class WebOOBProxy(object):
|
|||||||
|
|
||||||
def fetch_flats(config):
|
def fetch_flats(config):
|
||||||
"""
|
"""
|
||||||
Fetch the available flats using the Flatboob / WebOOB config.
|
Fetch the available flats using the Woob config.
|
||||||
|
|
||||||
:param config: A config dict.
|
:param config: A config dict.
|
||||||
:return: A dict mapping constraint in config to all available matching
|
:return: A dict mapping constraint in config to all available matching
|
||||||
@ -242,16 +242,16 @@ def fetch_flats(config):
|
|||||||
|
|
||||||
for constraint_name, constraint in config["constraints"].items():
|
for constraint_name, constraint in config["constraints"].items():
|
||||||
LOGGER.info("Loading flats for constraint %s...", constraint_name)
|
LOGGER.info("Loading flats for constraint %s...", constraint_name)
|
||||||
with WebOOBProxy(config) as webOOB_proxy:
|
with WoobProxy(config) as woob_proxy:
|
||||||
queries = webOOB_proxy.build_queries(constraint)
|
queries = woob_proxy.build_queries(constraint)
|
||||||
housing_posts = []
|
housing_posts = []
|
||||||
for query in queries:
|
for query in queries:
|
||||||
housing_posts.extend(webOOB_proxy.query(query, config["max_entries"], config["store_personal_data"]))
|
housing_posts.extend(woob_proxy.query(query, config["max_entries"], config["store_personal_data"]))
|
||||||
housing_posts = housing_posts[: config["max_entries"]]
|
housing_posts = housing_posts[: config["max_entries"]]
|
||||||
LOGGER.info("Fetched %d flats.", len(housing_posts))
|
LOGGER.info("Fetched %d flats.", len(housing_posts))
|
||||||
|
|
||||||
constraint_flats_list = [json.loads(flat) for flat in housing_posts]
|
constraint_flats_list = [json.loads(flat) for flat in housing_posts]
|
||||||
constraint_flats_list = [WebOOBProxy.restore_decimal_fields(flat) for flat in constraint_flats_list]
|
constraint_flats_list = [WoobProxy.restore_decimal_fields(flat) for flat in constraint_flats_list]
|
||||||
fetched_flats[constraint_name] = constraint_flats_list
|
fetched_flats[constraint_name] = constraint_flats_list
|
||||||
return fetched_flats
|
return fetched_flats
|
||||||
|
|
||||||
@ -266,18 +266,18 @@ def fetch_details_rate_limited(config, flat_id):
|
|||||||
|
|
||||||
def fetch_details(config, flat_id):
|
def fetch_details(config, flat_id):
|
||||||
"""
|
"""
|
||||||
Fetch the additional details for a flat using Flatboob / WebOOB.
|
Fetch the additional details for a flat using Woob.
|
||||||
|
|
||||||
:param config: A config dict.
|
:param config: A config dict.
|
||||||
:param flat_id: ID of the flat to fetch details for.
|
:param flat_id: ID of the flat to fetch details for.
|
||||||
:return: A flat dict with all the available data.
|
:return: A flat dict with all the available data.
|
||||||
"""
|
"""
|
||||||
with WebOOBProxy(config) as webOOB_proxy:
|
with WoobProxy(config) as woob_proxy:
|
||||||
LOGGER.info("Loading additional details for flat %s.", flat_id)
|
LOGGER.info("Loading additional details for flat %s.", flat_id)
|
||||||
webOOB_output = webOOB_proxy.info(flat_id, config["store_personal_data"])
|
woob_output = woob_proxy.info(flat_id, config["store_personal_data"])
|
||||||
|
|
||||||
flat_details = json.loads(webOOB_output)
|
flat_details = json.loads(woob_output)
|
||||||
flat_details = WebOOBProxy.restore_decimal_fields(flat_details)
|
flat_details = WoobProxy.restore_decimal_fields(flat_details)
|
||||||
LOGGER.info("Fetched details for flat %s.", flat_id)
|
LOGGER.info("Fetched details for flat %s.", flat_id)
|
||||||
|
|
||||||
return flat_details
|
return flat_details
|
||||||
|
@ -161,7 +161,7 @@ def detect(flats_list, key="id", merge=True, should_intersect=False):
|
|||||||
|
|
||||||
for flat_key, matching_flats in seen.items():
|
for flat_key, matching_flats in seen.items():
|
||||||
if flat_key is None:
|
if flat_key is None:
|
||||||
# If the key is None, it means Weboob could not load the data. In
|
# If the key is None, it means Woob could not load the data. In
|
||||||
# this case, we consider every matching item as being independant
|
# this case, we consider every matching item as being independant
|
||||||
# of the others, to avoid over-deduplication.
|
# of the others, to avoid over-deduplication.
|
||||||
unique_flats_list.extend(matching_flats)
|
unique_flats_list.extend(matching_flats)
|
||||||
@ -263,7 +263,7 @@ def get_duplicate_score(flat1, flat2, photo_cache, hash_threshold):
|
|||||||
flat2_phone = homogeneize_phone_number(flat2["phone"])
|
flat2_phone = homogeneize_phone_number(flat2["phone"])
|
||||||
if flat1_phone and flat2_phone:
|
if flat1_phone and flat2_phone:
|
||||||
# Use an "in" test as there could be multiple phone numbers
|
# Use an "in" test as there could be multiple phone numbers
|
||||||
# returned by a weboob module
|
# returned by a Woob module
|
||||||
if flat1_phone in flat2_phone or flat2_phone in flat1_phone:
|
if flat1_phone in flat2_phone or flat2_phone in flat1_phone:
|
||||||
n_common_items += 4 # Counts much more than the rest
|
n_common_items += 4 # Counts much more than the rest
|
||||||
|
|
||||||
|
@ -310,7 +310,7 @@ def guess_stations(flats_list, constraint, config):
|
|||||||
LOGGER.info("No stations field for flat %s, skipping stations lookup.", flat["id"])
|
LOGGER.info("No stations field for flat %s, skipping stations lookup.", flat["id"])
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Weboob modules can return several stations in a comma-separated list.
|
# Woob modules can return several stations in a comma-separated list.
|
||||||
flat_stations = flat_station.split(",")
|
flat_stations = flat_station.split(",")
|
||||||
# But some stations containing a comma exist, so let's add the initial
|
# But some stations containing a comma exist, so let's add the initial
|
||||||
# value to the list of stations to check if there was one.
|
# value to the list of stations to check if there was one.
|
||||||
|
@ -68,7 +68,7 @@ class Flat(BASE):
|
|||||||
__tablename__ = "flats"
|
__tablename__ = "flats"
|
||||||
__searchable__ = ["title", "text", "station", "location", "details", "notes"]
|
__searchable__ = ["title", "text", "station", "location", "details", "notes"]
|
||||||
|
|
||||||
# Weboob data
|
# Woob data
|
||||||
id = Column(String, primary_key=True)
|
id = Column(String, primary_key=True)
|
||||||
area = Column(Float)
|
area = Column(Float)
|
||||||
bedrooms = Column(Float)
|
bedrooms = Column(Float)
|
||||||
|
@ -2,20 +2,20 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
from .module import ExplorimmoModule
|
from .module import ExplorimmoModule
|
||||||
|
@ -2,25 +2,25 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from weboob.browser import PagesBrowser, URL
|
from woob.browser import PagesBrowser, URL
|
||||||
from weboob.capabilities.housing import (TypeNotSupported, POSTS_TYPES,
|
from woob.capabilities.housing import (TypeNotSupported, POSTS_TYPES,
|
||||||
HOUSE_TYPES)
|
HOUSE_TYPES)
|
||||||
from weboob.tools.compat import urlencode
|
from woob.tools.compat import urlencode
|
||||||
from .pages import CitiesPage, SearchPage, HousingPage, HousingPage2, PhonePage
|
from .pages import CitiesPage, SearchPage, HousingPage, HousingPage2, PhonePage
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,24 +2,24 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
from weboob.tools.backend import Module
|
from woob.tools.backend import Module
|
||||||
from weboob.capabilities.housing import CapHousing, Housing, HousingPhoto
|
from woob.capabilities.housing import CapHousing, Housing, HousingPhoto
|
||||||
|
|
||||||
from .browser import ExplorimmoBrowser
|
from .browser import ExplorimmoBrowser
|
||||||
|
|
||||||
|
@ -2,20 +2,20 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import json
|
import json
|
||||||
@ -23,19 +23,19 @@ import math
|
|||||||
import re
|
import re
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from weboob.browser.filters.json import Dict
|
from woob.browser.filters.json import Dict
|
||||||
from weboob.browser.elements import ItemElement, ListElement, DictElement, method
|
from woob.browser.elements import ItemElement, ListElement, DictElement, method
|
||||||
from weboob.browser.pages import JsonPage, HTMLPage, pagination
|
from woob.browser.pages import JsonPage, HTMLPage, pagination
|
||||||
from weboob.browser.filters.standard import (CleanText, CleanDecimal, Currency,
|
from woob.browser.filters.standard import (CleanText, CleanDecimal, Currency,
|
||||||
Regexp, Env, BrowserURL, Filter,
|
Regexp, Env, BrowserURL, Filter,
|
||||||
Format)
|
Format)
|
||||||
from weboob.browser.filters.html import Attr, CleanHTML, XPath
|
from woob.browser.filters.html import Attr, CleanHTML, XPath
|
||||||
from weboob.capabilities.base import NotAvailable, NotLoaded, Currency as BaseCurrency
|
from woob.capabilities.base import NotAvailable, NotLoaded, Currency as BaseCurrency
|
||||||
from weboob.capabilities.housing import (Housing, HousingPhoto, City,
|
from woob.capabilities.housing import (Housing, HousingPhoto, City,
|
||||||
UTILITIES, ENERGY_CLASS, POSTS_TYPES,
|
UTILITIES, ENERGY_CLASS, POSTS_TYPES,
|
||||||
ADVERT_TYPES, HOUSE_TYPES)
|
ADVERT_TYPES, HOUSE_TYPES)
|
||||||
from weboob.tools.capabilities.housing.housing import PricePerMeterFilter
|
from woob.tools.capabilities.housing.housing import PricePerMeterFilter
|
||||||
from weboob.tools.compat import unquote
|
from woob.tools.compat import unquote
|
||||||
|
|
||||||
|
|
||||||
class CitiesPage(JsonPage):
|
class CitiesPage(JsonPage):
|
||||||
|
@ -2,24 +2,24 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from weboob.capabilities.housing import Query, ADVERT_TYPES, POSTS_TYPES
|
from woob.capabilities.housing import Query, ADVERT_TYPES, POSTS_TYPES
|
||||||
from weboob.tools.capabilities.housing.housing_test import HousingTest
|
from woob.tools.capabilities.housing.housing_test import HousingTest
|
||||||
from weboob.tools.test import BackendTest
|
from woob.tools.test import BackendTest
|
||||||
|
|
||||||
|
|
||||||
class ExplorimmoTest(BackendTest, HousingTest):
|
class ExplorimmoTest(BackendTest, HousingTest):
|
||||||
|
@ -2,20 +2,20 @@
|
|||||||
|
|
||||||
# Copyright(C) 2017 Phyks (Lucas Verney)
|
# Copyright(C) 2017 Phyks (Lucas Verney)
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
@ -2,25 +2,25 @@
|
|||||||
|
|
||||||
# Copyright(C) 2017 Phyks (Lucas Verney)
|
# Copyright(C) 2017 Phyks (Lucas Verney)
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
|
||||||
from weboob.browser import PagesBrowser, URL
|
from woob.browser import PagesBrowser, URL
|
||||||
|
|
||||||
from .constants import QUERY_TYPES
|
from .constants import QUERY_TYPES
|
||||||
from .pages import CitiesPage, HousingPage, SearchPage, SearchResultsPage
|
from .pages import CitiesPage, HousingPage, SearchPage, SearchResultsPage
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from weboob.capabilities.housing import POSTS_TYPES, HOUSE_TYPES
|
from woob.capabilities.housing import POSTS_TYPES, HOUSE_TYPES
|
||||||
|
|
||||||
QUERY_TYPES = {
|
QUERY_TYPES = {
|
||||||
POSTS_TYPES.RENT: 'location',
|
POSTS_TYPES.RENT: 'location',
|
||||||
|
@ -2,26 +2,26 @@
|
|||||||
|
|
||||||
# Copyright(C) 2017 Phyks (Lucas Verney)
|
# Copyright(C) 2017 Phyks (Lucas Verney)
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
|
||||||
from weboob.tools.backend import Module
|
from woob.tools.backend import Module
|
||||||
from weboob.capabilities.housing import CapHousing, Housing, ADVERT_TYPES, HousingPhoto
|
from woob.capabilities.housing import CapHousing, Housing, ADVERT_TYPES, HousingPhoto
|
||||||
|
|
||||||
from .browser import FonciaBrowser
|
from .browser import FonciaBrowser
|
||||||
|
|
||||||
|
@ -2,37 +2,37 @@
|
|||||||
|
|
||||||
# Copyright(C) 2017 Phyks (Lucas Verney)
|
# Copyright(C) 2017 Phyks (Lucas Verney)
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from weboob.browser.pages import JsonPage, HTMLPage, pagination
|
from woob.browser.pages import JsonPage, HTMLPage, pagination
|
||||||
from weboob.browser.filters.standard import (
|
from woob.browser.filters.standard import (
|
||||||
CleanDecimal, CleanText, Currency, Date, Env, Format, Regexp, RegexpError
|
CleanDecimal, CleanText, Currency, Date, Env, Format, Regexp, RegexpError
|
||||||
)
|
)
|
||||||
from weboob.browser.filters.html import AbsoluteLink, Attr, Link, XPathNotFound
|
from woob.browser.filters.html import AbsoluteLink, Attr, Link, XPathNotFound
|
||||||
from weboob.browser.elements import ItemElement, ListElement, method
|
from woob.browser.elements import ItemElement, ListElement, method
|
||||||
from weboob.capabilities.base import NotAvailable, NotLoaded
|
from woob.capabilities.base import NotAvailable, NotLoaded
|
||||||
from weboob.capabilities.housing import (
|
from woob.capabilities.housing import (
|
||||||
City, Housing, HousingPhoto,
|
City, Housing, HousingPhoto,
|
||||||
UTILITIES, ENERGY_CLASS, POSTS_TYPES, ADVERT_TYPES
|
UTILITIES, ENERGY_CLASS, POSTS_TYPES, ADVERT_TYPES
|
||||||
)
|
)
|
||||||
from weboob.tools.capabilities.housing.housing import PricePerMeterFilter
|
from woob.tools.capabilities.housing.housing import PricePerMeterFilter
|
||||||
|
|
||||||
from .constants import AVAILABLE_TYPES, QUERY_TYPES, QUERY_HOUSE_TYPES
|
from .constants import AVAILABLE_TYPES, QUERY_TYPES, QUERY_HOUSE_TYPES
|
||||||
|
|
||||||
|
@ -2,28 +2,28 @@
|
|||||||
|
|
||||||
# Copyright(C) 2017 Phyks (Lucas Verney)
|
# Copyright(C) 2017 Phyks (Lucas Verney)
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from weboob.capabilities.housing import (
|
from woob.capabilities.housing import (
|
||||||
Query, POSTS_TYPES, ADVERT_TYPES
|
Query, POSTS_TYPES, ADVERT_TYPES
|
||||||
)
|
)
|
||||||
from weboob.tools.capabilities.housing.housing_test import HousingTest
|
from woob.tools.capabilities.housing.housing_test import HousingTest
|
||||||
from weboob.tools.test import BackendTest
|
from woob.tools.test import BackendTest
|
||||||
|
|
||||||
|
|
||||||
class FonciaTest(BackendTest, HousingTest):
|
class FonciaTest(BackendTest, HousingTest):
|
||||||
|
@ -2,20 +2,20 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
from .module import LeboncoinModule
|
from .module import LeboncoinModule
|
||||||
|
@ -2,25 +2,25 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from weboob.tools.json import json
|
from woob.tools.json import json
|
||||||
|
|
||||||
from weboob.browser import PagesBrowser, URL
|
from woob.browser import PagesBrowser, URL
|
||||||
from weboob.capabilities.housing import (TypeNotSupported, POSTS_TYPES,
|
from woob.capabilities.housing import (TypeNotSupported, POSTS_TYPES,
|
||||||
HOUSE_TYPES, ADVERT_TYPES)
|
HOUSE_TYPES, ADVERT_TYPES)
|
||||||
from .pages import CityListPage, HousingListPage, HousingPage, PhonePage, HomePage
|
from .pages import CityListPage, HousingListPage, HousingPage, PhonePage, HomePage
|
||||||
|
|
||||||
|
@ -2,24 +2,24 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
from weboob.tools.backend import Module
|
from woob.tools.backend import Module
|
||||||
from weboob.capabilities.housing import (CapHousing, Housing, HousingPhoto)
|
from woob.capabilities.housing import (CapHousing, Housing, HousingPhoto)
|
||||||
from .browser import LeboncoinBrowser
|
from .browser import LeboncoinBrowser
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,35 +2,35 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from weboob.browser.pages import HTMLPage, JsonPage, pagination
|
from woob.browser.pages import HTMLPage, JsonPage, pagination
|
||||||
from weboob.browser.elements import ItemElement, ListElement, method, DictElement
|
from woob.browser.elements import ItemElement, ListElement, method, DictElement
|
||||||
from weboob.capabilities.base import Currency as BaseCurrency
|
from woob.capabilities.base import Currency as BaseCurrency
|
||||||
from weboob.browser.filters.standard import (CleanText, CleanDecimal, _Filter,
|
from woob.browser.filters.standard import (CleanText, CleanDecimal, _Filter,
|
||||||
Env, DateTime, Format)
|
Env, DateTime, Format)
|
||||||
from weboob.browser.filters.json import Dict
|
from woob.browser.filters.json import Dict
|
||||||
from weboob.capabilities.housing import (City, Housing, HousingPhoto,
|
from woob.capabilities.housing import (City, Housing, HousingPhoto,
|
||||||
UTILITIES, ENERGY_CLASS, POSTS_TYPES,
|
UTILITIES, ENERGY_CLASS, POSTS_TYPES,
|
||||||
ADVERT_TYPES, HOUSE_TYPES)
|
ADVERT_TYPES, HOUSE_TYPES)
|
||||||
from weboob.capabilities.base import NotAvailable
|
from woob.capabilities.base import NotAvailable
|
||||||
from weboob.tools.capabilities.housing.housing import PricePerMeterFilter
|
from woob.tools.capabilities.housing.housing import PricePerMeterFilter
|
||||||
|
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
|
@ -2,25 +2,25 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from weboob.tools.test import BackendTest
|
from woob.tools.test import BackendTest
|
||||||
from weboob.tools.value import Value
|
from woob.tools.value import Value
|
||||||
from weboob.capabilities.housing import Query, POSTS_TYPES, ADVERT_TYPES
|
from woob.capabilities.housing import Query, POSTS_TYPES, ADVERT_TYPES
|
||||||
from weboob.tools.capabilities.housing.housing_test import HousingTest
|
from woob.tools.capabilities.housing.housing_test import HousingTest
|
||||||
|
|
||||||
|
|
||||||
class LeboncoinTest(BackendTest, HousingTest):
|
class LeboncoinTest(BackendTest, HousingTest):
|
||||||
|
@ -2,20 +2,20 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
from .module import LogicimmoModule
|
from .module import LogicimmoModule
|
||||||
|
@ -2,25 +2,25 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
from weboob.browser import PagesBrowser, URL
|
from woob.browser import PagesBrowser, URL
|
||||||
from weboob.browser.profiles import Firefox
|
from woob.browser.profiles import Firefox
|
||||||
from weboob.capabilities.housing import (TypeNotSupported, POSTS_TYPES,
|
from woob.capabilities.housing import (TypeNotSupported, POSTS_TYPES,
|
||||||
HOUSE_TYPES)
|
HOUSE_TYPES)
|
||||||
from .pages import CitiesPage, SearchPage, HousingPage, PhonePage
|
from .pages import CitiesPage, SearchPage, HousingPage, PhonePage
|
||||||
|
|
||||||
|
@ -2,26 +2,26 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
from weboob.tools.backend import Module
|
from woob.tools.backend import Module
|
||||||
from weboob.capabilities.housing import (CapHousing, Housing, HousingPhoto,
|
from woob.capabilities.housing import (CapHousing, Housing, HousingPhoto,
|
||||||
ADVERT_TYPES)
|
ADVERT_TYPES)
|
||||||
from weboob.capabilities.base import UserError
|
from woob.capabilities.base import UserError
|
||||||
from .browser import LogicimmoBrowser
|
from .browser import LogicimmoBrowser
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,36 +2,36 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from weboob.browser.pages import HTMLPage, JsonPage
|
from woob.browser.pages import HTMLPage, JsonPage
|
||||||
from weboob.browser.elements import ItemElement, ListElement, DictElement, method
|
from woob.browser.elements import ItemElement, ListElement, DictElement, method
|
||||||
from weboob.browser.filters.json import Dict
|
from woob.browser.filters.json import Dict
|
||||||
from weboob.browser.filters.standard import (Currency, Format, CleanText,
|
from woob.browser.filters.standard import (Currency, Format, CleanText,
|
||||||
Regexp, CleanDecimal, Date, Env,
|
Regexp, CleanDecimal, Date, Env,
|
||||||
BrowserURL)
|
BrowserURL)
|
||||||
from weboob.browser.filters.html import Attr, XPath, CleanHTML
|
from woob.browser.filters.html import Attr, XPath, CleanHTML
|
||||||
from weboob.capabilities.housing import (Housing, HousingPhoto, City,
|
from woob.capabilities.housing import (Housing, HousingPhoto, City,
|
||||||
UTILITIES, ENERGY_CLASS, POSTS_TYPES,
|
UTILITIES, ENERGY_CLASS, POSTS_TYPES,
|
||||||
ADVERT_TYPES, HOUSE_TYPES)
|
ADVERT_TYPES, HOUSE_TYPES)
|
||||||
from weboob.capabilities.base import NotAvailable, NotLoaded
|
from woob.capabilities.base import NotAvailable, NotLoaded
|
||||||
from weboob.tools.capabilities.housing.housing import PricePerMeterFilter
|
from woob.tools.capabilities.housing.housing import PricePerMeterFilter
|
||||||
from weboob.tools.compat import urljoin
|
from woob.tools.compat import urljoin
|
||||||
|
|
||||||
|
|
||||||
class CitiesPage(JsonPage):
|
class CitiesPage(JsonPage):
|
||||||
|
@ -2,24 +2,24 @@
|
|||||||
|
|
||||||
# Copyright(C) 2014 Bezleputh
|
# Copyright(C) 2014 Bezleputh
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from weboob.capabilities.housing import Query, POSTS_TYPES, ADVERT_TYPES
|
from woob.capabilities.housing import Query, POSTS_TYPES, ADVERT_TYPES
|
||||||
from weboob.tools.test import BackendTest
|
from woob.tools.test import BackendTest
|
||||||
from weboob.tools.capabilities.housing.housing_test import HousingTest
|
from woob.tools.capabilities.housing.housing_test import HousingTest
|
||||||
|
|
||||||
|
|
||||||
class LogicimmoTest(BackendTest, HousingTest):
|
class LogicimmoTest(BackendTest, HousingTest):
|
||||||
|
@ -2,25 +2,25 @@
|
|||||||
|
|
||||||
# Copyright(C) 2012 Romain Bignon
|
# Copyright(C) 2012 Romain Bignon
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
from weboob.browser import PagesBrowser, URL
|
from woob.browser import PagesBrowser, URL
|
||||||
from weboob.capabilities.housing import TypeNotSupported, POSTS_TYPES
|
from woob.capabilities.housing import TypeNotSupported, POSTS_TYPES
|
||||||
from weboob.tools.compat import urlencode
|
from woob.tools.compat import urlencode
|
||||||
|
|
||||||
from .pages import HousingPage, CitiesPage
|
from .pages import HousingPage, CitiesPage
|
||||||
from .constants import TYPES, RET
|
from .constants import TYPES, RET
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from weboob.capabilities.housing import POSTS_TYPES, HOUSE_TYPES
|
from woob.capabilities.housing import POSTS_TYPES, HOUSE_TYPES
|
||||||
|
|
||||||
TYPES = {POSTS_TYPES.RENT: 'location',
|
TYPES = {POSTS_TYPES.RENT: 'location',
|
||||||
POSTS_TYPES.FURNISHED_RENT: 'location',
|
POSTS_TYPES.FURNISHED_RENT: 'location',
|
||||||
|
@ -2,25 +2,25 @@
|
|||||||
|
|
||||||
# Copyright(C) 2012 Romain Bignon
|
# Copyright(C) 2012 Romain Bignon
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
from weboob.capabilities.housing import (CapHousing, Housing, HousingPhoto,
|
from woob.capabilities.housing import (CapHousing, Housing, HousingPhoto,
|
||||||
ADVERT_TYPES)
|
ADVERT_TYPES)
|
||||||
from weboob.tools.backend import Module
|
from woob.tools.backend import Module
|
||||||
|
|
||||||
from .browser import PapBrowser
|
from .browser import PapBrowser
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ __all__ = ['PapModule']
|
|||||||
class PapModule(Module, CapHousing):
|
class PapModule(Module, CapHousing):
|
||||||
NAME = 'pap'
|
NAME = 'pap'
|
||||||
MAINTAINER = u'Romain Bignon'
|
MAINTAINER = u'Romain Bignon'
|
||||||
EMAIL = 'romain@weboob.org'
|
EMAIL = 'romain@woob.org'
|
||||||
VERSION = '2.1'
|
VERSION = '2.1'
|
||||||
DESCRIPTION = 'French housing website'
|
DESCRIPTION = 'French housing website'
|
||||||
LICENSE = 'AGPLv3+'
|
LICENSE = 'AGPLv3+'
|
||||||
|
@ -2,35 +2,35 @@
|
|||||||
|
|
||||||
# Copyright(C) 2012 Romain Bignon
|
# Copyright(C) 2012 Romain Bignon
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
from weboob.tools.date import parse_french_date
|
from woob.tools.date import parse_french_date
|
||||||
from weboob.browser.pages import HTMLPage, JsonPage, pagination
|
from woob.browser.pages import HTMLPage, JsonPage, pagination
|
||||||
from weboob.browser.elements import ItemElement, ListElement, DictElement, method
|
from woob.browser.elements import ItemElement, ListElement, DictElement, method
|
||||||
from weboob.browser.filters.standard import (CleanText, CleanDecimal, Regexp,
|
from woob.browser.filters.standard import (CleanText, CleanDecimal, Regexp,
|
||||||
Env, BrowserURL, Format, Currency)
|
Env, BrowserURL, Format, Currency)
|
||||||
from weboob.browser.filters.html import Attr, Link, XPath, CleanHTML
|
from woob.browser.filters.html import Attr, Link, XPath, CleanHTML
|
||||||
from weboob.browser.filters.json import Dict
|
from woob.browser.filters.json import Dict
|
||||||
from weboob.capabilities.base import NotAvailable, NotLoaded
|
from woob.capabilities.base import NotAvailable, NotLoaded
|
||||||
from weboob.capabilities.housing import (Housing, City, HousingPhoto,
|
from woob.capabilities.housing import (Housing, City, HousingPhoto,
|
||||||
UTILITIES, ENERGY_CLASS, POSTS_TYPES,
|
UTILITIES, ENERGY_CLASS, POSTS_TYPES,
|
||||||
ADVERT_TYPES, HOUSE_TYPES)
|
ADVERT_TYPES, HOUSE_TYPES)
|
||||||
from weboob.tools.capabilities.housing.housing import PricePerMeterFilter
|
from woob.tools.capabilities.housing.housing import PricePerMeterFilter
|
||||||
|
|
||||||
|
|
||||||
class CitiesPage(JsonPage):
|
class CitiesPage(JsonPage):
|
||||||
|
@ -2,24 +2,24 @@
|
|||||||
|
|
||||||
# Copyright(C) 2012 Romain Bignon
|
# Copyright(C) 2012 Romain Bignon
|
||||||
#
|
#
|
||||||
# This file is part of a weboob module.
|
# This file is part of a woob module.
|
||||||
#
|
#
|
||||||
# This weboob module is free software: you can redistribute it and/or modify
|
# This woob module is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as published by
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This weboob module is distributed in the hope that it will be useful,
|
# This woob module is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU Affero General Public License for more details.
|
# GNU Affero General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this weboob module. If not, see <http://www.gnu.org/licenses/>.
|
# along with this woob module. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from weboob.capabilities.housing import Query, POSTS_TYPES, ADVERT_TYPES
|
from woob.capabilities.housing import Query, POSTS_TYPES, ADVERT_TYPES
|
||||||
from weboob.tools.test import BackendTest
|
from woob.tools.test import BackendTest
|
||||||
from weboob.tools.capabilities.housing.housing_test import HousingTest
|
from woob.tools.capabilities.housing.housing_test import HousingTest
|
||||||
|
|
||||||
|
|
||||||
class PapTest(BackendTest, HousingTest):
|
class PapTest(BackendTest, HousingTest):
|
||||||
|
@ -16,6 +16,5 @@ titlecase
|
|||||||
unidecode
|
unidecode
|
||||||
vobject
|
vobject
|
||||||
whoosh
|
whoosh
|
||||||
git+https://git.weboob.org/weboob/weboob/
|
git+https://gitlab.com/woob/modules/
|
||||||
git+https://git.weboob.org/weboob/modules/
|
|
||||||
money
|
money
|
||||||
|
Loading…
Reference in New Issue
Block a user