Metadata-Version: 2.0
Name: daftlistings
Version: 1.4.0
Summary: A library that enables programmatic interaction with daft.ie. 
Home-page: https://github.com/AnthonyBloomer/daftlistings
Author: Anthony Bloomer
Author-email: ant0@protonmail.ch
License: MIT
Description-Content-Type: UNKNOWN
Keywords: daft,web scraping,real estate,web scraper,daft.ie
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Software Development :: Libraries
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Requires-Dist: beautifulsoup4
Requires-Dist: enum34
Requires-Dist: requests

daftlistings
============

|Build Status| |codecov|

Table of Contents
-----------------

-  `Overview`_
-  `Install`_
-  `Basic Usage`_
-  `Examples`_
-  `Documentation`_
-  `Development Version`_
-  `Tests`_
-  `Contributing`_

Overview
--------

Daftlistings enables programmatic interaction with `daft.ie`_.

Install
-------

daftlistings is available on the Python Package Index (PyPI) at https://pypi.python.org/pypi/daftlistings

You can install daftlistings using pip.

::

    $ pip install daftlistings



Basic Usage
-----------

.. code:: python

    from daftlistings import Daft

    daft = Daft()

    listings = daft.get_listings()

    for listing in listings:
        print(listing.get_formalised_address())
        print(listing.get_daft_link())


Examples
--------

Get the current properties for rent in Dublin that are between €1000 and
€1500 per month and contact the advertiser for each listing.

.. code:: python

    from daftlistings import Daft, CommercialType, RentType

    daft = Daft()
    daft.set_county('Dublin City')
    daft.set_listing_type(RentType.APARTMENTS)
    daft.set_min_price(1000)
    daft.set_max_price(1500)

    listings = daft.get_listings()

    for listing in listings:
        print(listing.get_formalised_address())
        print(listing.get_daft_link())
        print(listing.get_price())
        for facility in listing.get_facilities():
            print(facility)

        contact = listing.contact_advertiser(
            name="Jane Doe",
            contact_number="019202222",
            email="jane@example.com",
            message="Hi, I seen your listing on daft.ie and I would like to schedule a viewing."
        )

        if contact:
            print("Message sent")

Retrieve commercial office listings in Dublin.

.. code:: python

    from daftlistings import Daft, CommercialType, SaleType

    daft = Daft()

    daft.set_county("Dublin")
    daft.set_listing_type(SaleType.COMMERCIAL)
    daft.set_commercial_property_type(CommercialType.OFFICE)

    listings = daft.get_listings()

    for listing in listings:
        print(listing.get_formalised_address())
        print(listing.get_daft_link())
        print(listing.get_price())

Get the current sale agreed prices for properties in Dublin.

.. code:: python

    from daftlistings import Daft, SaleType

    daft = Daft()

    daft.set_county('Dublin City')
    daft.set_listing_type(SaleType.PROPERTIES)
    daft.set_min_price(1000)
    daft.set_max_price(1500)
    daft.set_sale_agreed(True)

    listings = daft.get_listings()

    for listing in listings:
        print(listing.get_formalised_address())
        print(listing.get_daft_link())
        print(listing.get_price())

You can sort the listings by price, distance, upcoming viewing or date using the SortType object.
The SortOrder object allows you to sort the listings descending or ascending. For example:

.. code:: python

    from daftlistings import SortOrder, SortType, SaleType, SortOrder

    daft = Daft()

    daft.set_county('Dublin City')
    daft.set_area('Lucan')
    daft.set_listing_type(SaleType.PROPERTIES)
    daft.set_min_price(150000)
    daft.set_max_price(175000)
    daft.set_sort_order(SortOrder.ASCENDING)
    daft.set_sort_by(SortType.PRICE)


    listings = daft.get_listings()

    for listing in listings:
        print(listing.get_formalised_address())
        print(listing.get_daft_link())
        print(listing.get_price())


Retrieve all properties for sale in a given list of areas. This example loops through each page of listings and prints the result.

.. code:: python

    from daftlistings import Daft, SaleType

    offset = 0
    pages = True

    while pages:
        daft = Daft()
        daft.set_county('Dublin')
        daft.set_area([
            'Blackrock',
            'Castleknock',
            'Rathmines'
        ])
        daft.set_listing_type(SaleType.PROPERTIES)
        daft.set_offset(offset)

        listings = daft.get_listings()

        if not listings:
            pages = False

        for listing in listings:
            print(listing.get_agent_url())
            print(listing.get_price())
            print(listing.get_formalised_address())
            print(listing.get_daft_link())
            print(' ')


        offset += 10

Get apartments to let in Dublin City along the Dart line.

.. code:: python

        from daftlistings import Daft, AreaType, RentType, TransportRoute

        daft = Daft()

        daft.set_county('Dublin City')
        daft.set_area_type(AreaType.TRANSPORT_ROUTE)
        daft.set_listing_type(RentType.APARTMENTS)
        daft.set_public_transport_route(TransportRoute.DART)

        listings = daft.get_listings()

        for listing in listings:
            print(listing.get_formalised_address())
            print(listing.get_price())
            print(' ')

Find student accommodation near Trinity College Dublin that is between 800 and 1000 per month.

.. code:: python

    from daftlistings import Daft, University, StudentAccommodationType, SortType, SortOrder, RentType

    daft = Daft()

    daft.set_listing_type(RentType.STUDENT_ACCOMMODATION)
    daft.set_university(University.TCD)
    daft.set_student_accommodation_type(StudentAccommodationType.ROOM_TO_SHARE)
    daft.set_min_price(800)
    daft.set_max_price(1000)
    daft.set_sort_by(SortType.PRICE)
    daft.set_sort_order(SortOrder.ASCENDING)
    listings = daft.get_listings()

    for listing in listings:
        print(listing.get_price())
        print(listing.get_formalised_address())
        print(listing.get_daft_link())
        print(' ')

Search for people to teamup with in Dublin.

.. code:: python

    from daftlistings import TeamUpWith, Teamup, County

    t = Teamup()
    t.set_county(County.DUBLIN)
    t.set_team_up_with(TeamUpWith.ANY)
    t.set_rent(800)
    t.set_move_in_date(0)
    results = t.get_results()

    for r in results:
        print("Name: " + r.name())
        print("Gender: " + r.gender())
        print("Price Range: " + r.price_range())
        print("Areas of Interest: " + r.areas_of_interest())
        print("Looking for: " + r.looking_for())
        print("Length of Lease: " + r.length_of_lease())
        print("Date available: " + r.date_available())
        print("Date entered: " + r.date_entered())
        print("URL: " + r.url())
        print("")


Documentation
-------------

The current documentation can be viewed here: https://anthonybloomer.github.io/daftlistings/

The documentation has been created using mkdocs.

To update the documentation, clone the repository and edit **docs/index.md**

To view your changes, run:

.. code:: shell

    $ mkdocs serve

To build the documentation, run:

.. code:: shell

    $ mkdocs build

This will create a directory called site. Copy the site directory to a new directory and checkout gh-pages

.. code::

    $ git checkout gh-pages

Copy any changes from the **site** directory to this directory and push your changes.


Development Version
-------------------

Before any new changes are pushed to PyPi, you can clone the development version to avail of any new featuress.

::

    $ git clone https://github.com/AnthonyBloomer/daftlistings.git
    $ cd daftlistings
    $ virtualenv env
    $ source env/bin/activate
    $ pip install -r requirements.txt

Tests
-----


The Python unittest module contains its own test discovery function, which you can run from the command line:

::

    $ python -m unittest discover tests/


Contributing
------------

- Fork the project and clone locally.
- Create a new branch for what you're going to work on. 
- Push to your origin repository.
- Include tests and update documentation if necessary.
- Create a new pull request in GitHub.

.. |Build Status| image:: https://travis-ci.org/AnthonyBloomer/daftlistings.svg?branch=master
   :target: https://travis-ci.org/AnthonyBloomer/daftlistings

.. |codecov| image:: https://codecov.io/gh/AnthonyBloomer/daftlistings/branch/master/graph/badge.svg
   :target: https://codecov.io/gh/AnthonyBloomer/daftlistings


.. _Overview: #overview
.. _Install: #install
.. _Basic Usage: #basic-usage
.. _Examples: #examples
.. _Documentation: #documentation
.. _Development Version: #development-version
.. _Tests: #tests
.. _Contributing: #contributing

.. _daft.ie: https://daft.ie


