<commit_before>// This program is free software: you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by the Free
// Software Foundation, either version 3 of the License, or (at your option)
// any later version.
// 
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
// more details.
// 
// You should have received a copy of the GNU General Public License along with
// this program.  If not, see <http://www.gnu.org/licenses/>.

#ifndef LOCUTUS_H
#define LOCUTUS_H

extern "C" {
#include <dirent.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
};
#include <list>
#include <map>
#include <string>

/* settings */
#define MUSIC_OUTPUT_KEY "output_directory"
#define MUSIC_OUTPUT_VALUE "/media/music/sorted/"
#define MUSIC_OUTPUT_DESCRIPTION "Output directory. This is the directory Locutus will place files that were matched to tracks in MusicBrainz. Should not be the same directory as, or a subdirectory of 'input_directory' or 'duplicate_directory'."
#define MUSIC_INPUT_KEY "input_directory"
#define MUSIC_INPUT_VALUE "/media/music/unsorted/"
#define MUSIC_INPUT_DESCRIPTION "Input directory. The directory that contains files not yet matched by Locutus. Should not be the same directory as, or a subdirectory of 'output_directory' or 'duplicate_directory'."
#define MUSIC_DUPLICATE_KEY "duplicate_directory"
#define MUSIC_DUPLICATE_VALUE "/media/music/duplicates/"
#define MUSIC_DUPLICATE_DESCRIPTION "Duplicate directory. When Locutus finds duplicates they are placed in this directory. Should not be the same directory as, or a subdirectory of 'input_directory' or 'output_directory'."
#define MAX_GROUP_SIZE_KEY "max_group_size"
#define MAX_GROUP_SIZE_VALUE 250
#define MAX_GROUP_SIZE_DESCRIPTION "Max size of a group. Groups with more files than this will be ignored. This is a precaution against directories with lots of files from different albums, but with no metadata. Such directories cause Locutus to use a lot of memory and CPU while significantly slowing Locutus down."
#define COMBINE_GROUPS_KEY "combine_groups"
#define COMBINE_GROUPS_VALUE false
#define COMBINE_GROUPS_DESCRIPTION "Temporary combine and relookup groups that loaded the same album. May be useful in archives where the files for the same album end up in different groups for some reason, but it will also slow down Locutus and may increase amount of mismatched files."
#define DRY_RUN_KEY "dry_run"
#define DRY_RUN_VALUE true
#define DRY_RUN_DESCRIPTION "Only read files and look them up, don't save and move files. Currently genre won't be looked up during a dry run."
#define LOOKUP_GENRE_KEY "lookup_genre"
#define LOOKUP_GENRE_VALUE false
#define LOOKUP_GENRE_DESCRIPTION "Fetch genre (or tag) from Audioscrobbler before saving a file. If no genre is found then genre is set to an empty string. If this option is set to false, the genre field is left unmodified. Locutus will only look up genre when there's no genre associated with the track or when the file is moved, this is because looking up tag significantly slows down Locutus."

/* how often we should check if we're still active and how often we should poll database */
#define CHECK_ACTIVE_INTERVAL 3
#define DATABASE_POLL_INTERVAL 300

class Audioscrobbler;
class Database;
class FileNamer;<commit_msg>default value of combine_groups is now "true"<commit_after>// This program is free software: you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by the Free
// Software Foundation, either version 3 of the License, or (at your option)
// any later version.
// 
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
// more details.
// 
// You should have received a copy of the GNU General Public License along with
// this program.  If not, see <http://www.gnu.org/licenses/>.

#ifndef LOCUTUS_H
#define LOCUTUS_H

extern "C" {
#include <dirent.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
};
#include <list>
#include <map>
#include <string>

/* settings */
#define MUSIC_OUTPUT_KEY "output_directory"
#define MUSIC_OUTPUT_VALUE "/media/music/sorted/"
#define MUSIC_OUTPUT_DESCRIPTION "Output directory. This is the directory Locutus will place files that were matched to tracks in MusicBrainz. Should not be the same directory as, or a subdirectory of 'input_directory' or 'duplicate_directory'."
#define MUSIC_INPUT_KEY "input_directory"
#define MUSIC_INPUT_VALUE "/media/music/unsorted/"
#define MUSIC_INPUT_DESCRIPTION "Input directory. The directory that contains files not yet matched by Locutus. Should not be the same directory as, or a subdirectory of 'output_directory' or 'duplicate_directory'."
#define MUSIC_DUPLICATE_KEY "duplicate_directory"
#define MUSIC_DUPLICATE_VALUE "/media/music/duplicates/"
#define MUSIC_DUPLICATE_DESCRIPTION "Duplicate directory. When Locutus finds duplicates they are placed in this directory. Should not be the same directory as, or a subdirectory of 'input_directory' or 'output_directory'."
#define MAX_GROUP_SIZE_KEY "max_group_size"
#define MAX_GROUP_SIZE_VALUE 250
#define MAX_GROUP_SIZE_DESCRIPTION "Max size of a group. Groups with more files than this will be ignored. This is a precaution against directories with lots of files from different albums, but with no metadata. Such directories cause Locutus to use a lot of memory and CPU while significantly slowing Locutus down."
#define COMBINE_GROUPS_KEY "combine_groups"
#define COMBINE_GROUPS_VALUE true
#define COMBINE_GROUPS_DESCRIPTION "Temporary combine and relookup groups that loaded the same album. May be useful in archives where the files for the same album end up in different groups for some reason, but it will also slow down Locutus and may increase amount of mismatched files."
#define DRY_RUN_KEY "dry_run"
#define DRY_RUN_VALUE true
#define DRY_RUN_DESCRIPTION "Only read files and look them up, don't save and move files. Currently genre won't be looked up during a dry run."
#define LOOKUP_GENRE_KEY "lookup_genre"
#define LOOKUP_GENRE_VALUE false
#define LOOKUP_GENRE_DESCRIPTION "Fetch genre (or tag) from Audioscrobbler before saving a file. If no genre is found then genre is set to an empty string. If this option is set to false, the genre field is left unmodified. Locutus will only look up genre when there's no genre associated with the track or when the file is moved, this is because looking up tag significantly slows down Locutus."

/* how often we should check if we're still active and how often we should poll database */
#define CHECK_ACTIVE_INTERVAL 3
#define DATABASE_POLL_INTERVAL 300

class Audioscrobbler;
class Database;
class FileNamer;
{'fraction_non_alphanumeric': 0.06102556858313321, 'fraction_numerical': 0.0022602062438197485, 'mean_word_length': 5.119273984442524, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 21, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '458453', 'n_tokens_mistral': 2031, 'n_tokens_neox': 1947, 'n_words': 945}