purdie 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +56 -5
 - data/_config/defaults.yaml +9 -8
 - data/features/flickr-alternative-outfile.feature +29 -0
 - data/features/support/fixtures/_config/purdie.yaml +2 -2
 - data/features/support/fixtures/vcr/Vimeo/Generate_Vimeo_YAML.yml +3 -3
 - data/lib/purdie/bernard.rb +2 -2
 - data/lib/purdie/config.rb +4 -0
 - data/lib/purdie/ingester.rb +13 -3
 - data/lib/purdie/services/flickr.rb +4 -2
 - data/lib/purdie/services/soundcloud.rb +4 -2
 - data/lib/purdie/services/vimeo.rb +4 -2
 - data/lib/purdie/version.rb +1 -1
 - data/spec/config_spec.rb +2 -2
 - data/spec/purdie_spec.rb +1 -1
 - metadata +3 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: d177170f97f8a450e4d71facbf39f758da4b21ef
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: ea6e3b001078141fd3c36ac313245b3b8a658e17
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 7e614308d4a9467a0dda0f69b38d9ee425ce8584132c0f06cec0bdcd046868585cfc32160480f567b4372baaddbd76041a0c71cc03c69ad2bd72fd55e2f75318
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 9fe6faca8d5736f14647826b88927ef1c389744b6e220cc4b8db0b91c1fd55d5127c53a52742e7580460d544f3cb6631c625c9cd76aa8b4d86c923076aede7d8
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -10,7 +10,7 @@ 
     | 
|
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            We have music on SoundCloud, photos on Flickr, and videos on Vimeo, and we want to feature them on [http://rawfunkmaharishi.uk/](http://rawfunkmaharishi.uk/). Up until now, this has been managed by curating, by hand (or [very shonky scripts](https://github.com/rawfunkmaharishi/rawfunkmaharishi.github.io/blob/master/flickriser.rb)), [bits](https://github.com/rawfunkmaharishi/rawfunkmaharishi.github.io/blob/master/_data/sounds.yml) [of](https://github.com/rawfunkmaharishi/rawfunkmaharishi.github.io/blob/master/_data/pictures.yml) [YAML](https://github.com/rawfunkmaharishi/rawfunkmaharishi.github.io/blob/master/_data/videos.yml) to feed into Jekyll, but this gets old quickly, especially when you run into things like SoundCloud's decision to only expose the track ID deep inside the embeddable iframe code.
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            But  
     | 
| 
      
 13 
     | 
    
         
            +
            But this is dumb. It's 2015 and everything has an API, so let's build a robot to do this stuff properly!
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
            ##The great metadata shift
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
         @@ -24,19 +24,70 @@ Am I going to regret these decisions? Almost certainly. 
     | 
|
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
            ##Using it
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
            You need to  
     | 
| 
      
 27 
     | 
    
         
            +
            You need to create a *_sources* directory in your Jekyll project, containing files with one-URL-per-line, like this:
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
                https://soundcloud.com/rawfunkmaharishi/hexaflexagon-1
         
     | 
| 
       30 
30 
     | 
    
         
             
                https://soundcloud.com/rawfunkmaharishi/junalbandi-3
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 32 
     | 
    
         
            +
            (you can alternatively specify a source file on the command line with the `-f` flag).
         
     | 
| 
      
 33 
     | 
    
         
            +
             
         
     | 
| 
      
 34 
     | 
    
         
            +
            You also need a *.env* file with API secrets in it:
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                FLICKR_API_KEY: this_a_key
         
     | 
| 
      
 37 
     | 
    
         
            +
                FLICKR_SECRET: this_a_secret
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                SOUNDCLOUD_CLIENT_ID: this_a_client_is
         
     | 
| 
      
 40 
     | 
    
         
            +
                SOUNDCLOUD_USER_ID: this_a_user_id
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                VIMEO_BEARER_TOKEN: this_bearer_token
         
     | 
| 
      
 43 
     | 
    
         
            +
                
         
     | 
| 
      
 44 
     | 
    
         
            +
            (get those keys from [Flickr](https://www.flickr.com/services/apps/create/apply), [SoundCloud](http://soundcloud.com/you/apps/new) and [Vimeo](https://developer.vimeo.com/apps/new))
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            And then you can run
         
     | 
| 
       33 
47 
     | 
    
         | 
| 
       34 
48 
     | 
    
         
             
                purdie fetch
         
     | 
| 
       35 
49 
     | 
    
         | 
| 
       36 
50 
     | 
    
         
             
            and it will dump out YAML files into *_data* ready for Jekyll to consume.
         
     | 
| 
       37 
51 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
      
 52 
     | 
    
         
            +
            ###Customisation
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
            You can supply your own _config/purdie.yaml_ file to specify a few things:
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                # Flickr photos are happy to have a null title
         
     | 
| 
      
 57 
     | 
    
         
            +
                default_title: Raw Funk Maharishi 
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                # Map Flickr users to better names
         
     | 
| 
      
 60 
     | 
    
         
            +
                photographer_lookups:
         
     | 
| 
      
 61 
     | 
    
         
            +
                  pikesley: sam
         
     | 
| 
      
 62 
     | 
    
         
            +
                  
         
     | 
| 
      
 63 
     | 
    
         
            +
                # Specify output files per-service
         
     | 
| 
      
 64 
     | 
    
         
            +
                services:
         
     | 
| 
      
 65 
     | 
    
         
            +
                  Flickr:
         
     | 
| 
      
 66 
     | 
    
         
            +
                    output_file: "_outfiles/photos.yaml"
         
     | 
| 
      
 67 
     | 
    
         
            +
                    
         
     | 
| 
      
 68 
     | 
    
         
            +
            (see [this](https://github.com/rawfunkmaharishi/purdie/blob/master/_config/defaults.yaml) for some other things you can tweak)
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            Tread carefully for now, because my metadata hacks aren't fully documented. 
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            ##What next?
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
            There's no reason I couldn't support other services - YouTube springs immediately to mind, and others should be fairly simple. There's some introspection magic at the heart of all of this which means that as long as each service is represented by a class that:
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
            * includes the `Purdie::Ingester` module, and
         
     | 
| 
      
 77 
     | 
    
         
            +
            * sports a `#configure` method which sets at least a 
         
     | 
| 
      
 78 
     | 
    
         
            +
              * `@matcher` string which will pick a URL out of an input file, and an
         
     | 
| 
      
 79 
     | 
    
         
            +
              * `@output_file`, and
         
     | 
| 
      
 80 
     | 
    
         
            +
            * has a `#distill` method which takes a URL representing an item on the service and returns a hash of metadata, see e.g.
         
     | 
| 
      
 81 
     | 
    
         
            +
              * [Flickr](https://github.com/rawfunkmaharishi/purdie/blob/master/lib/purdie/services/flickr.rb#L26-L48)
         
     | 
| 
      
 82 
     | 
    
         
            +
              * [SoundCloud](https://github.com/rawfunkmaharishi/purdie/blob/master/lib/purdie/services/soundcloud.rb#L30-L41)
         
     | 
| 
      
 83 
     | 
    
         
            +
              * [Vimeo](https://github.com/rawfunkmaharishi/purdie/blob/master/lib/purdie/services/vimeo.rb#L27-L37)
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            then this should all Just Work. There's definitely a blog post in this, because Ruby introspection and metaprogramming is just mind-bogglingly powerful (and dangerous).
         
     | 
| 
       39 
86 
     | 
    
         | 
| 
      
 87 
     | 
    
         
            +
            More prosaically, I think it will be fairly simple to support Flickr sets and SoundCloud albums as input data.
         
     | 
| 
      
 88 
     | 
    
         
            +
              
         
     | 
| 
      
 89 
     | 
    
         
            +
            And I can definitely rationalise these [horrible license lookups](https://github.com/rawfunkmaharishi/purdie/blob/master/_config/defaults.yaml#L5-L13) into a module or even a gem of their own.
         
     | 
| 
      
 90 
     | 
    
         
            +
              
         
     | 
| 
       40 
91 
     | 
    
         
             
            ##Why Purdie?
         
     | 
| 
       41 
92 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
            Because Bernard Purdie is [amazing](https://www.youtube.com/watch?v=E9E0WxLbqVA&list=PLuPLM2FI60-OIgFTc9YCrGgH5XWGT6znV&index=6)
         
     | 
| 
      
 93 
     | 
    
         
            +
            Because Bernard Purdie is [even more amazing that Ruby introspection](https://www.youtube.com/watch?v=E9E0WxLbqVA&list=PLuPLM2FI60-OIgFTc9YCrGgH5XWGT6znV&index=6).
         
     | 
    
        data/_config/defaults.yaml
    CHANGED
    
    | 
         @@ -1,13 +1,14 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            source_dir:    _sources
         
     | 
| 
      
 2 
     | 
    
         
            +
            output_dir:    _data
         
     | 
| 
      
 3 
     | 
    
         
            +
            default_title: Bernard Purdie, the World's most-recorded drummer
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            license 
     | 
| 
      
 5 
     | 
    
         
            +
            # those unwieldy lookups are because each service calls the CC licenses by a slightly different name and defaults to a different version of the license. I think I need to abstract all of this out into a modlue or even a gem of its own
         
     | 
| 
      
 6 
     | 
    
         
            +
            license_lookups:
         
     | 
| 
       6 
7 
     | 
    
         
             
              cc-by-nc-sa:
         
     | 
| 
       7 
     | 
    
         
            -
                 
     | 
| 
       8 
     | 
    
         
            -
                 
     | 
| 
      
 8 
     | 
    
         
            +
                short_name: BY-NC-SA
         
     | 
| 
      
 9 
     | 
    
         
            +
                full_name:  Attribution-NonCommercial-ShareAlike
         
     | 
| 
       9 
10 
     | 
    
         
             
                url:        http://creativecommons.org/licenses/by-nc-sa/4.0/
         
     | 
| 
       10 
11 
     | 
    
         
             
              by-nc-sa:
         
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
       12 
     | 
    
         
            -
                 
     | 
| 
      
 12 
     | 
    
         
            +
                short_name: BY-NC-SA
         
     | 
| 
      
 13 
     | 
    
         
            +
                full_name:  Attribution-NonCommercial-ShareAlike
         
     | 
| 
       13 
14 
     | 
    
         
             
                url:        http://creativecommons.org/licenses/by-nc-sa/3.0/
         
     | 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            @vcr
         
     | 
| 
      
 2 
     | 
    
         
            +
            Feature: Flickr
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              Scenario: Generate Flickr YAML
         
     | 
| 
      
 5 
     | 
    
         
            +
                Given a file named "_sources/flickr.csv" with:
         
     | 
| 
      
 6 
     | 
    
         
            +
                """
         
     | 
| 
      
 7 
     | 
    
         
            +
                https://www.flickr.com/photos/rawfunkmaharishi/15631479625/
         
     | 
| 
      
 8 
     | 
    
         
            +
                """
         
     | 
| 
      
 9 
     | 
    
         
            +
                And a file named "_config/purdie.yaml" with:
         
     | 
| 
      
 10 
     | 
    
         
            +
                """
         
     | 
| 
      
 11 
     | 
    
         
            +
                services:
         
     | 
| 
      
 12 
     | 
    
         
            +
                  Flickr:
         
     | 
| 
      
 13 
     | 
    
         
            +
                    output_file: "_outfiles/photos.yaml"
         
     | 
| 
      
 14 
     | 
    
         
            +
                """
         
     | 
| 
      
 15 
     | 
    
         
            +
                When I successfully run `purdie fetch`
         
     | 
| 
      
 16 
     | 
    
         
            +
                Then a file named "_outfiles/photos.yaml" should exist
         
     | 
| 
      
 17 
     | 
    
         
            +
                And the file "_outfiles/photos.yaml" should contain:
         
     | 
| 
      
 18 
     | 
    
         
            +
                """
         
     | 
| 
      
 19 
     | 
    
         
            +
                - title: The Comedy, October 2014
         
     | 
| 
      
 20 
     | 
    
         
            +
                  date: '2014-10-22'
         
     | 
| 
      
 21 
     | 
    
         
            +
                  photo_page: https://www.flickr.com/photos/rawfunkmaharishi/15631479625/
         
     | 
| 
      
 22 
     | 
    
         
            +
                  photo_url: https://farm4.staticflickr.com/3933/15631479625_b6168ee903_m.jpg
         
     | 
| 
      
 23 
     | 
    
         
            +
                  license: Attribution-NonCommercial-ShareAlike
         
     | 
| 
      
 24 
     | 
    
         
            +
                  license_url: https://creativecommons.org/licenses/by-nc-sa/2.0/
         
     | 
| 
      
 25 
     | 
    
         
            +
                  photographer: kim
         
     | 
| 
      
 26 
     | 
    
         
            +
                """
         
     | 
| 
      
 27 
     | 
    
         
            +
                And a file named "_data/flickr.yaml" should not exist
         
     | 
| 
      
 28 
     | 
    
         
            +
                And a file named "_data/soundcloud.yaml" should not exist
         
     | 
| 
      
 29 
     | 
    
         
            +
                And a file named "_data/vimeo.yaml" should not exist
         
     | 
| 
         @@ -17,7 +17,7 @@ http_interactions: 
     | 
|
| 
       17 
17 
     | 
    
         
             
                  message: OK
         
     | 
| 
       18 
18 
     | 
    
         
             
                headers:
         
     | 
| 
       19 
19 
     | 
    
         
             
                  Date:
         
     | 
| 
       20 
     | 
    
         
            -
                  -  
     | 
| 
      
 20 
     | 
    
         
            +
                  - Wed, 04 Mar 2015 22:02:49 GMT
         
     | 
| 
       21 
21 
     | 
    
         
             
                  Server:
         
     | 
| 
       22 
22 
     | 
    
         
             
                  - Apache
         
     | 
| 
       23 
23 
     | 
    
         
             
                  Vary:
         
     | 
| 
         @@ -25,7 +25,7 @@ http_interactions: 
     | 
|
| 
       25 
25 
     | 
    
         
             
                  Cache-Control:
         
     | 
| 
       26 
26 
     | 
    
         
             
                  - no-cache, max-age=315360000
         
     | 
| 
       27 
27 
     | 
    
         
             
                  Expires:
         
     | 
| 
       28 
     | 
    
         
            -
                  -  
     | 
| 
      
 28 
     | 
    
         
            +
                  - Sat, 01 Mar 2025 22:02:49 GMT
         
     | 
| 
       29 
29 
     | 
    
         
             
                  Content-Length:
         
     | 
| 
       30 
30 
     | 
    
         
             
                  - '3688'
         
     | 
| 
       31 
31 
     | 
    
         
             
                  Content-Type:
         
     | 
| 
         @@ -37,5 +37,5 @@ http_interactions: 
     | 
|
| 
       37 
37 
     | 
    
         
             
                  string: '{"uri":"/videos/117102891","name":"Bernard","description":null,"link":"https://vimeo.com/117102891","duration":239,"width":1280,"language":null,"height":720,"created_time":"2015-01-18T17:26:10+00:00","modified_time":"2015-02-25T21:11:06+00:00","content_rating":["unrated"],"license":"by-nc-sa","privacy":{"view":"anybody","embed":"public","download":true,"add":true,"comments":"anybody"},"pictures":{"uri":"/videos/117102891/pictures/503683214","active":true,"sizes":[{"width":100,"height":75,"link":"https://i.vimeocdn.com/video/503683214_100x75.jpg"},{"width":200,"height":150,"link":"https://i.vimeocdn.com/video/503683214_200x150.jpg"},{"width":295,"height":166,"link":"https://i.vimeocdn.com/video/503683214_295x166.jpg"},{"width":640,"height":360,"link":"https://i.vimeocdn.com/video/503683214_640x360.jpg"},{"width":960,"height":540,"link":"https://i.vimeocdn.com/video/503683214_960x540.jpg"},{"width":1280,"height":720,"link":"https://i.vimeocdn.com/video/503683214_1280x720.jpg"}]},"tags":[],"stats":{"plays":18},"embed":{"buttons":{"like":true,"watchlater":true,"share":true,"embed":true,"hd":false,"fullscreen":true,"scaling":true},"logos":{"vimeo":true,"custom":{"active":false,"link":null,"sticky":false}},"title":{"name":"user","owner":"user","portrait":"user"},"playbar":true,"volume":true,"color":"00adef"},"metadata":{"connections":{"comments":{"uri":"/videos/117102891/comments","options":["GET","POST"],"total":0},"credits":{"uri":"/videos/117102891/credits","options":["GET","POST"],"total":1},"likes":{"uri":"/videos/117102891/likes","options":["GET"],"total":0},"pictures":{"uri":"/videos/117102891/pictures","options":["GET","POST"],"total":1},"texttracks":{"uri":"/videos/117102891/texttracks","options":["GET","POST"],"total":0}},"interactions":{"watchlater":{"added":false,"added_time":null,"uri":"/users/33772623/watchlater/117102891"}}},"embed_presets":null,"user":{"uri":"/users/33772623","name":"Raw
         
     | 
| 
       38 
38 
     | 
    
         
             
                    Funk Maharishi","link":"https://vimeo.com/rawfunkmaharishi","location":null,"bio":null,"created_time":"2014-10-27T12:06:25+00:00","account":"basic","pictures":{"uri":"/users/33772623/pictures/8588995","active":true,"sizes":[{"width":30,"height":30,"link":"https://i.vimeocdn.com/portrait/8588995_30x30.jpg"},{"width":75,"height":75,"link":"https://i.vimeocdn.com/portrait/8588995_75x75.jpg"},{"width":100,"height":100,"link":"https://i.vimeocdn.com/portrait/8588995_100x100.jpg"},{"width":300,"height":300,"link":"https://i.vimeocdn.com/portrait/8588995_300x300.jpg"}]},"websites":[{"name":"http://rawfunkmaharishi.uk/","link":"http://rawfunkmaharishi.uk/","description":null}],"metadata":{"connections":{"activities":{"uri":"/users/33772623/activities","options":["GET"]},"albums":{"uri":"/users/33772623/albums","options":["GET"],"total":0},"channels":{"uri":"/users/33772623/channels","options":["GET"],"total":0},"feed":{"uri":"/users/33772623/feed","options":["GET"]},"followers":{"uri":"/users/33772623/followers","options":["GET"],"total":0},"following":{"uri":"/users/33772623/following","options":["GET"],"total":0},"groups":{"uri":"/users/33772623/groups","options":["GET"],"total":0},"likes":{"uri":"/users/33772623/likes","options":["GET"],"total":0},"portfolios":{"uri":"/users/33772623/portfolios","options":["GET"],"total":0},"videos":{"uri":"/users/33772623/videos","options":["GET"],"total":4},"watchlater":{"uri":"/users/33772623/watchlater","options":["GET"],"total":0},"shared":{"uri":"/users/33772623/shared/videos","options":["GET"],"total":0},"pictures":{"uri":"/users/33772623/pictures","options":["GET","POST"],"total":1}}},"content_filter":["language","drugs","violence","nudity","safe","unrated"]},"app":null,"status":"available"}'
         
     | 
| 
       39 
39 
     | 
    
         
             
                http_version: 
         
     | 
| 
       40 
     | 
    
         
            -
              recorded_at:  
     | 
| 
      
 40 
     | 
    
         
            +
              recorded_at: Wed, 04 Mar 2015 22:02:49 GMT
         
     | 
| 
       41 
41 
     | 
    
         
             
            recorded_with: VCR 2.9.3
         
     | 
    
        data/lib/purdie/bernard.rb
    CHANGED
    
    | 
         @@ -7,8 +7,8 @@ module Purdie 
     | 
|
| 
       7 
7 
     | 
    
         
             
                def initialize
         
     | 
| 
       8 
8 
     | 
    
         
             
                  @config = Config.new
         
     | 
| 
       9 
9 
     | 
    
         
             
                  begin
         
     | 
| 
       10 
     | 
    
         
            -
                    @sources = Dir.entries(@config[' 
     | 
| 
       11 
     | 
    
         
            -
                    @sources.map! { |s| "#{@config[' 
     | 
| 
      
 10 
     | 
    
         
            +
                    @sources = Dir.entries(@config['source_dir']).select { |e| e !~ /^\./ }
         
     | 
| 
      
 11 
     | 
    
         
            +
                    @sources.map! { |s| "#{@config['source_dir']}/#{s}"}
         
     | 
| 
       12 
12 
     | 
    
         
             
                  rescue Errno::ENOENT
         
     | 
| 
       13 
13 
     | 
    
         
             
                    @sources = nil
         
     | 
| 
       14 
14 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/purdie/config.rb
    CHANGED
    
    
    
        data/lib/purdie/ingester.rb
    CHANGED
    
    | 
         @@ -21,6 +21,17 @@ module Purdie 
     | 
|
| 
       21 
21 
     | 
    
         
             
                  configure
         
     | 
| 
       22 
22 
     | 
    
         
             
                end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
      
 24 
     | 
    
         
            +
                def configure
         
     | 
| 
      
 25 
     | 
    
         
            +
                  if @config['services']
         
     | 
| 
      
 26 
     | 
    
         
            +
                    if @config['services'][Purdie.basename self]
         
     | 
| 
      
 27 
     | 
    
         
            +
                      if @config['services'][Purdie.basename self]['output_file']
         
     | 
| 
      
 28 
     | 
    
         
            +
                        @config['output_dir'] = File.dirname(@config['services'][Purdie.basename self]['output_file'])
         
     | 
| 
      
 29 
     | 
    
         
            +
                        @output_file = File.basename(@config['services'][Purdie.basename self]['output_file'])
         
     | 
| 
      
 30 
     | 
    
         
            +
                      end
         
     | 
| 
      
 31 
     | 
    
         
            +
                    end
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       24 
35 
     | 
    
         
             
                def ingest url
         
     | 
| 
       25 
36 
     | 
    
         
             
                  @items.push distill url
         
     | 
| 
       26 
37 
     | 
    
         
             
                end
         
     | 
| 
         @@ -39,9 +50,8 @@ module Purdie 
     | 
|
| 
       39 
50 
     | 
    
         | 
| 
       40 
51 
     | 
    
         
             
                def write
         
     | 
| 
       41 
52 
     | 
    
         
             
                  if self.has_items?
         
     | 
| 
       42 
     | 
    
         
            -
                    FileUtils.mkdir_p @config[' 
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                    File.open "#{@config['output-dir']}/#{@output_file}", 'w' do |f|
         
     | 
| 
      
 53 
     | 
    
         
            +
                    FileUtils.mkdir_p @config['output_dir']
         
     | 
| 
      
 54 
     | 
    
         
            +
                    File.open "#{@config['output_dir']}/#{@output_file}", 'w' do |f|
         
     | 
| 
       45 
55 
     | 
    
         
             
                      f.write self.to_yaml
         
     | 
| 
       46 
56 
     | 
    
         
             
                    end
         
     | 
| 
       47 
57 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -13,6 +13,8 @@ module Purdie 
     | 
|
| 
       13 
13 
     | 
    
         
             
                  def configure
         
     | 
| 
       14 
14 
     | 
    
         
             
                    @matcher = 'flickr.com'
         
     | 
| 
       15 
15 
     | 
    
         
             
                    @output_file = 'flickr.yaml'
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                    super
         
     | 
| 
       16 
18 
     | 
    
         
             
                  end
         
     | 
| 
       17 
19 
     | 
    
         | 
| 
       18 
20 
     | 
    
         
             
                  def licenses
         
     | 
| 
         @@ -28,7 +30,7 @@ module Purdie 
     | 
|
| 
       28 
30 
     | 
    
         
             
                    results = {}
         
     | 
| 
       29 
31 
     | 
    
         | 
| 
       30 
32 
     | 
    
         
             
                    results['title'] = photo['title']
         
     | 
| 
       31 
     | 
    
         
            -
                    results['title'] = @config[' 
     | 
| 
      
 33 
     | 
    
         
            +
                    results['title'] = @config['default_title'] if photo['title'] == ''
         
     | 
| 
       32 
34 
     | 
    
         
             
                    results['date'] = photo['dates']['taken'].split(' ')[0]
         
     | 
| 
       33 
35 
     | 
    
         
             
                    results['photo_page'] = photo['urls'][0]['_content']
         
     | 
| 
       34 
36 
     | 
    
         
             
                    results['photo_url'] = FlickRaw.url_m(photo)
         
     | 
| 
         @@ -41,7 +43,7 @@ module Purdie 
     | 
|
| 
       41 
43 
     | 
    
         
             
                      snapper = photo['tags'].select { |t| t['raw'] =~ /photographer/ }[0]
         
     | 
| 
       42 
44 
     | 
    
         
             
                      results['photographer'] = snapper['raw'].split(':')[1]
         
     | 
| 
       43 
45 
     | 
    
         
             
                    rescue NoMethodError
         
     | 
| 
       44 
     | 
    
         
            -
                      results['photographer'] = @config[' 
     | 
| 
      
 46 
     | 
    
         
            +
                      results['photographer'] = @config['photographer_lookups'][photo['owner']['username']]
         
     | 
| 
       45 
47 
     | 
    
         
             
                      unless results['photographer']
         
     | 
| 
       46 
48 
     | 
    
         
             
                        results['photographer'] = photo['owner']['username']
         
     | 
| 
       47 
49 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -11,6 +11,8 @@ module Purdie 
     | 
|
| 
       11 
11 
     | 
    
         
             
                    @host = 'https://api.soundcloud.com'
         
     | 
| 
       12 
12 
     | 
    
         
             
                    @matcher = 'soundcloud.com'
         
     | 
| 
       13 
13 
     | 
    
         
             
                    @output_file = 'soundcloud.yaml'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    super
         
     | 
| 
       14 
16 
     | 
    
         
             
                  end
         
     | 
| 
       15 
17 
     | 
    
         | 
| 
       16 
18 
     | 
    
         
             
                  def all_tracks
         
     | 
| 
         @@ -34,8 +36,8 @@ module Purdie 
     | 
|
| 
       34 
36 
     | 
    
         
             
                    results['id'] = track['id']
         
     | 
| 
       35 
37 
     | 
    
         
             
                    results['location'] = track['description']
         
     | 
| 
       36 
38 
     | 
    
         
             
                    results['date'] = "%4d-%02d-%02d" % [ track['release_year'], track['release_month'], track['release_day'] ]
         
     | 
| 
       37 
     | 
    
         
            -
                    results['license'] = @config[' 
     | 
| 
       38 
     | 
    
         
            -
                    results['license_url'] = @config[' 
     | 
| 
      
 39 
     | 
    
         
            +
                    results['license'] = @config['license_lookups'][track['license']]['full_name']
         
     | 
| 
      
 40 
     | 
    
         
            +
                    results['license_url'] = @config['license_lookups'][track['license']]['url']
         
     | 
| 
       39 
41 
     | 
    
         | 
| 
       40 
42 
     | 
    
         
             
                    results
         
     | 
| 
       41 
43 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -9,6 +9,8 @@ module Purdie 
     | 
|
| 
       9 
9 
     | 
    
         
             
                    @host = 'https://api.vimeo.com'
         
     | 
| 
       10 
10 
     | 
    
         
             
                    @matcher = 'vimeo.com'
         
     | 
| 
       11 
11 
     | 
    
         
             
                    @output_file = 'vimeo.yaml'
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                    super
         
     | 
| 
       12 
14 
     | 
    
         
             
                  end
         
     | 
| 
       13 
15 
     | 
    
         | 
| 
       14 
16 
     | 
    
         
             
                  def get url
         
     | 
| 
         @@ -30,8 +32,8 @@ module Purdie 
     | 
|
| 
       30 
32 
     | 
    
         | 
| 
       31 
33 
     | 
    
         
             
                    results['title'] = video['name']
         
     | 
| 
       32 
34 
     | 
    
         
             
                    results['id'] = @id
         
     | 
| 
       33 
     | 
    
         
            -
                    results['license'] = @config[' 
     | 
| 
       34 
     | 
    
         
            -
                    results['license_url'] = @config[' 
     | 
| 
      
 35 
     | 
    
         
            +
                    results['license'] = @config['license_lookups'][video['license']]['full_name']
         
     | 
| 
      
 36 
     | 
    
         
            +
                    results['license_url'] = @config['license_lookups'][video['license']]['url']
         
     | 
| 
       35 
37 
     | 
    
         | 
| 
       36 
38 
     | 
    
         
             
                    results
         
     | 
| 
       37 
39 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/purdie/version.rb
    CHANGED
    
    
    
        data/spec/config_spec.rb
    CHANGED
    
    | 
         @@ -4,12 +4,12 @@ module Purdie 
     | 
|
| 
       4 
4 
     | 
    
         
             
              describe Config do
         
     | 
| 
       5 
5 
     | 
    
         
             
                it 'has defaults' do
         
     | 
| 
       6 
6 
     | 
    
         
             
                  c = Config.new
         
     | 
| 
       7 
     | 
    
         
            -
                  expect(c[' 
     | 
| 
      
 7 
     | 
    
         
            +
                  expect(c['output_dir']).to eq '_data'
         
     | 
| 
       8 
8 
     | 
    
         
             
                end
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
                it 'reads a local config file' do
         
     | 
| 
       11 
11 
     | 
    
         
             
                  c = Config.new
         
     | 
| 
       12 
     | 
    
         
            -
                  expect(c[' 
     | 
| 
      
 12 
     | 
    
         
            +
                  expect(c['default_title']).to eq 'Raw Funk Maharishi'
         
     | 
| 
       13 
13 
     | 
    
         
             
                end
         
     | 
| 
       14 
14 
     | 
    
         
             
              end
         
     | 
| 
       15 
15 
     | 
    
         
             
            end
         
     | 
    
        data/spec/purdie_spec.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: purdie
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.9
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - pikesley
         
     | 
| 
         @@ -284,6 +284,7 @@ files: 
     | 
|
| 
       284 
284 
     | 
    
         
             
            - cruft.rb
         
     | 
| 
       285 
285 
     | 
    
         
             
            - features/bad-url.feature
         
     | 
| 
       286 
286 
     | 
    
         
             
            - features/comments.feature
         
     | 
| 
      
 287 
     | 
    
         
            +
            - features/flickr-alternative-outfile.feature
         
     | 
| 
       287 
288 
     | 
    
         
             
            - features/flickr.feature
         
     | 
| 
       288 
289 
     | 
    
         
             
            - features/no-sources.feature
         
     | 
| 
       289 
290 
     | 
    
         
             
            - features/purdie.feature
         
     | 
| 
         @@ -364,6 +365,7 @@ summary: Capture metadata from Flickr, SoundCloud et al for when we're building 
     | 
|
| 
       364 
365 
     | 
    
         
             
            test_files:
         
     | 
| 
       365 
366 
     | 
    
         
             
            - features/bad-url.feature
         
     | 
| 
       366 
367 
     | 
    
         
             
            - features/comments.feature
         
     | 
| 
      
 368 
     | 
    
         
            +
            - features/flickr-alternative-outfile.feature
         
     | 
| 
       367 
369 
     | 
    
         
             
            - features/flickr.feature
         
     | 
| 
       368 
370 
     | 
    
         
             
            - features/no-sources.feature
         
     | 
| 
       369 
371 
     | 
    
         
             
            - features/purdie.feature
         
     |