Browse Source

Media

imwald
Nuša Pukšič 1 month ago
parent
commit
5a7ed1f2f8
  1. 19
      src/Command/CacheMediaDiscoveryCommand.php
  2. 10
      src/Service/NostrClient.php

19
src/Command/CacheMediaDiscoveryCommand.php

@ -5,6 +5,7 @@ declare(strict_types=1);
namespace App\Command; namespace App\Command;
use App\Service\NostrClient; use App\Service\NostrClient;
use App\Util\NostrKeyUtil;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use swentel\nostr\Nip19\Nip19Helper; use swentel\nostr\Nip19\Nip19Helper;
use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Attribute\AsCommand;
@ -64,7 +65,7 @@ class CacheMediaDiscoveryCommand extends Command
} }
$env = $this->params->get('kernel.environment'); $env = $this->params->get('kernel.environment');
$cacheKey = 'media_discovery_events_all_' . $env; $cacheKey = 'media_discovery_events_all_prod';
if ($force) { if ($force) {
$io->info('Force refresh enabled - deleting existing cache'); $io->info('Force refresh enabled - deleting existing cache');
@ -98,6 +99,22 @@ class CacheMediaDiscoveryCommand extends Command
$mediaEvents = $this->filterNSFW($mediaEvents); $mediaEvents = $this->filterNSFW($mediaEvents);
$io->comment(sprintf('After NSFW filter: %d events', count($mediaEvents))); $io->comment(sprintf('After NSFW filter: %d events', count($mediaEvents)));
$keyUtil = new NostrKeyUtil();
// Filter out npubs in blocklist
$blocked = [
$keyUtil->npubToHex('npub1prxnwedta6z2sv8atavcsd3hl8f8s8c9acc3syw6myfug92q07us5429qj'),
$keyUtil->npubToHex('npub1jpc8h8fwdrsw5r3e7huahktd6npxzz9prq9t4dgcv9djdq8ggwhqd4xrcs'),
];
$mediaEvents = array_filter($mediaEvents, function($event) use ($blocked, $io) {
$io->comment($event->pubkey);
return !in_array($event->pubkey, $blocked);
});
$io->comment(sprintf('After blocklist filter: %d events', count($mediaEvents)));
// Encode event IDs as note1... for each event // Encode event IDs as note1... for each event
$nip19 = new Nip19Helper(); $nip19 = new Nip19Helper();
foreach ($mediaEvents as $event) { foreach ($mediaEvents as $event) {

10
src/Service/NostrClient.php

@ -827,14 +827,14 @@ class NostrClient
$allEvents = []; $allEvents = [];
// Fetch events for each hashtag // Fetch events for each hashtag
foreach ($hashtags as $hashtag) {
$request = $this->createNostrRequest( $request = $this->createNostrRequest(
kinds: [20], // NIP-68 Pictures; consider expanding to 21/22 later kinds: [20], // NIP-68 Pictures; consider expanding to 21/22 later
filters: [ filters: [
'tag' => ['#t', [$hashtag]], 'tag' => ['#t', $hashtags],
'limit' => 100 // Fetch up to 100 per hashtag 'limit' => 500 // Fetch up to 100 per hashtag
], ],
relaySet: $this->createRelaySet(static::REPUTABLE_RELAYS) relaySet: $this->createRelaySet(['wss://theforest.nostr1.com'])
); );
$events = $this->processResponse($request->send(), function($event) { $events = $this->processResponse($request->send(), function($event) {
@ -842,7 +842,7 @@ class NostrClient
}); });
$allEvents = array_merge($allEvents, $events); $allEvents = array_merge($allEvents, $events);
}
return $allEvents; return $allEvents;
} }

Loading…
Cancel
Save