Skip to main content

Scrape an artist from SoundCloud

Project description

![Django knockout!](http://i.imgur.com/Nf7Vxq6.gif)

SoundScrape
==============

**SoundScrape** makes it super easy to download artists from SoundCloud.

Usage
---------

First, install it:

```bash
pip install soundscrape
```

To get the data object by itself, you can do this:

```django
{{ myObjects | knockout_data }}
```

Similarly, you can get just the model, if you prefer to load your data from apis, like this:

```django
{{ myObjects | knockout_model }}
```

And even just the bindings:

```django
{{ myObjects | knockout_bindings }}
```

Progammatic Usage
---------

First, import it!

```python
from knockout_modeler.ko import ko, koData, koModel
```

To get the whole template, you can do this:

```python
koString = ko(YourModel)
```

And to get just the data string you can do this..

```python
koString = koData(YourModel)
```

And, surprisingly, you can do the same for the model string:

```python
koString = koModel(YourModel)
```

Custom fieldsets are also allowed:
```python
fields = ['custom', 'fieldset', 'allowed']
koString = ko(entries, fields)
```

Access Control
----------

If you don't want to expose your entire model to Knockout, you can define a function in your model:

```python
def knockout_fields(self):
return['name', 'number']
```

by default, it uses the keys in the object's __to_dict()__ method. For computed properties, you can use python's __property__ function.

Sorting
----------

django-knockout provides some convenient methods for sorting your data. By default, it will use the object's 'id' field, but you can also define your own comparator like so:

```python
@classmethod
def comparator(self):
return 'value'
```

If you don't define a comparator, 'id' must be in your knockout_fields.

Multi-Model Support
----------

django-knockout is all ready set up to be used with multiple types of data at the same time, as bindings happen to specific objects:

```javascript
ko.applyBindings(new MyObjectViewModel(), $('#myobjects')[0]);
```

which means that you somewhere in your HTML template, you will need to have an object with that id, like so:

```html
<div id="myobjects">
<div data-bind="foreach: myobjects">
User <span data-bind="text: myName"></span> is number <span data-bind="text: myNumber"></span>.
</div>
</div>
```

This is handy for prototyping, but more advanced applications may want to use the [master ViewModel](http://stackoverflow.com/a/9294752/1135467) technique instead.

Multi-Data Support
----------

If you're using multiple QuerySets of the same type, you'll need to define a custom name for the data variables.

```django
{{ myObjects | knockout_data:'MyNamedObjectsData' }}
```

Issues
-------

There's probably a lot more that can be done to improve this. Please file issues if you find them!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

soundscrape-0.1.0.tar.gz (2.5 kB view details)

Uploaded Source

File details

Details for the file soundscrape-0.1.0.tar.gz.

File metadata

  • Download URL: soundscrape-0.1.0.tar.gz
  • Upload date:
  • Size: 2.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for soundscrape-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a8d003116f37c0bc8250f736c3a12723430bba719bfa5a67cdbf913782e44387
MD5 a36291f791bb85c378554c501e885fcc
BLAKE2b-256 62d7d7aa76b0cff9f9dbfca55c8cb8ad1df68361f00dc87bac50c373a83dfdf1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page