WebOOB -> Woob

This commit is contained in:
Lucas Verney 2021-04-08 20:08:23 +02:00
父節點 9a532c0da1
當前提交 9b6407db05
共有 43 個檔案被更改,包括 253 行新增273 行删除

1
.gitignore vendored
查看文件

@ -10,5 +10,4 @@ data/
doc/_build
data_rework/
.env
weboob
.htpasswd

查看文件

@ -1,6 +1,6 @@
{
"cSpell.words": [
"Weboob",
"woob",
"flatisfy"
],
"sqltools.useNodeRuntime": true,

查看文件

@ -53,9 +53,9 @@ locale.
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
[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

查看文件

@ -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%"/>
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
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
* [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
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!
* Navitia for their really cool public transportation API.
* 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
housing posts from housing websites. Then, you should install the [`devel`
branch](https://git.weboob.org/weboob/devel/) and update it regularly,
especially if Flatisfy suddenly stops fetching housing posts.
**Important**: Flatisfy relies on [Woob](https://gitlab.com/woob/woob/) to fetch
housing posts from housing websites.
If you `pip install -r requirements.txt` it will install the latest
development version of [WebOOB](https://git.weboob.org/weboob/devel/) and the
[WebOOB modules](https://git.weboob.org/weboob/modules/), which should be the
development version of [Woob](https://gitlab.com/woob/woob/) and the
[Woob modules](https://gitlab.com/woob/modules/), which should be the
best version available out there. You should update these packages regularly,
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
often, you should keep them up to date. This can be done by installing the
`weboob-modules` package listed in the `requirements.txt` and using the
default configuration.
often, you should keep them up to date. This can be done by installing and
upgrading the packages listed in the `requirements.txt` and using the default
configuration.
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
`path_to_weboob_git/modules` (see the configuration section below) and to run
a `git pull; python setup.py install` in the WebOOB git repo often.
`path_to_woob_git/modules` (see the configuration section below) and to run
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.
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
upstream. WebOOB official modules are not synced in the `modules` folder on a
Woob modules. Some changes are made there, which are not backported
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! :)
@ -81,7 +79,7 @@ The available commands are:
_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
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
fetch. If this happens to you, you can set `max_entries` in your config to
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/)
which is required to compute travel times for `WALK`, `BIKE` and `CAR`
modes.
* `modules_path` is the path to the WebOOB modules. It can be `null` if you
want WebOOB to use the locally installed [WebOOB
modules](https://git.weboob.org/weboob/modules), which you should install
* `modules_path` is the path to the Woob modules. It can be `null` if you
want Woob to use the locally installed [Woob
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
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
listening (default to `8080`).
* `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, see [Bottle deployment
doc](http://bottlepy.org/docs/dev/deployment.html).
* `backends` is a list of WebOOB backends to enable. It defaults to any
available and supported WebOOB backend.
* `backends` is a list of Woob backends to enable. It defaults to any
available and supported Woob backend.
* `store_personal_data` is a boolean indicated whether or not Flatisfy should
fetch personal data from housing posts and store them in database. Such
personal data include contact phone number for instance. By default,

查看文件

@ -20,9 +20,6 @@ virtualenv .env && source .env/bin/activate
# Install required Python modules
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
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
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
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
housings posts periodically.
@ -246,4 +243,4 @@ Restart:
```bash
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?
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
is done. As fetching housing posts can take a bit of time (up to 10 minutes),
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 - \
&& 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
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.name "Flatisfy Root"
echo "Update Weboob..."
/home/user/update_weboob.sh
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 load_from_db: Whether to load flats from database or fetch them
using WebOOB.
using Woob.
:return: ``None``.
"""
# Fetch and filter flats list

查看文件

@ -15,7 +15,7 @@ import sys
import traceback
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 tools
@ -23,6 +23,9 @@ from flatisfy.constants import TimeToModes
from flatisfy.models.postal_code import PostalCode
DIRPATH = os.path.dirname(os.path.realpath(__file__))
# Default configuration
DEFAULT_CONFIG = {
# Constraints to match
@ -74,10 +77,8 @@ DEFAULT_CONFIG = {
"max_entries": None,
# Directory in wich data will be put. ``None`` is XDG default location.
"data_directory": None,
# Path to the modules directory containing all Weboob modules. ``None`` if
# ``weboob_modules`` package is pip-installed, and you want to use
# ``pkgresource`` to automatically find it.
"modules_path": None,
# Path to the modules directory containing all Woob modules.
"modules_path": os.path.join(DIRPATH, '..', 'modules'),
# SQLAlchemy URI to the database to use
"database": None,
# Path to the Whoosh search index file. Use ``None`` to put it in
@ -89,7 +90,7 @@ DEFAULT_CONFIG = {
"host": "127.0.0.1",
# Web server to use to serve the webapp (see Bottle deployment doc)
"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,
# Should email notifications be sent?
"send_email": False,

查看文件

@ -20,27 +20,27 @@ LOGGER = logging.getLogger(__name__)
try:
from weboob.capabilities.housing import Query, POSTS_TYPES, HOUSE_TYPES
from weboob.core.bcall import CallErrors
from weboob.core.ouiboube import WebNip
from weboob.tools.json import WeboobEncoder
from woob.capabilities.housing import Query, POSTS_TYPES, HOUSE_TYPES
from woob.core.bcall import CallErrors
from woob.core.ouiboube import WebNip
from woob.tools.json import WoobEncoder
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
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.
"""
@staticmethod
def version():
"""
Get WebOOB version.
Get Woob version.
:return: The installed WebOOB version.
:return: The installed Woob version.
"""
return WebNip.VERSION
@ -64,7 +64,7 @@ class WebOOBProxy(object):
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.
"""
@ -95,13 +95,13 @@ class WebOOBProxy(object):
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
cities, to comply with housing websites limitations.
:param constraints_dict: A dictionary of constraints, as defined in the
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.
"""
queries = []
@ -163,9 +163,9 @@ class WebOOBProxy(object):
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 store_personal_data: Whether personal data should be fetched
from housing posts (phone number etc).
@ -181,7 +181,7 @@ class WebOOBProxy(object):
"search_housings",
query,
# 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.
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:
housing.phone = None
housings.append(json.dumps(housing, cls=WeboobEncoder))
housings.append(json.dumps(housing, cls=WoobEncoder))
except CallErrors as exc:
# If an error occured, just log it
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.
: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)
:param store_personal_data: Whether personal data should be fetched
from housing posts (phone number etc).
@ -223,7 +223,7 @@ class WebOOBProxy(object):
# Otherwise, we miss the @backend afterwards
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
# If an error occured, just log it
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):
"""
Fetch the available flats using the Flatboob / WebOOB config.
Fetch the available flats using the Woob config.
:param config: A config dict.
: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():
LOGGER.info("Loading flats for constraint %s...", constraint_name)
with WebOOBProxy(config) as webOOB_proxy:
queries = webOOB_proxy.build_queries(constraint)
with WoobProxy(config) as woob_proxy:
queries = woob_proxy.build_queries(constraint)
housing_posts = []
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"]]
LOGGER.info("Fetched %d flats.", len(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
return fetched_flats
@ -266,18 +266,18 @@ def fetch_details_rate_limited(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 flat_id: ID of the flat to fetch details for.
: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)
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 = WebOOBProxy.restore_decimal_fields(flat_details)
flat_details = json.loads(woob_output)
flat_details = WoobProxy.restore_decimal_fields(flat_details)
LOGGER.info("Fetched details for flat %s.", flat_id)
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():
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
# of the others, to avoid over-deduplication.
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"])
if flat1_phone and flat2_phone:
# 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:
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"])
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(",")
# 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.

查看文件

@ -68,7 +68,7 @@ class Flat(BASE):
__tablename__ = "flats"
__searchable__ = ["title", "text", "station", "location", "details", "notes"]
# Weboob data
# Woob data
id = Column(String, primary_key=True)
area = Column(Float)
bedrooms = Column(Float)

查看文件

@ -2,20 +2,20 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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

查看文件

@ -2,25 +2,25 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.capabilities.housing import (TypeNotSupported, POSTS_TYPES,
from woob.browser import PagesBrowser, URL
from woob.capabilities.housing import (TypeNotSupported, POSTS_TYPES,
HOUSE_TYPES)
from weboob.tools.compat import urlencode
from woob.tools.compat import urlencode
from .pages import CitiesPage, SearchPage, HousingPage, HousingPage2, PhonePage

查看文件

@ -2,24 +2,24 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.capabilities.housing import CapHousing, Housing, HousingPhoto
from woob.tools.backend import Module
from woob.capabilities.housing import CapHousing, Housing, HousingPhoto
from .browser import ExplorimmoBrowser

查看文件

@ -2,20 +2,20 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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
import json
@ -23,19 +23,19 @@ import math
import re
from decimal import Decimal
from datetime import datetime
from weboob.browser.filters.json import Dict
from weboob.browser.elements import ItemElement, ListElement, DictElement, method
from weboob.browser.pages import JsonPage, HTMLPage, pagination
from weboob.browser.filters.standard import (CleanText, CleanDecimal, Currency,
from woob.browser.filters.json import Dict
from woob.browser.elements import ItemElement, ListElement, DictElement, method
from woob.browser.pages import JsonPage, HTMLPage, pagination
from woob.browser.filters.standard import (CleanText, CleanDecimal, Currency,
Regexp, Env, BrowserURL, Filter,
Format)
from weboob.browser.filters.html import Attr, CleanHTML, XPath
from weboob.capabilities.base import NotAvailable, NotLoaded, Currency as BaseCurrency
from weboob.capabilities.housing import (Housing, HousingPhoto, City,
from woob.browser.filters.html import Attr, CleanHTML, XPath
from woob.capabilities.base import NotAvailable, NotLoaded, Currency as BaseCurrency
from woob.capabilities.housing import (Housing, HousingPhoto, City,
UTILITIES, ENERGY_CLASS, POSTS_TYPES,
ADVERT_TYPES, HOUSE_TYPES)
from weboob.tools.capabilities.housing.housing import PricePerMeterFilter
from weboob.tools.compat import unquote
from woob.tools.capabilities.housing.housing import PricePerMeterFilter
from woob.tools.compat import unquote
class CitiesPage(JsonPage):

查看文件

@ -2,24 +2,24 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.tools.capabilities.housing.housing_test import HousingTest
from weboob.tools.test import BackendTest
from woob.capabilities.housing import Query, ADVERT_TYPES, POSTS_TYPES
from woob.tools.capabilities.housing.housing_test import HousingTest
from woob.tools.test import BackendTest
class ExplorimmoTest(BackendTest, HousingTest):

查看文件

@ -2,20 +2,20 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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

查看文件

@ -2,25 +2,25 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.browser import PagesBrowser, URL
from woob.browser import PagesBrowser, URL
from .constants import QUERY_TYPES
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 = {
POSTS_TYPES.RENT: 'location',

查看文件

@ -2,26 +2,26 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.tools.backend import Module
from weboob.capabilities.housing import CapHousing, Housing, ADVERT_TYPES, HousingPhoto
from woob.tools.backend import Module
from woob.capabilities.housing import CapHousing, Housing, ADVERT_TYPES, HousingPhoto
from .browser import FonciaBrowser

查看文件

@ -2,37 +2,37 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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
import datetime
from weboob.browser.pages import JsonPage, HTMLPage, pagination
from weboob.browser.filters.standard import (
from woob.browser.pages import JsonPage, HTMLPage, pagination
from woob.browser.filters.standard import (
CleanDecimal, CleanText, Currency, Date, Env, Format, Regexp, RegexpError
)
from weboob.browser.filters.html import AbsoluteLink, Attr, Link, XPathNotFound
from weboob.browser.elements import ItemElement, ListElement, method
from weboob.capabilities.base import NotAvailable, NotLoaded
from weboob.capabilities.housing import (
from woob.browser.filters.html import AbsoluteLink, Attr, Link, XPathNotFound
from woob.browser.elements import ItemElement, ListElement, method
from woob.capabilities.base import NotAvailable, NotLoaded
from woob.capabilities.housing import (
City, Housing, HousingPhoto,
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

查看文件

@ -2,28 +2,28 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.capabilities.housing import (
from woob.capabilities.housing import (
Query, POSTS_TYPES, ADVERT_TYPES
)
from weboob.tools.capabilities.housing.housing_test import HousingTest
from weboob.tools.test import BackendTest
from woob.tools.capabilities.housing.housing_test import HousingTest
from woob.tools.test import BackendTest
class FonciaTest(BackendTest, HousingTest):

查看文件

@ -2,20 +2,20 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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

查看文件

@ -2,25 +2,25 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.capabilities.housing import (TypeNotSupported, POSTS_TYPES,
from woob.browser import PagesBrowser, URL
from woob.capabilities.housing import (TypeNotSupported, POSTS_TYPES,
HOUSE_TYPES, ADVERT_TYPES)
from .pages import CityListPage, HousingListPage, HousingPage, PhonePage, HomePage

查看文件

@ -2,24 +2,24 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.capabilities.housing import (CapHousing, Housing, HousingPhoto)
from woob.tools.backend import Module
from woob.capabilities.housing import (CapHousing, Housing, HousingPhoto)
from .browser import LeboncoinBrowser

查看文件

@ -2,35 +2,35 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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
import requests
from weboob.browser.pages import HTMLPage, JsonPage, pagination
from weboob.browser.elements import ItemElement, ListElement, method, DictElement
from weboob.capabilities.base import Currency as BaseCurrency
from weboob.browser.filters.standard import (CleanText, CleanDecimal, _Filter,
from woob.browser.pages import HTMLPage, JsonPage, pagination
from woob.browser.elements import ItemElement, ListElement, method, DictElement
from woob.capabilities.base import Currency as BaseCurrency
from woob.browser.filters.standard import (CleanText, CleanDecimal, _Filter,
Env, DateTime, Format)
from weboob.browser.filters.json import Dict
from weboob.capabilities.housing import (City, Housing, HousingPhoto,
from woob.browser.filters.json import Dict
from woob.capabilities.housing import (City, Housing, HousingPhoto,
UTILITIES, ENERGY_CLASS, POSTS_TYPES,
ADVERT_TYPES, HOUSE_TYPES)
from weboob.capabilities.base import NotAvailable
from weboob.tools.capabilities.housing.housing import PricePerMeterFilter
from woob.capabilities.base import NotAvailable
from woob.tools.capabilities.housing.housing import PricePerMeterFilter
from decimal import Decimal
from lxml import etree

查看文件

@ -2,25 +2,25 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.tools.value import Value
from weboob.capabilities.housing import Query, POSTS_TYPES, ADVERT_TYPES
from weboob.tools.capabilities.housing.housing_test import HousingTest
from woob.tools.test import BackendTest
from woob.tools.value import Value
from woob.capabilities.housing import Query, POSTS_TYPES, ADVERT_TYPES
from woob.tools.capabilities.housing.housing_test import HousingTest
class LeboncoinTest(BackendTest, HousingTest):

查看文件

@ -2,20 +2,20 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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

查看文件

@ -2,25 +2,25 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.browser.profiles import Firefox
from weboob.capabilities.housing import (TypeNotSupported, POSTS_TYPES,
from woob.browser import PagesBrowser, URL
from woob.browser.profiles import Firefox
from woob.capabilities.housing import (TypeNotSupported, POSTS_TYPES,
HOUSE_TYPES)
from .pages import CitiesPage, SearchPage, HousingPage, PhonePage

查看文件

@ -2,26 +2,26 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.capabilities.housing import (CapHousing, Housing, HousingPhoto,
from woob.tools.backend import Module
from woob.capabilities.housing import (CapHousing, Housing, HousingPhoto,
ADVERT_TYPES)
from weboob.capabilities.base import UserError
from woob.capabilities.base import UserError
from .browser import LogicimmoBrowser

查看文件

@ -2,36 +2,36 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.browser.pages import HTMLPage, JsonPage
from weboob.browser.elements import ItemElement, ListElement, DictElement, method
from weboob.browser.filters.json import Dict
from weboob.browser.filters.standard import (Currency, Format, CleanText,
from woob.browser.pages import HTMLPage, JsonPage
from woob.browser.elements import ItemElement, ListElement, DictElement, method
from woob.browser.filters.json import Dict
from woob.browser.filters.standard import (Currency, Format, CleanText,
Regexp, CleanDecimal, Date, Env,
BrowserURL)
from weboob.browser.filters.html import Attr, XPath, CleanHTML
from weboob.capabilities.housing import (Housing, HousingPhoto, City,
from woob.browser.filters.html import Attr, XPath, CleanHTML
from woob.capabilities.housing import (Housing, HousingPhoto, City,
UTILITIES, ENERGY_CLASS, POSTS_TYPES,
ADVERT_TYPES, HOUSE_TYPES)
from weboob.capabilities.base import NotAvailable, NotLoaded
from weboob.tools.capabilities.housing.housing import PricePerMeterFilter
from weboob.tools.compat import urljoin
from woob.capabilities.base import NotAvailable, NotLoaded
from woob.tools.capabilities.housing.housing import PricePerMeterFilter
from woob.tools.compat import urljoin
class CitiesPage(JsonPage):

查看文件

@ -2,24 +2,24 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.tools.test import BackendTest
from weboob.tools.capabilities.housing.housing_test import HousingTest
from woob.capabilities.housing import Query, POSTS_TYPES, ADVERT_TYPES
from woob.tools.test import BackendTest
from woob.tools.capabilities.housing.housing_test import HousingTest
class LogicimmoTest(BackendTest, HousingTest):

查看文件

@ -2,25 +2,25 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.capabilities.housing import TypeNotSupported, POSTS_TYPES
from weboob.tools.compat import urlencode
from woob.browser import PagesBrowser, URL
from woob.capabilities.housing import TypeNotSupported, POSTS_TYPES
from woob.tools.compat import urlencode
from .pages import HousingPage, CitiesPage
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',
POSTS_TYPES.FURNISHED_RENT: 'location',

查看文件

@ -2,25 +2,25 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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)
from weboob.tools.backend import Module
from woob.tools.backend import Module
from .browser import PapBrowser
@ -31,7 +31,7 @@ __all__ = ['PapModule']
class PapModule(Module, CapHousing):
NAME = 'pap'
MAINTAINER = u'Romain Bignon'
EMAIL = 'romain@weboob.org'
EMAIL = 'romain@woob.org'
VERSION = '2.1'
DESCRIPTION = 'French housing website'
LICENSE = 'AGPLv3+'

查看文件

@ -2,35 +2,35 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 decimal import Decimal
from weboob.tools.date import parse_french_date
from weboob.browser.pages import HTMLPage, JsonPage, pagination
from weboob.browser.elements import ItemElement, ListElement, DictElement, method
from weboob.browser.filters.standard import (CleanText, CleanDecimal, Regexp,
from woob.tools.date import parse_french_date
from woob.browser.pages import HTMLPage, JsonPage, pagination
from woob.browser.elements import ItemElement, ListElement, DictElement, method
from woob.browser.filters.standard import (CleanText, CleanDecimal, Regexp,
Env, BrowserURL, Format, Currency)
from weboob.browser.filters.html import Attr, Link, XPath, CleanHTML
from weboob.browser.filters.json import Dict
from weboob.capabilities.base import NotAvailable, NotLoaded
from weboob.capabilities.housing import (Housing, City, HousingPhoto,
from woob.browser.filters.html import Attr, Link, XPath, CleanHTML
from woob.browser.filters.json import Dict
from woob.capabilities.base import NotAvailable, NotLoaded
from woob.capabilities.housing import (Housing, City, HousingPhoto,
UTILITIES, ENERGY_CLASS, POSTS_TYPES,
ADVERT_TYPES, HOUSE_TYPES)
from weboob.tools.capabilities.housing.housing import PricePerMeterFilter
from woob.tools.capabilities.housing.housing import PricePerMeterFilter
class CitiesPage(JsonPage):

查看文件

@ -2,24 +2,24 @@
# 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
# the Free Software Foundation, either version 3 of the License, or
# (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
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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 weboob.tools.test import BackendTest
from weboob.tools.capabilities.housing.housing_test import HousingTest
from woob.capabilities.housing import Query, POSTS_TYPES, ADVERT_TYPES
from woob.tools.test import BackendTest
from woob.tools.capabilities.housing.housing_test import HousingTest
class PapTest(BackendTest, HousingTest):

查看文件

@ -16,6 +16,5 @@ titlecase
unidecode
vobject
whoosh
git+https://git.weboob.org/weboob/weboob/
git+https://git.weboob.org/weboob/modules/
git+https://gitlab.com/woob/modules/
money