szuru2shimmie2/merger.nim

50 lines
1.4 KiB
Nim

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()