Very complex post query

I got inspired in solving my problem by this thread!

The idea is to create individual queries (unordered to save time, as sorting is not needed at this stage) to get the post IDs that meet your criteria; then take those IDs and run a final query with the IDs as the criteria to get the full posts (ordered and everything at this stage). Such a code would look like this:

$ids1 = get_posts(array(
    'fields' => 'ids',
    'post_type' => 'frontpage',
    'posts_per_page' => -1,
    'date_query' => array(
        array(
            'year' => date('Y', $date),
            'month' => date('m', $date),
            'day' => date('d', $date),
        ),
    ),
    'tax_query' => array(
        array(
            'taxonomy' => 'newspaper_genre',
            'field' => 'term_id',
            'terms' => array(
                7670,
                7674,
                7682,
                7684,
                7686,
                8099,
                8101,
            ),
            'operator' => 'NOT IN',
        ),
    ),
));

$ids2 = get_posts(array(
    'fields' => 'ids',
    'post_type' => 'frontpage',
    'posts_per_page' => -1,
    'date_query' => array(
        array(
            'year' => date('Y', $date),
            'month' => date('m', $date),
        ),
    ),
    'tax_query' => array(
        array(
            'taxonomy' => 'newspaper_genre',
            'field' => 'term_id',
            'terms' => array(
                7682,
                8099,
                8101,
            ),
            'operator' => 'IN',
        ),
    ),
));

$ids3 = get_posts(array(
    'fields' => 'ids',
    'post_type' => 'frontpage',
    'posts_per_page' => -1,
    'date_query' => array(
        array(
            'after' => array(
                'year' => date('Y', $date_minus_five),
                'month' => date('m', $date_minus_five),
                'day' => date('d', $date_minus_five),
            ),
            'before' => array(
                'year' => date('Y', $date),
                'month' => date('m', $date),
                'day' => date('d', $date),
            ),
            'inclusive' => true,
        ),
    ),
    'tax_query' => array(
        array(
            'taxonomy' => 'newspaper_genre',
            'field' => 'term_id',
            'terms' => array(
                7674,
                7684,
                7686,
            ),
            'operator' => 'IN',
        ),
    ),
));

$query = get_posts(array(
    'include' => array_merge($ids1, $ids2, $ids3),
    'post_type' => 'frontpage',
    'orderby' => array(
        'meta_value_num' => 'ASC',
        'date' => 'ASC',
    ),
    'meta_key' => 'frontpage_order',
));