Compare commits

...

10 commits

Author SHA1 Message Date
9d25ec9043
Merge pull request #3 from BuyMyMojo/snyk-fix-b7f2c2eb35175d3c953e95d3695d08d8
[Snyk] Security upgrade numpy from 1.21.3 to 1.22.2
2024-03-15 13:14:22 +11:00
snyk-bot
2d0179bb9e
fix: requirements.txt to reduce vulnerabilities
The following vulnerabilities are fixed by pinning transitive dependencies:
- https://snyk.io/vuln/SNYK-PYTHON-NUMPY-2321964
- https://snyk.io/vuln/SNYK-PYTHON-NUMPY-2321966
- https://snyk.io/vuln/SNYK-PYTHON-NUMPY-2321970
2023-02-16 20:21:38 +00:00
30e6dcefff
Update README.md 2022-09-26 13:04:50 +10:00
a28999f92f
Change input path handling
Update input path to fix weird windows issues for a user.
2022-09-21 23:39:37 +10:00
b3f48957b1 fix: 🚑 Ignore useless error 2022-07-21 01:32:11 +10:00
f627e97bb1 feat: Log usernames with the IDs 2022-07-21 00:23:43 +10:00
Owen Quinlan
5547316ff3 change build scripts to work with TeamCity 2021-11-19 23:18:31 +11:00
Owen Quinlan
55a1d48824 change build scripts to work with TeamCity 2021-11-19 22:09:36 +11:00
Owen Quinlan
69023df428 change build scripts to work with TeamCity 2021-11-19 21:48:07 +11:00
Owen Quinlan
58c624300f change build scripts to work with TeamCity 2021-11-19 21:45:04 +11:00
5 changed files with 65 additions and 28 deletions

View file

@ -1,8 +1,9 @@
#!/usr/bin/env bash #!/usr/bin/env bash
go mod download go mod download
package="./Locate ID/LocateID.go" package="./LocateID.go"
package_split=(${package//\// }) package_split=(${package//\// })
package_name="LocateID" package_name="LocateID"
@ -15,11 +16,11 @@ do
GOOS=${platform_split[0]} GOOS=${platform_split[0]}
GOARCH=${platform_split[1]} GOARCH=${platform_split[1]}
output_name=$package_name'-'$GOOS'-'$GOARCH output_name=$package_name'-'$GOOS'-'$GOARCH
if [ $GOOS = "windows" ]; then if [ "$GOOS" = "windows" ]; then
output_name+='.exe' output_name+='.exe'
fi fi
env GOOS=$GOOS GOARCH=$GOARCH go build -o "./Locate ID/build/$output_name" $package env GOOS="$GOOS" GOARCH="$GOARCH" go build -o ./build/$output_name $package
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo 'An error has occurred! Aborting the script execution...' echo 'An error has occurred! Aborting the script execution...'
exit 1 exit 1

View file

@ -1,4 +1,4 @@
# Discord Chat Exporter csv parsers # [Discord Chat Exporter](https://github.com/Tyrrrz/DiscordChatExporter) csv parsers
<sub> Now with a much faster version written in go! </sub> <sub> Now with a much faster version written in go! </sub>
@ -9,7 +9,7 @@
To run the go versions all you need to do is download the executable for your platform and run it from the terminal/powershell: To run the go versions all you need to do is download the executable for your platform and run it from the terminal/powershell:
```bash ```bash
./IdParser[.exe] -i [Path to folder/file] -o [Path to output .csv (Defaults to ./out.csv)] ./ParseIDs[.exe] -i [Path to folder/file] -o [Path to output .csv (Defaults to ./out.csv)]
``` ```
Use the same output between multiple runs works and takes into account old data to ensure no dupes Use the same output between multiple runs works and takes into account old data to ensure no dupes

View file

@ -1,21 +1,25 @@
package main package main
import ( import (
"bytes"
"encoding/csv" "encoding/csv"
"errors" "errors"
"flag" "flag"
"fmt" "fmt"
"io"
"io/ioutil" "io/ioutil"
"log" "log"
"os" "os"
"strings"
) )
// Variables used for command line parameters // Variables used for command line parameters
var ( var (
CsvInput string CsvInput string
CsvOutput string CsvOutput string
unique_old []string unique_old []string
unique_ids []string unique_name []string
unique_ids []string
) )
func init() { func init() {
@ -27,7 +31,8 @@ func init() {
// struct for getting just user ID out of csv file // struct for getting just user ID out of csv file
type DiscordCSV struct { type DiscordCSV struct {
UserID string UserID string
Username string
} }
func main() { func main() {
@ -56,9 +61,17 @@ func main() {
// For each file in folder // For each file in folder
for _, file := range files { for _, file := range files {
if !file.IsDir() { if !file.IsDir() {
process(CsvInput + file.Name()) // file is not a directory so process it's full path
} // check if windows or linux
if strings.Contains(CsvInput, "\\") {
// windows
process(CsvInput + "\\" + file.Name())
} else {
// linux
process(CsvInput + "/" + file.Name())
}
}
} }
} else { } else {
@ -77,16 +90,21 @@ func process(CsvPath string) {
// Read CSV file // Read CSV file
lines, err := ReadCsv(CsvOutput) lines, err := ReadCsv(CsvOutput)
if err != nil { if err != nil {
panic(err) return
}
// Loop through lines & turn into object
for _, line := range lines {
data := DiscordCSV{
UserID: line[0],
}
unique_old = append(unique_old, data.UserID)
} }
// Loop through lines & add to DiscordIDs list
for i, _ := range lines {
data := DiscordCSV{
UserID: lines[i][0],
Username: lines[i][1],
}
if !contains(unique_old, data.UserID) {
unique_old = append(unique_old, data.UserID)
unique_name = append(unique_name, data.Username)
}
}
WriteCSV(CsvPath) WriteCSV(CsvPath)
} else if errors.Is(err, os.ErrNotExist) { } else if errors.Is(err, os.ErrNotExist) {
@ -112,6 +130,7 @@ func process(CsvPath string) {
func WriteCSV(InFile string) { func WriteCSV(InFile string) {
// Create DiscordIDs list // Create DiscordIDs list
var DiscordIDs []string var DiscordIDs []string
var DiscordNames []string
// Read CSV file // Read CSV file
lines, err := ReadCsv(InFile) lines, err := ReadCsv(InFile)
@ -122,20 +141,23 @@ func WriteCSV(InFile string) {
OutFile, err := os.OpenFile(CsvOutput, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) OutFile, err := os.OpenFile(CsvOutput, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600)
// Loop through lines & add to DiscordIDs list // Loop through lines & add to DiscordIDs list
for _, line := range lines { for i, _ := range lines {
data := DiscordCSV{ data := DiscordCSV{
UserID: line[0], UserID: lines[i][0],
Username: lines[i][1],
} }
if !contains(DiscordIDs, data.UserID) { if !contains(DiscordIDs, data.UserID) {
DiscordIDs = append(DiscordIDs, data.UserID) DiscordIDs = append(DiscordIDs, data.UserID)
DiscordNames = append(DiscordNames, data.Username)
} }
} }
// Checks if ID is already in list // Checks if ID is already in list
// if it isnt then it gets writen to list // if it isnt then it gets writen to list
for _, ID := range DiscordIDs { for i, ID := range DiscordIDs {
if !contains(unique_old, ID) { if !contains(unique_old, ID) {
OutFile.WriteString(ID + "\n") OutFile.WriteString(ID + "," + DiscordNames[i] + "\n")
} }
} }
} }
@ -149,8 +171,21 @@ func ReadCsv(filename string) ([][]string, error) {
} }
defer f.Close() defer f.Close()
var buf bytes.Buffer
io.Copy(&buf, f)
x := string(buf.Bytes())
strings.ReplaceAll(x, "\r\n", "\n")
strings.ReplaceAll(x, "\r\n", " ")
reader := csv.NewReader(strings.NewReader(x))
reader.ReuseRecord = true
// Read File into a Variable // Read File into a Variable
lines, err := csv.NewReader(f).ReadAll() lines, err := reader.ReadAll()
if err != nil { if err != nil {
return [][]string{}, err return [][]string{}, err
} }

View file

@ -2,7 +2,7 @@
go mod download go mod download
package="./User ID Praser/IdParser.go" package="./IdParser.go"
package_split=(${package//\// }) package_split=(${package//\// })
package_name="IdParser" package_name="IdParser"
@ -15,11 +15,11 @@ do
GOOS=${platform_split[0]} GOOS=${platform_split[0]}
GOARCH=${platform_split[1]} GOARCH=${platform_split[1]}
output_name=$package_name'-'$GOOS'-'$GOARCH output_name=$package_name'-'$GOOS'-'$GOARCH
if [ $GOOS = "windows" ]; then if [ "$GOOS" = "windows" ]; then
output_name+='.exe' output_name+='.exe'
fi fi
env GOOS=$GOOS GOARCH=$GOARCH go build -o ./User ID Praser/build/$output_name $package env GOOS="$GOOS" GOARCH=$GOARCH go build -o "./build/$output_name" $package
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo 'An error has occurred! Aborting the script execution...' echo 'An error has occurred! Aborting the script execution...'
exit 1 exit 1

View file

@ -1 +1,2 @@
pandas~=1.3.1 pandas~=1.3.1
numpy>=1.22.2 # not directly required, pinned by Snyk to avoid a vulnerability