-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.pl
87 lines (72 loc) · 2.63 KB
/
main.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
use strict;
use warnings;
# Añadir la ruta al directorio de módulos
use lib './url_generator';
# Cargar los módulos
use URLGeneratorBase;
use DisplayURLGenerator;
use AfiliacionURLGenerator;
use EmailingURLGenerator;
use ColaboracionURLGenerator;
use ComparadorPreciosURLGenerator;
use GoogleAdsURLGenerator;
use BingAdsURLGenerator;
use SocialURLGenerator;
my %CSV_TEMPLATES = (
dy => {
headers => "dominio_tracking,sitio,nombre_soporte,nombre_campania,nombre_ubicacion,nombre_banner,formato_banner,nombre_segmento,valor_segmento,url_destino,adid,idfa",
mandatory => "yes,yes,yes,yes,yes,yes,yes,no,no,yes,no,no",
example => "aaa1.cliente.com,cliente-com,amazon,verano_2024,ROS,crea1,300x250,,,https://www.cliente.com?param=example,,",
},
# Otros canales como 'af', 'em', 'co', 'cp', 'ga', 'ba', 'sc'...
);
sub show_csv_template {
my ($channel) = @_;
my $template = $CSV_TEMPLATES{$channel};
if ($template) {
print "\nA continuación dispones de la plantilla de las cabeceras del CSV esperado con un ejemplo y con los campos obligatorios para este canal.\n";
print "\nHEADERS: $template->{headers}\n";
print "MANDATORY: $template->{mandatory}\n";
print "EXAMPLE: $template->{example}\n\n";
} else {
print "No hay una plantilla disponible para este canal.\n";
}
}
sub main {
my ($canal_input, $input_file) = @_;
unless ($canal_input) {
print "Introduce el nombre del canal para procesar (dy, af, em, co, cp, ga, ba, sc): ";
chomp($canal_input = <STDIN>);
}
my %canal_map = (
dy => 'DisplayURLGenerator',
af => 'AfiliacionURLGenerator',
em => 'EmailingURLGenerator',
co => 'ColaboracionURLGenerator',
cp => 'ComparadorPreciosURLGenerator',
ga => 'GoogleAdsURLGenerator',
ba => 'BingAdsURLGenerator',
sc => 'SocialURLGenerator',
);
unless (exists $canal_map{$canal_input}) {
print "Canal no encontrado. Por favor usa el código correcto.\n";
return;
}
show_csv_template($canal_input);
unless ($input_file) {
print "Por favor, introduce la ruta completa del fichero CSV: ";
chomp($input_file = <STDIN>);
}
unless (-e $input_file) {
print "El fichero $input_file no existe.\n";
return;
}
my $generator_class = $canal_map{$canal_input};
eval "require $generator_class";
if ($@) {
die "Error al cargar el generador $generator_class: $@";
}
my $generator = $generator_class->new($input_file);
$generator->process_csv();
}
main(@ARGV);