That's a lot of images ... `-(source_url:http* AND source needed),-derpibooru exclusive` results in 2,560,689 hits ... I'm not even sure I'm searching for that right.
HAS NOT `source_url` and NOT `derpibooru exclusive` AND NOT `source needed` ...
`-derpibooru exclusive,(source_url:http* AND NOT source needed)`? Nope nope nope, that finds stuff like >>2902256 ...
But, within those, the first thing I noticed is that a lot of them are screencaps or stuff where the artist listed their patreon in the description or something like that.
So ... the source isn't so much 'needed' as it is not in the source_url.
[`-derpibooru exclusive,-(source_url:http* AND NOT source needed)`](https://derpibooru.org/search?q=-derpibooru+exclusive%2C-%28source_url%3Ahttp*+AND+NOT+source+needed%29) seems to work ... 694,208 images in that set, and just looking at a couple they seem to be what we're wanting.
I thought `(source needed AND description:http*),-(source_url:http*)` might be useful, to find images where there's a source in the description but not in the source_url, but the first thing I found were images where the http:* was a link to some meta image or something ... soooo ... oof.
I mean, it sounds like a great hobby if you'd like to work those, and worth doing. But, man ... that might be a lifetime's work.
update: Yeah - that [`-derpibooru exclusive,-(source_url:http* AND NOT source needed)`](https://derpibooru.org/search?q=-derpibooru+exclusive%2C-%28source_url%3Ahttp*+AND+NOT+source+needed%29) search results in things like >>2902348, where there is no source and it's not tagged.
If you added 'artist:*' then you get [`artist:*,-derpibooru exclusive,-(source_url:http* AND NOT source needed)`](https://derpibooru.org/search?q=artist%3A*%2C-derpibooru+exclusive%2C-%28source_url%3Ahttp*+AND+NOT+source+needed%29) which will only catch images that have actual fan art, and where the artist is known, and that might be a better set to start with.
Only 392,859 in that set, which is actually survivable.