Git Product home page Git Product logo

php-quandl's Introduction

PHP Quandl

Latest Stable Version Build Status Maintainability


This library provides easy access to the Quandl API using PHP.

It provides several convenience methods to common Quandl API endpoints, as well as a generic method to access any of Quandl's endpoints directly.


Geting Started

Include the Quandl.php class in your code, and run one of the examples.

To install with composer:

$ composer require dannyben/php-quandl

Examples

This is a basic call. It will return a PHP object with price data for AAPL:

$api_key = "YOUR_KEY_HERE";
$quandl = new Quandl($api_key);
$data = $quandl->getSymbol("WIKI/AAPL");

You may pass any parameter that is mentioned in the Quandl documentation:

$quandl = new Quandl($api_key);
$data = $quandl->getSymbol($symbol, [
	"sort_order"      => "desc",
	"rows"            => 10,
	"column_index"    => 4, 
]);

The date range options get a special treatment. You may use any date string that PHP's strtotime() understands.

$quandl = new Quandl($api_key, "csv");
$data = $quandl->getSymbol($symbol, [
	"trim_start" => "today-30 days",
	"trim_end"   => "today",
]);

You can also search the entire Quandl database and get a list of supported symbols in a data source:

$quandl = new Quandl($api_key);
$data = $quandl->getSearch("crude oil");
$data = $quandl->getList("WIKI", 1, 10);

To access any Quandl API endpoint directly, use the get method

$quandl = new Quandl($api_key);
$data = $quandl->get("databases/WIKI");

More examples can be found in the examples.php file

Caching

You may provide the quandl object with a cache handler function. This function should be responsible for both reading from your cache and storing to it.

See the example_cache.php file.

Reference

Constructor

The constructor accepts two optional parameters: $api_key and $format:

$quandl = new Quandl("YOUR KEY", "csv");

You may also set these properties later (see below);

Public Properties

$api_key

$quandl->api_key = "YOUR KEY";

Set your API key

$format

$quandl->format = 'csv';

Set the output format. Can be: csv, xml, json, and object (which will return a php object obtained with json_decode()).

$force_curl

$quandl->force_curl = true;

Force download using curl. By default, we will try to download with file_get_contents if available, and fall back to curl only as a last resort.

$no_ssl_verify

$quandl->no_ssl_verify = true;

Disables curl SSL verification. Set to true if you get an error saying "SSL certificate problem".

$timeout

$quandl->timeout = 60;

Set the timeout for the download operations.

$last_url

print $quandl->last_url;

Holds the last API URL as requested from Quandl, for debugging.

$error

print $quandl->error;

In case there was an error getting the data from Quandl, the request response will be false and this property will contain the error message.

$was_cached

print $quandl->was_cached;

When using a cache handler, this property will be set to true if the response came from the cache.

Methods

get

mixed get( string $path [, array $params ] )

// Examples
$data = $quandl->get( 'datasets/EOD/QQQ' );
$data = $quandl->get( 'datasets/EOD/QQQ', ['rows' => 5] );

Returns an object containing the response from any of Quandl's API endpoints. The format of the result depends on the value of $quandl->format.

The optional parameters array is an associative key => value array with any of the parameters supported by Quandl.

You do not need to pass auth_token in the array, it will be automatically appended.

getSymbol

mixed getSymbol( string $symbol [, array $params ] )

// Examples
$data = $quandl->getSymbol( 'WIKI/AAPL' );
$data = $quandl->getSymbol( 'WIKI/AAPL', ['rows' => 5] );

Returns an object containing data for a given symbol. The format of the result depends on the value of $quandl->format.

The optional parameters array is an associative key => value array with any of the parameters supported by Quandl.

You do not need to pass auth_token in the array, it will be automatically appended.

getSearch

mixed getSearch( string $query [, int $page, int $per_page] )

// Examples
$data = $quandl->getSearch( "gold" );
$data = $quandl->getSearch( "gold", 1, 10 );

Returns a search result object. Number of results per page is limited to 300 by default.

Note that currently Quandl does not support CSV response for this node so if $quandl->format is "csv", this call will return a JSON string instead.

getList

mixed getList( string $source [, int $page, int $per_page] )

// Examples
$data = $quandl->getList( 'WIKI' );
$data = $quandl->getList( 'WIKI', 1, 10 );

Returns a list of symbols in a given source. Number of results per page is limited to 300 by default.

getMeta

mixed getMeta( string $source )

// Example
$data = $quandl->getMeta( 'WIKI' );

Returns metadata about a symbol.

getDatabases

mixed getDatabases( [int $page, int $per_page] )

// Examples
$data = $quandl->getDatabases();
$data = $quandl->getDatabases( 1, 10 );

Returns a list of available databases. Number of results per page is limited to 100 by default.

getBulk

This feature is only supported with premium databases.

boolean getBulk( string $database, string $path [, boolean $complete] )

// Examples
boolean getBulk( 'EOD', 'eod-partial.zip' );
boolean getBulk( 'EOD', 'eod-full.zip', true );

Downloads the entire database and saves it to a ZIP file. If $complete is true (false by default), it will download the entire database, otherwise, it will download the last day only.

php-quandl's People

Contributors

dannyben avatar morticue avatar robinvalk avatar royopa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

php-quandl's Issues

timeout options

There are no timeout options
neither for standard mode nor force_curl mode
php.ini has default_socket_timeout => 60 option, but sometimes getList hangs forever
strace shows nothing but "read(0," (or something similiar) in standard mode and in curl mode there is infinite poll/timeout loop

file_get_contents disabled on server, included a curl attempt before reporting error.

If "allow_url_fopen" is not set on the server in php.ini then file_get_contents always returns null. I've included a new version executeDownload that I used to get around this issue. It uses the more secure curl function.

private function executeDownload($url) {
    if($this->cache_handler == null) {
        $data = @file_get_contents($url);
        if(!$data) {
            if (function_exists('curl_version')) {
                $curl = curl_init();
                 curl_setopt($curl, CURLOPT_URL, $url);
                 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
                 $data = curl_exec($curl);
                 curl_close($curl);              
                if(!$data) $this->error = "Invalid URL";
            } else {
                $this->error = "Invalid URL or check php.ini for allow_url_fopen";
            }
        }
    }
    else {
        $data = $this->attemptGetFromCache($url);
    }
    return $data;
}

crazynamer.com

Greetings Danny, @DannyBen a couple colleagues and I wrote a slack bot integration to hit crazynamer to give them a temporary title. It was a company favorite. Just wondering why the site was taken down, and if it’s not coming back up could you point me to the code you had for it so we can stand it up locally?

I understand this is not how to use this platform but couldn’t figure a better way to try and contact you.

Fetching EOD data of multiple symbols via one api call

I was wondering if it is possible to fetch the EOD data of multiple symbols via one api call?
One request per symbol is quite slow but I can't find any information that there's a better and faster solution.

Do you have any recommendations or knowledge that there is a way to achieve this?

Test fails due to Quandl per_page bug

Quandl currently has a problem with their per_page parameter. This causes the phpunit test to fail. Pending response from Quandl team.

This call should return two documents, it returns more.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.