From 80236451655ee17ef5876b6c96ae672e0b3ba842 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 31 Jul 2022 21:20:54 -0500 Subject: [PATCH] add code --- README.md | 4 +++- finalizer.nim | 35 +++++++++++++++++++++++++++++++++++ merger.nim | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ translate.nim | 26 ++++++++++++++++++++++++++ 4 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 finalizer.nim create mode 100644 merger.nim create mode 100644 translate.nim diff --git a/README.md b/README.md index 930674e..da8e077 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # szuru2shimmie2 -An accursed set of tools hobbled together to \ No newline at end of file +An accursed set of tools hobbled together to migrate from szurubooru 2 shimmie2. + +Expect these tools to be ineffective and low quality, they were cobbled together simply to get a job done, not to be effective. diff --git a/finalizer.nim b/finalizer.nim new file mode 100644 index 0000000..82fb264 --- /dev/null +++ b/finalizer.nim @@ -0,0 +1,35 @@ +import std/parsecsv +import std/strutils +import std/osproc + +var safety: CsvParser + +###Translate Them### +safety.open("post_safety.csv") + +var f = open("post_ids_with_named_tags.csv", fmAppend) +f.writeLine("post_id,tag_name") + +safety.readHeaderRow() +while safety.readRow(): + var command = "find images/ -iname " & safety.rowEntry("id") & "\\.*" + var filename = execCmdEx(command).output.replace("\n") + var tags: string + var rating: char + + if len(readFile("PostsWithTags/" & safety.rowEntry("id"))) > 0: + tags = readFile("PostsWithTags/" & safety.rowEntry("id")) + tags = tags[1..len(tags)-1] + else: + tags = "tagme" + + if safety.rowEntry("safety") == "safe": + rating = 's' + elif safety.rowEntry("safety") == "questionable": + rating = 'q' + elif safety.rowEntry("safety") == "explicit": + rating = 'e' + let finalFile = open("finalized.csv", fmAppend) + finalFile.writeLine "\"" & filename & "\"" & ",\"" & tags & "\",\"\",\"" & rating & "\",\"thumbnail" & filename & "\"" + finalFile.close() + diff --git a/merger.nim b/merger.nim new file mode 100644 index 0000000..1f3c271 --- /dev/null +++ b/merger.nim @@ -0,0 +1,49 @@ +import std/parsecsv +import std/threadpool +import std/os + +{.experimental: "parallel".} + +###Merge Them### +proc mergeThem(postID: int) = + var tagSpaced: string + var uncleanTagged: CsvParser + var curTagList: seq[string] + uncleanTagged.open("post_ids_with_named_tags.csv") +# while true: +# try: +# uncleanTagged.open("post_ids_with_named_tags.csv") +# except CsvError as e: +# echo e.msg +# echo "failed on 17" +# os.sleep(10000) + uncleanTagged.readHeaderRow() + while uncleanTagged.readRow(): + if uncleanTagged.rowEntry("post_id") == $postID: + try: + curTagList.add(uncleanTagged.rowEntry("tag_name")) + except: + echo "fuck" + if len(curTagList)-1 > 0: + for tag in countup(0,len(curTagList)-1): + tagSpaced = tagSpaced & " " & curTagList[tag] + var tries = 0 + while true and tries != 3: + try: + echo "Writing" & $tagSpaced & " to PostsWithTags/" & $postID + writeFile("PostsWithTags/" & $postID, tagSpaced) + break + except: + os.sleep(5000) + tries = tries + 1 + + #tagSpaced = "" + #curTagList = @[] + uncleanTagged.close() + #uncleanTagged.open("post_ids_with_named_tags.csv") +parallel: + for postID in 1..7000: + spawn mergeThem(postID) + if postID mod 100 == 0: + sync() + diff --git a/translate.nim b/translate.nim new file mode 100644 index 0000000..ac89877 --- /dev/null +++ b/translate.nim @@ -0,0 +1,26 @@ +import std/parsecsv +import std/os + +var postTags: CsvParser +var tagNames: CsvParser + +removeFile("post_ids_with_named_tags.csv") + +###Translate Them### +postTags.open("post_tags.csv") +tagNames.open("tag_names.csv") + +var f = open("post_ids_with_named_tags.csv", fmAppend) +f.writeLine("post_id,tag_name") + +postTags.readHeaderRow() + +while postTags.readRow(): + tagNames.readHeaderRow() + while tagNames.readRow(): + if postTags.rowEntry("tag_id") == tagNames.rowEntry("tag_id"): + f.writeLine(postTags.rowEntry("post_id") & "," & tagNames.rowEntry("name")) + echo (postTags.rowEntry("post_id") & "," & tagNames.rowEntry("name")) + tagNames.close() + tagNames.open("tag_names.csv") +