Advertisement
Darksider3

Linklist.py

Feb 8th, 2015
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.10 KB | None | 0 0
  1. #!/usr/bin/python2.7
  2. #In directory cwd/input/list.txt place some Links in format: http://blub.fu, Category, Category, http://blub2.fu and so on. Have fun! ;-D
  3. import os
  4. class readFile(object):
  5.   Filename = "input/list.txt"
  6.   Mode     = 'a+'
  7.   Handle   = ''
  8.  
  9.   def __init__(self, Name = "input/list.txt"):
  10.     self.Filename=Name
  11.     self.Open(self.Filename, self.Mode)
  12.  
  13.   def ReadNew(self, blocks=0):
  14.     if blocks != 0:
  15.       return -1
  16.     self.Handle.seek(0)
  17.     self.Input = self.Read()
  18.     return self.Input
  19.  
  20.   def Read(self):
  21.     self.Input = self.Handle.read()
  22.     return self.Input
  23.  
  24.   def Open(self, Name, Mode):
  25.     self.Handle = open(Name, Mode)
  26.     return self.Handle
  27.  
  28.   def Close(self):
  29.     self.Handle.close()
  30.  
  31.   def write(self):
  32.     self.Handle.close()
  33.     self.Handle = open(self.Filename+".done", self.Mode)
  34.     self.Handle.write(self.Input)
  35.     self.Handle.close()
  36.     self.Handle = open(self.Filename, self.Mode)
  37.  
  38.  
  39.  
  40. class Parser(object):
  41.   Input    = ""
  42.   Links    = []
  43.   Cats     = []
  44.   ParsedCats = []
  45.   Debug    = 0
  46.   CatNr    = 0
  47.   def __init__(self, ParseStr, debug=0):
  48.     self.Debug = debug
  49.     self.Input = ParseStr
  50.     self.delNewline()
  51.     self.delSpaces()
  52.     if self.Debug != 0:
  53.       print("|################Debugging-Mode####################")
  54.    
  55.  
  56.   def Parse(self):
  57.     self.Links = []
  58.     self.Cats  = []
  59.     self.ParsedCats=[]
  60.     Checkup = True
  61.     self.CatNr = 0
  62.    
  63.     self.Links = self.Input.split(",")
  64.    
  65.     for i in list(range(len(self.Links))):
  66.       if len(self.Links[i]) > 12 and self.Links[0]!='h':
  67.         Checkup = False
  68.         self.CatNr += 1
  69.       elif Checkup == False:
  70.         self.Cats.append(self.Links[i].lower()) #identify obj later,
  71.         self.ParsedCats.append(self.Links[i].lower())
  72.         self.ParsedCats.append(self.CatNr)
  73.         self.Links[i] = ''
  74.     self.delEmpty()
  75.     if self.Debug != 0:
  76.       print("|Links           : "+str(self.Links))
  77.       print("|Cats            : "+str(self.Cats))
  78.    
  79.    
  80.   def delEmpty(self):
  81.     count =0
  82.     for i in list(range(len(self.Links))):
  83.       if self.Links[i] == '':
  84.         count+=1
  85.    
  86.     for o in list(range(count)):
  87.       self.Links.remove('')
  88.  
  89.   def delNewline(self):
  90.     self.Input = self.Input.replace('\n', '')
  91.    
  92.   def delSpaces(self):
  93.     self.Input = self.Input.replace(' ', '')
  94.  
  95.   def setDebug(self, mode):
  96.     self.Debug=mode
  97.  
  98.   def getCats(self):
  99.     return self.Cats
  100.  
  101.   def getParsedCats(self):
  102.     return self.ParsedCats
  103.  
  104.   def getLinks(self):
  105.     return self.Links
  106.  
  107.   def getCatCount(self):
  108.     return self.CatNr
  109.    
  110.  
  111. class Search(object):
  112.   ParserObj  = ''
  113.   CatCount   = 0
  114.   Links      = []
  115.   PCats      = [] #copyd list with len=Cats*2 ('cat', LinkNumber..)
  116.   MatchPoint = -1 #Did i found any? If not, set -1 and return Nothing.
  117.  
  118.   def __init__(self, ParserObj):
  119.     self.ParserObj= ParserObj
  120.     self.ParserObj.setDebug                     (0)
  121.     self.ParserObj.Parse                        ()
  122.     self.CatCount = self.ParserObj.getCatCount  ()
  123.     self.Links    = self.ParserObj.getLinks     ()
  124.     self.Cats     = self.ParserObj.getCats      ()
  125.     self.PCats    = self.ParserObj.getParsedCats()
  126.  
  127.   def SearchLinkByCat(self, CatStr):
  128.     CatStr=CatStr.encode("utf8")
  129.     for i in list(range(len(self.Cats))):
  130.       if self.Cats[i]==CatStr.lower():
  131.         self.MatchPoint=self.PCats[(i*2)+1]-1
  132.         return self.PCats[(i*2)+1] #grep Integer in list that is exactly Parser.Links*2 sized, so we have every second element the Linknum for what the cats are parsd
  133.    
  134.     if self.MatchPoint==-1:
  135.       return None
  136.  
  137.   def getLinkByPCatNr(self, Number=-1):
  138.     if self.MatchPoint==-1:
  139.       return None
  140.     if Number == -1:
  141.       return self.Links[self.MatchPoint]
  142.     else:
  143.       return self.Links[Number]
  144.  
  145. if __name__ == "__main__":
  146.   integer=0
  147.   LinkCounter=0
  148.   readobj=readFile()
  149.   parserobj=Parser(readobj.Read(), 0)
  150.   searchObj=Search(parserobj)
  151.   parserobj.setDebug(0)
  152.   parserobj.Parse()
  153.   """print("|Listed on Link  : "+str(searchObj.SearchLinkByCat("ADD")))
  154.  print("|Parsed Categorys: "+str(searchObj.PCats))
  155.  print("|Link            : "+searchObj.getLinkByPCatNr())
  156.  print("|-----------------------------------------")"""
  157.   for i in range(len(parserobj.Links)):
  158.     LinkCounter+=1
  159.   print("There listet "+str(LinkCounter)+" Link(s) in list.txt. What do you want to do?")
  160.   print("* 1) Search by Category")
  161.   print("* 2) Get by Linknumber")
  162.   print("* 3) Exit")
  163.   while integer == 0:
  164.     Given=raw_input("What do you do? ")
  165.     if Given == "1":
  166.       Input = raw_input("Category... ")
  167.       if searchObj.SearchLinkByCat(Input) == None:
  168.         print("Sorry, didn't found any!")
  169.       else:
  170.         print(searchObj.getLinkByPCatNr(searchObj.SearchLinkByCat(Input)-1))
  171.     elif Given == "2":
  172.       Input = raw_input("Nr...:")
  173.       if(int(Input)>LinkCounter):
  174.         print("\nNot in List!\n")
  175.       else:
  176.         print("\n"+parserobj.Links[int(Input)-1]+"\n")
  177.     elif Given == "3":
  178.       integer=1
  179.     elif Given == "exit":
  180.       break;
  181.   print("Exited.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement