fix: added needed options, now handling ctrl-c.
This commit is contained in:
parent
a8a0331890
commit
e981111774
6 changed files with 189 additions and 6 deletions
|
@ -19,6 +19,8 @@ type DefaultFlags struct {
|
||||||
All bool
|
All bool
|
||||||
StartPage int
|
StartPage int
|
||||||
EndPage int
|
EndPage int
|
||||||
|
|
||||||
|
Indent bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func MakeDefaultFlags(opts *DefaultFlags, flags *mtool.Flags) {
|
func MakeDefaultFlags(opts *DefaultFlags, flags *mtool.Flags) {
|
||||||
|
@ -77,6 +79,12 @@ func MakeGetterFlags(
|
||||||
math.MaxInt,
|
math.MaxInt,
|
||||||
"the page to end the requests",
|
"the page to end the requests",
|
||||||
)
|
)
|
||||||
|
flags.BoolVar(
|
||||||
|
&opts.Indent,
|
||||||
|
"no-indent",
|
||||||
|
true,
|
||||||
|
"disable indenting for JSON output",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run function for slice's parts in different threads.
|
// Run function for slice's parts in different threads.
|
||||||
|
|
|
@ -5,10 +5,11 @@ import "surdeus.su/core/ss/urlenc"
|
||||||
|
|
||||||
import "surdeus.su/core/cli/mtool"
|
import "surdeus.su/core/cli/mtool"
|
||||||
|
|
||||||
import "fmt"
|
//import "fmt"
|
||||||
import "log"
|
import "log"
|
||||||
import "time"
|
import "time"
|
||||||
import "os"
|
import "os"
|
||||||
|
import "os/signal"
|
||||||
import "encoding/json"
|
import "encoding/json"
|
||||||
|
|
||||||
type Getter[V any] interface {
|
type Getter[V any] interface {
|
||||||
|
@ -34,6 +35,21 @@ func RunGetter[V any, G Getter[V]](g G, flags *mtool.Flags) {
|
||||||
c.API.SetMRPS(opts.MRPS)
|
c.API.SetMRPS(opts.MRPS)
|
||||||
finalValues := []V{}
|
finalValues := []V{}
|
||||||
|
|
||||||
|
inter := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(inter, os.Interrupt)
|
||||||
|
go func() {
|
||||||
|
<-inter
|
||||||
|
enc := json.NewEncoder(os.Stdout)
|
||||||
|
if opts.Indent {
|
||||||
|
enc.SetIndent("", " ")
|
||||||
|
}
|
||||||
|
err = enc.Encode(finalValues)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("json.Encode(...): %s\n", err)
|
||||||
|
}
|
||||||
|
os.Exit(0)
|
||||||
|
}()
|
||||||
|
|
||||||
if opts.All {
|
if opts.All {
|
||||||
page := opts.StartPage
|
page := opts.StartPage
|
||||||
values, next, err := g.GetValues(
|
values, next, err := g.GetValues(
|
||||||
|
@ -128,6 +144,13 @@ func RunGetter[V any, G Getter[V]](g G, flags *mtool.Flags) {
|
||||||
|
|
||||||
for values := range valueChan {
|
for values := range valueChan {
|
||||||
finalValues = append(finalValues, values...)
|
finalValues = append(finalValues, values...)
|
||||||
|
if opts.Verbose {
|
||||||
|
log.Printf(
|
||||||
|
"thtread(main) %.2f%%, sument=%d",
|
||||||
|
float32(len(finalValues))/float32(len(ids))*100.,
|
||||||
|
len(finalValues),
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if opts.Verbose {
|
if opts.Verbose {
|
||||||
|
@ -147,9 +170,13 @@ func RunGetter[V any, G Getter[V]](g G, flags *mtool.Flags) {
|
||||||
)
|
)
|
||||||
log.Printf("RPS = %f\n", float64(rm)/took)
|
log.Printf("RPS = %f\n", float64(rm)/took)
|
||||||
}
|
}
|
||||||
bts, err := json.MarshalIndent(finalValues, "", " ")
|
|
||||||
if err != nil {
|
enc := json.NewEncoder(os.Stdout)
|
||||||
log.Fatalf("json.Marshal(...): %s\n", err)
|
if opts.Indent {
|
||||||
|
enc.SetIndent("", " ")
|
||||||
|
}
|
||||||
|
err = enc.Encode(finalValues)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("json.Encode(...): %s\n", err)
|
||||||
}
|
}
|
||||||
fmt.Printf("%s\n", bts)
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,9 +15,12 @@ type LeadTuple struct {
|
||||||
func (client *Client) GetLeadTuples(
|
func (client *Client) GetLeadTuples(
|
||||||
opts ...urlenc.Builder,
|
opts ...urlenc.Builder,
|
||||||
) ([]LeadTuple, NextFunc[[]LeadTuple], error) {
|
) ([]LeadTuple, NextFunc[[]LeadTuple], error) {
|
||||||
|
opts = append(
|
||||||
|
opts, urlenc.Value[string]{"with", "contacts"},
|
||||||
|
)
|
||||||
res := fmt.Sprintf(
|
res := fmt.Sprintf(
|
||||||
"/api/v4/leads?%s",
|
"/api/v4/leads?%s",
|
||||||
urlenc.Join(opts...).Encode,
|
urlenc.Join(opts...).Encode(),
|
||||||
)
|
)
|
||||||
return client.GetLeadTuplesByURL(res)
|
return client.GetLeadTuplesByURL(res)
|
||||||
}
|
}
|
||||||
|
|
118
scripts/inn-check.tengo
Normal file
118
scripts/inn-check.tengo
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
os := import("os")
|
||||||
|
fmt := import("fmt")
|
||||||
|
json := import("json")
|
||||||
|
|
||||||
|
args := os.args()[2:]
|
||||||
|
file_path := args[0]
|
||||||
|
|
||||||
|
contact_field_id := 231711
|
||||||
|
company_field_id := 1300614
|
||||||
|
lead_field_id := 686597
|
||||||
|
|
||||||
|
holders := json.decode(os.read_file(file_path))
|
||||||
|
//fmt.println(len(holders))
|
||||||
|
//os.exit(0)
|
||||||
|
patch := []
|
||||||
|
|
||||||
|
find_by_field_id := func(id, fields){
|
||||||
|
for _, field in fields {
|
||||||
|
if field.field_id == id {
|
||||||
|
return field
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
is_field_correct := func(field){
|
||||||
|
if !int(field.values[0].value) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
str := string(field.values[0].value)
|
||||||
|
if len(str) <9 || len(str) > 12 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
//holders = holders[:2]
|
||||||
|
for i, h in holders {
|
||||||
|
company := {}
|
||||||
|
if !h.company_id {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
company.id = h.company_id
|
||||||
|
|
||||||
|
company_inn := find_by_field_id(company_field_id, h.company_inns)
|
||||||
|
//fmt.println(i, " reachd", company_inn)
|
||||||
|
if company_inn {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
contact_inn := find_by_field_id(contact_field_id, h.contact_inns)
|
||||||
|
lead_inn := find_by_field_id(lead_field_id, h.lead_inns)
|
||||||
|
|
||||||
|
if !contact_inn {
|
||||||
|
if !lead_inn || !is_field_correct(lead_inn) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
company.__reason = "Взято из лида (в контакте не было)"
|
||||||
|
company.custom_fields_values = [{
|
||||||
|
field_id: company_field_id,
|
||||||
|
values: [{
|
||||||
|
value: string(lead_inn.values[0].value)
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
patch += [company]
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if !lead_inn {
|
||||||
|
if !is_field_correct(contact_inn) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
company.__reason = "Взято из контакта (в лиде не было)"
|
||||||
|
company.custom_fields_values =[{
|
||||||
|
field_id: company_field_id,
|
||||||
|
values: [{
|
||||||
|
value: string(contact_inn.values[0].value)
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
} else {
|
||||||
|
if int(contact_inn.values[0].value) != int(lead_inn.values[0].value) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if !is_field_correct(contact_inn) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
company.__reason = "Взято из лида и контакта"
|
||||||
|
company.custom_fields_values =[{
|
||||||
|
field_id: company_field_id,
|
||||||
|
values: [{
|
||||||
|
value: string(contact_inn.values[0].value)
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
patch += [company]
|
||||||
|
|
||||||
|
/*if h.company_inns {
|
||||||
|
for _, field in h.company_inns {
|
||||||
|
company.custom_fields_values += [{
|
||||||
|
field_id: field.field_id,
|
||||||
|
values: [{
|
||||||
|
value: field.values[0].value
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
companies += [company]*/
|
||||||
|
}
|
||||||
|
|
||||||
|
//patch = patch[:500]
|
||||||
|
//fmt.println(len(patch))
|
||||||
|
|
||||||
|
bts := json.indent(json.encode(patch), "", " ")
|
||||||
|
fmt.println(string(bts))
|
||||||
|
|
17
scripts/len-uniq-tuple-leads.tengo
Normal file
17
scripts/len-uniq-tuple-leads.tengo
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
os := import("os")
|
||||||
|
fmt := import("fmt")
|
||||||
|
json := import("json")
|
||||||
|
|
||||||
|
args := os.args()[2:]
|
||||||
|
file_path := args[0]
|
||||||
|
|
||||||
|
arr := json.decode(os.read_file(file_path))
|
||||||
|
ret := {}
|
||||||
|
for _, v in arr {
|
||||||
|
if !v.lead || !v.lead.id{
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
ret[string(v.lead.id)] = 1
|
||||||
|
}
|
||||||
|
fmt.println(len(ret))
|
10
scripts/len.tengo
Normal file
10
scripts/len.tengo
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
os := import("os")
|
||||||
|
fmt := import("fmt")
|
||||||
|
json := import("json")
|
||||||
|
|
||||||
|
args := os.args()[2:]
|
||||||
|
file_path := args[0]
|
||||||
|
|
||||||
|
arr := json.decode(os.read_file(file_path))
|
||||||
|
fmt.println(len(arr))
|
Loading…
Reference in a new issue