App-MHFS

 view release on metacpan or  search on metacpan

lib/MHFS/Plugin/MusicLibrary.pm  view on Meta::CPAN

        my $unthawed;
        {
            local $@;
            unless (eval {
                $unthawed = thaw($out);
                return 1;
            }) {
                warn("thaw threw exception");
            }
        }
        if($unthawed){
            foreach my $update (@$unthawed) {
                say "Updating " . $update->[0];
                $self->{$update->[0]} = $update->[1];
            }
        }
        else {
            say "failed to thaw, library not updated.";
        }
        $onUpdateEnd->();
    });
}

sub new {
    my ($class, $settings) = @_;
    my $self =  {'settings' => $settings};
    bless $self, $class;
    my $pstart = __PACKAGE__.":";

    # no sources until loaded
    $self->{'sources'} = [];
    $self->{'html'} = __PACKAGE__.' not loaded';
    $self->{'musicdbhtml'} = __PACKAGE__.' not loaded';
    $self->{'musicdbjson'} = '{}';

    my $musicpageroute = sub {
        my ($request) = @_;
        return $self->SendLibrary($request);
    };

    my $musicdlroute = sub {
        my ($request) = @_;
        return $self->SendFromLibrary($request);
    };

    my $musicresourcesroute = sub {
        my ($request) = @_;
        return $self->SendResources($request);
    };

    $self->{'routes'} = [
        ['/music', $musicpageroute],
        ['/music_dl', $musicdlroute],
        ['/music_resources', $musicresourcesroute],
        ['/music_art', sub {
            my ($request) = @_;
            return $self->SendArt($request);
        }]
    ];

    $self->{'timers'} = [
        # update the library at start and periodically
        [0, 300, sub {
            my ($timer, $current_time, $evp) = @_;
            say "$pstart library timer";
            UpdateLibrariesAsync($self, $evp, sub {
                say "$pstart library timer done";
            });
            return 1;
        }],
    ];

    return $self;
}

1;



( run in 2.678 seconds using v1.01-cache-2.11-cpan-59e3e3084b8 )