@ -7,9 +7,9 @@ import configparser
def connectDataBase ( ) :
def connectDataBase ( ) :
try :
from MarketPlaces.Initialization.markets_mining import config
from MarketPlaces.Initialization.markets_mining import config
try :
ip = config . get ( ' PostgreSQL ' , ' ip ' )
ip = config . get ( ' PostgreSQL ' , ' ip ' )
username = config . get ( ' PostgreSQL ' , ' username ' )
username = config . get ( ' PostgreSQL ' , ' username ' )
@ -20,7 +20,7 @@ def connectDataBase():
except :
except :
print ( " Data base (darkweb_marketplaces) not found. " )
print ( " Data base " + config . get ( ' PostgreSQL ' , ' database ' ) + " not found." )
raise SystemExit
raise SystemExit
@ -62,6 +62,24 @@ def verifyVendor(cur, nameVendor, marketId):
trace = traceback . format_exc ( )
trace = traceback . format_exc ( )
print ( trace )
print ( trace )
def verifyItem ( cur , marketId , vendorId , nameItem ) :
try :
cur . execute ( " select item_id from items where market_id = %(marketId)s and vendor_id = %(vendorId)s and name_item = %(nameItem)s "
" limit 1 " , { ' marketId ' : marketId , ' vendorId ' : vendorId , ' nameItem ' : nameItem } )
recset = cur . fetchall ( )
if recset :
return recset [ 0 ] [ 0 ]
else :
return 0
except :
trace = traceback . format_exc ( )
print ( trace )
def getLastMarketPlace ( cur ) :
def getLastMarketPlace ( cur ) :
@ -100,6 +118,23 @@ def getLastVendor(cur):
trace = traceback . format_exc ( )
trace = traceback . format_exc ( )
print ( trace )
print ( trace )
def getLastItem ( cur ) :
try :
cur . execute ( " select item_id from items order by item_id desc limit 1 " )
recset = cur . fetchall ( )
if recset :
return recset [ 0 ] [ 0 ]
else :
return 0
except :
trace = traceback . format_exc ( )
print ( trace )
def create_marketPlace ( cur , row , url ) :
def create_marketPlace ( cur , row , url ) :
@ -124,6 +159,11 @@ def create_vendor(cur, row, marketId):
if not vendorId :
if not vendorId :
vendorId = int ( getLastVendor ( cur ) + 1 )
vendorId = int ( getLastVendor ( cur ) + 1 )
newVendor = True
else :
newVendor = False
if newVendor :
sql = " Insert into vendors (vendor_id, market_id, name_vendor, rating_vendor, successfultransactions_vendor, dateinserted_vendor) Values ( %s , %s , %s , %s , %s , %s ) "
sql = " Insert into vendors (vendor_id, market_id, name_vendor, rating_vendor, successfultransactions_vendor, dateinserted_vendor) Values ( %s , %s , %s , %s , %s , %s ) "
@ -135,51 +175,164 @@ def create_vendor(cur, row, marketId):
cur . execute ( sql , recset )
cur . execute ( sql , recset )
else :
# Tracking potential vendor changes
sql = " select * from vendors where vendor_id = %(vendorId)s "
cur . execute ( sql , { ' vendorId ' : vendorId } )
recset = cur . fetchall ( )
if ( str ( recset [ 0 ] [ 3 ] ) != str ( row [ 2 ] if row [ 2 ] != ' -1 ' else None ) or # there was a change in the vendor information
str ( recset [ 0 ] [ 4 ] ) != str ( row [ 3 ] if row [ 3 ] != ' -1 ' else None ) ) :
sql = " Insert into vendors_history (vendor_id, market_id, name_vendor, rating_vendor, successfultransactions_vendor, dateinserted_vendor) Values ( %s , %s , %s , %s , %s , %s ) "
recset = [ vendorId , marketId ,
recset [ 0 ] [ 2 ] ,
recset [ 0 ] [ 3 ] ,
recset [ 0 ] [ 4 ] ,
recset [ 0 ] [ 5 ] ]
cur . execute ( sql , recset )
sql = " Update vendors set rating_vendor = %(rating_vendor)s , successfultransactions_vendor = %(successfultransactions_vendor)s , " \
" dateinserted_vendor = %(dateinserted_vendor)s where vendor_id = %(vendorId)s "
cur . execute ( sql , { ' rating_vendor ' : row [ 2 ] if row [ 2 ] != ' -1 ' else None ,
' successfultransactions_vendor ' : row [ 3 ] if row [ 3 ] != ' -1 ' else None ,
' dateinserted_vendor ' : row [ 21 ] ,
' vendorId ' : vendorId } )
return vendorId
return vendorId
def create_items ( cur , row , marketId , vendorId ) :
def create_items ( cur , row , marketId , vendorId ) :
sql = " Insert into items (market_id, vendor_id, name_item, description_item, cve_item, ms_item, category_item, " \
" views_item, reviews_item, rating_item, dateadded_item, btc_item, usd_item, euro_item, quantitysold_item, " \
" quantityleft_item, shippedfrom_item, shippedto_item, href_item, lastseen_item, dateinserted_item, " \
" classification_item) Values ( %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , " \
" %s , %s , %s ) "
recset = [ marketId , vendorId ,
row [ 4 ] ,
row [ 5 ] if row [ 5 ] != ' -1 ' else None ,
row [ 6 ] if row [ 6 ] != ' -1 ' else None ,
row [ 7 ] if row [ 7 ] != ' -1 ' else None ,
row [ 8 ] if row [ 8 ] != ' -1 ' else None ,
row [ 9 ] if row [ 9 ] != ' -1 ' else None ,
row [ 10 ] if row [ 10 ] != ' -1 ' else None ,
row [ 11 ] if row [ 11 ] != ' -1 ' else None ,
row [ 12 ] if row [ 12 ] != ' -1 ' else None ,
row [ 13 ] if row [ 13 ] != ' -1 ' else None ,
row [ 14 ] if row [ 14 ] != ' -1 ' else None ,
row [ 15 ] if row [ 15 ] != ' -1 ' else None ,
row [ 16 ] if row [ 16 ] != ' -1 ' else None ,
row [ 17 ] if row [ 17 ] != ' -1 ' else None ,
row [ 18 ] if row [ 18 ] != ' -1 ' else None ,
row [ 19 ] if row [ 19 ] != ' -1 ' else None ,
row [ 20 ] if row [ 20 ] != ' -1 ' else None ,
row [ 21 ] ,
row [ 21 ] ,
row [ 22 ] ]
cur . execute ( sql , recset )
itemId = verifyItem ( cur , marketId , vendorId , row [ 4 ] )
if not itemId :
itemId = int ( getLastItem ( cur ) + 1 )
newItem = True
else :
newItem = False
if newItem :
sql = " Insert into items (item_id, market_id, vendor_id, name_item, description_item, cve_item, ms_item, category_item, " \
" views_item, reviews_item, rating_item, dateadded_item, btc_item, usd_item, euro_item, quantitysold_item, " \
" quantityleft_item, shippedfrom_item, shippedto_item, href_item, lastseen_item, dateinserted_item, " \
" classification_item) Values ( %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , " \
" %s , %s , %s , %s ) "
recset = [ itemId , marketId , vendorId ,
row [ 4 ] ,
row [ 5 ] if row [ 5 ] != ' -1 ' else None ,
row [ 6 ] if row [ 6 ] != ' -1 ' else None ,
row [ 7 ] if row [ 7 ] != ' -1 ' else None ,
row [ 8 ] if row [ 8 ] != ' -1 ' else None ,
row [ 9 ] if row [ 9 ] != ' -1 ' else None ,
row [ 10 ] if row [ 10 ] != ' -1 ' else None ,
row [ 11 ] if row [ 11 ] != ' -1 ' else None ,
row [ 12 ] if row [ 12 ] != ' -1 ' else None ,
row [ 13 ] if row [ 13 ] != ' -1 ' else None ,
row [ 14 ] if row [ 14 ] != ' -1 ' else None ,
row [ 15 ] if row [ 15 ] != ' -1 ' else None ,
row [ 16 ] if row [ 16 ] != ' -1 ' else None ,
row [ 17 ] if row [ 17 ] != ' -1 ' else None ,
row [ 18 ] if row [ 18 ] != ' -1 ' else None ,
row [ 19 ] if row [ 19 ] != ' -1 ' else None ,
row [ 20 ] if row [ 20 ] != ' -1 ' else None ,
row [ 21 ] ,
row [ 21 ] ,
row [ 22 ] ]
cur . execute ( sql , recset )
else :
# Tracking potential item changes
sql = " select * from items where item_id = %(itemId)s "
cur . execute ( sql , { ' itemId ' : itemId } )
recset = cur . fetchall ( )
if ( str ( recset [ 0 ] [ 4 ] ) != str ( row [ 5 ] if row [ 5 ] != ' -1 ' else None ) or str ( recset [ 0 ] [ 5 ] ) != str ( row [ 6 ] if row [ 6 ] != ' -1 ' else None ) or
str ( recset [ 0 ] [ 6 ] ) != str ( row [ 7 ] if row [ 7 ] != ' -1 ' else None ) or str ( recset [ 0 ] [ 7 ] ) != str ( row [ 8 ] if row [ 8 ] != ' -1 ' else None ) or
str ( recset [ 0 ] [ 8 ] ) != str ( row [ 9 ] if row [ 9 ] != ' -1 ' else None ) or str ( recset [ 0 ] [ 9 ] ) != str ( row [ 10 ] if row [ 10 ] != ' -1 ' else None ) or
str ( recset [ 0 ] [ 10 ] ) != str ( row [ 11 ] if row [ 11 ] != ' -1 ' else None ) or str ( recset [ 0 ] [ 11 ] ) != str ( row [ 12 ] if row [ 12 ] != ' -1 ' else None ) or
str ( recset [ 0 ] [ 12 ] ) != str ( row [ 13 ] if row [ 13 ] != ' -1 ' else None ) or str ( recset [ 0 ] [ 13 ] ) != str ( row [ 14 ] if row [ 14 ] != ' -1 ' else None ) or
str ( recset [ 0 ] [ 14 ] ) != str ( row [ 15 ] if row [ 15 ] != ' -1 ' else None ) or str ( recset [ 0 ] [ 15 ] ) != str ( row [ 16 ] if row [ 16 ] != ' -1 ' else None ) or
str ( recset [ 0 ] [ 16 ] ) != str ( row [ 17 ] if row [ 17 ] != ' -1 ' else None ) or str ( recset [ 0 ] [ 17 ] ) != str ( row [ 18 ] if row [ 18 ] != ' -1 ' else None ) ) :
sql = " Insert into items_history (item_id, market_id, vendor_id, name_item, description_item, cve_item, ms_item, category_item, " \
" views_item, reviews_item, rating_item, dateadded_item, btc_item, usd_item, euro_item, quantitysold_item, " \
" quantityleft_item, shippedfrom_item, shippedto_item, href_item, lastseen_item, dateinserted_item, " \
" classification_item) Values ( %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , %s , " \
" %s , %s , %s , %s ) "
recset = [ itemId , marketId , vendorId ,
recset [ 0 ] [ 3 ] ,
recset [ 0 ] [ 4 ] ,
recset [ 0 ] [ 5 ] ,
recset [ 0 ] [ 6 ] ,
recset [ 0 ] [ 7 ] ,
recset [ 0 ] [ 8 ] ,
recset [ 0 ] [ 9 ] ,
recset [ 0 ] [ 10 ] ,
recset [ 0 ] [ 11 ] ,
recset [ 0 ] [ 12 ] ,
recset [ 0 ] [ 13 ] ,
recset [ 0 ] [ 14 ] ,
recset [ 0 ] [ 15 ] ,
recset [ 0 ] [ 16 ] ,
recset [ 0 ] [ 17 ] ,
recset [ 0 ] [ 18 ] ,
recset [ 0 ] [ 19 ] ,
recset [ 0 ] [ 20 ] ,
recset [ 0 ] [ 21 ] ,
recset [ 0 ] [ 22 ] ]
cur . execute ( sql , recset )
sql = " Update items set description_item = %(description_item)s , cve_item = %(cve_item)s , ms_item = %(ms_item)s , " \
" category_item = %(category_item)s , views_item = %(views_item)s , reviews_item = %(reviews_item)s , " \
" rating_item = %(rating_item)s , dateadded_item = %(dateadded_item)s , btc_item = %(btc_item)s , " \
" usd_item = %(usd_item)s , euro_item = %(euro_item)s , quantitysold_item = %(quantitysold_item)s , " \
" quantityleft_item = %(quantityleft_item)s , shippedfrom_item = %(shippedfrom_item)s , shippedto_item = %(shippedto_item)s , " \
" dateinserted_item = %(dateinserted_item)s where item_id = %(itemId)s "
cur . execute ( sql , { ' description_item ' : row [ 5 ] if row [ 5 ] != ' -1 ' else None ,
' cve_item ' : row [ 6 ] if row [ 6 ] != ' -1 ' else None ,
' ms_item ' : row [ 7 ] if row [ 7 ] != ' -1 ' else None ,
' category_item ' : row [ 8 ] if row [ 8 ] != ' -1 ' else None ,
' views_item ' : row [ 9 ] if row [ 9 ] != ' -1 ' else None ,
' reviews_item ' : row [ 10 ] if row [ 10 ] != ' -1 ' else None ,
' rating_item ' : row [ 11 ] if row [ 11 ] != ' -1 ' else None ,
' dateadded_item ' : row [ 12 ] if row [ 12 ] != ' -1 ' else None ,
' btc_item ' : row [ 13 ] if row [ 13 ] != ' -1 ' else None ,
' usd_item ' : row [ 14 ] if row [ 14 ] != ' -1 ' else None ,
' euro_item ' : row [ 15 ] if row [ 15 ] != ' -1 ' else None ,
' quantitysold_item ' : row [ 16 ] if row [ 16 ] != ' -1 ' else None ,
' quantityleft_item ' : row [ 17 ] if row [ 17 ] != ' -1 ' else None ,
' shippedfrom_item ' : row [ 18 ] if row [ 18 ] != ' -1 ' else None ,
' shippedto_item ' : row [ 19 ] if row [ 19 ] != ' -1 ' else None ,
' dateinserted_item ' : row [ 21 ] ,
' itemId ' : itemId } )
return itemId
def create_database ( cur , con ) :
def create_database ( cur , con ) :
try :
try :
sql = " create table marketplaces(market_id integer not null, name_market character varying(255) not null, " \
sql = " create table marketplaces(market_id integer not null, name_market character varying(255) not null, " \
" url_market character varying(255) null, dateinserted_market timestamp(6) with time zone not null, " \
" url_market character varying(255) not n ull, dateinserted_market timestamp(6) with time zone not null, " \
" constraint markets_pk primary key (market_id)) "
" constraint markets_pk primary key (market_id)) "
cur . execute ( sql )
cur . execute ( sql )
sql = " create unique index unique_market ON marketplaces USING btree (name_market ASC NULLS LAST) "
cur . execute ( sql )
sql = " create table vendors(vendor_id integer not null, market_id integer not null, name_vendor character " \
sql = " create table vendors(vendor_id integer not null, market_id integer not null, name_vendor character " \
" varying(255) not null, rating_vendor character varying(255), successfultransactions_vendor integer " \
" varying(255) not null, rating_vendor character varying(255), successfultransactions_vendor integer " \
" null, dateinserted_vendor timestamp(6) with time zone not null, constraint vendors_pk primary key ( " \
" null, dateinserted_vendor timestamp(6) with time zone not null, constraint vendors_pk primary key ( " \
@ -187,6 +340,9 @@ def create_database(cur, con):
" market_id)) "
" market_id)) "
cur . execute ( sql )
cur . execute ( sql )
sql = " create unique index unique_vendor ON vendors USING btree (market_id ASC NULLS LAST, name_vendor ASC NULLS LAST) "
cur . execute ( sql )
sql = " create table vendors_history(vendor_id integer not null, market_id integer not null, name_vendor " \
sql = " create table vendors_history(vendor_id integer not null, market_id integer not null, name_vendor " \
" character varying(255) not null, rating_vendor character varying(255), successfultransactions_vendor " \
" character varying(255) not null, rating_vendor character varying(255), successfultransactions_vendor " \
" integer null, dateinserted_vendor timestamp(6) with time zone not null, constraint vendors_history_pk " \
" integer null, dateinserted_vendor timestamp(6) with time zone not null, constraint vendors_history_pk " \
@ -195,33 +351,36 @@ def create_database(cur, con):
" market_id) references marketplaces (market_id)) "
" market_id) references marketplaces (market_id)) "
cur . execute ( sql )
cur . execute ( sql )
sql = " create table items(market_id integer not null, vendor_id integer not null, name_item character " \
sql = " create table items(item_id integer not null, market_id integer not null, vendor_id integer not null, name_item character " \
" varying(255) not null, description_item character varying(1000000) null, cve_item character varying( " \
" varying(255) not null, description_item character varying(1000000) null, cve_item character varying( " \
" 255) null, ms_item character varying(255) null, category_item character varying(255) null, views_item " \
" 255) null, ms_item character varying(255) null, category_item character varying(255) null, views_item " \
" integer null, reviews_item integer null, rating_item character varying(255) null, dateadded_item " \
" integer null, reviews_item integer null, rating_item character varying(255) null, dateadded_item " \
" character varying(25) null, btc_item character varying(255) null, usd_item character varying(255) " \
" character varying(25) null, btc_item character varying(255) null, usd_item character varying(255) " \
" null, euro_item character varying(255) null, quantitysold_item integer null, quantityleft_item " \
" null, euro_item character varying(255) null, quantitysold_item integer null, quantityleft_item " \
" character varying(255) null, shippedfrom_item character varying(255) null, shippedto_item character " \
" character varying(255) null, shippedfrom_item character varying(255) null, shippedto_item character " \
" varying(255) null, href_item character varying(255) null, lastseen_item timestamp(6) with time zone " \
" varying(255) null, href_item character varying(255) not n ull, lastseen_item timestamp(6) with time zone " \
" not null, dateinserted_item timestamp(6) with time zone not null, classification_item double " \
" not null, dateinserted_item timestamp(6) with time zone not null, classification_item double " \
" precision not null, constraint items_pk primary key (market_id, vendor_id, name_item ), constraint " \
" precision not null, constraint items_pk primary key (item_id ), constraint " \
" items_market_id_fkey foreign key (market_id) references marketplaces (market_id),constraint " \
" items_market_id_fkey foreign key (market_id) references marketplaces (market_id),constraint " \
" items_vendor_id_fkey foreign key (vendor_id) references vendors (vendor_id)) "
" items_vendor_id_fkey foreign key (vendor_id) references vendors (vendor_id)) "
cur . execute ( sql )
cur . execute ( sql )
sql = " create table items_history(market_id integer not null, vendor_id integer not null, name_item character " \
sql = " create unique index unique_item ON items USING btree (market_id ASC NULLS LAST, vendor_id ASC NULLS LAST, name_item ASC NULLS LAST) "
cur . execute ( sql )
sql = " create table items_history(item_id integer not null, market_id integer not null, vendor_id integer not null, name_item character " \
" varying(255) not null, description_item character varying(1000000) null, cve_item character varying( " \
" varying(255) not null, description_item character varying(1000000) null, cve_item character varying( " \
" 255) null, ms_item character varying(255) null, category_item character varying(255) null, views_item " \
" 255) null, ms_item character varying(255) null, category_item character varying(255) null, views_item " \
" integer null, reviews_item integer null, rating_item character varying(255) null, dateadded_item " \
" integer null, reviews_item integer null, rating_item character varying(255) null, dateadded_item " \
" character varying(25) null, btc_item character varying(255) null, usd_item character varying(255) " \
" character varying(25) null, btc_item character varying(255) null, usd_item character varying(255) " \
" null, euro_item character varying(255) null, quantitysold_item integer null, quantityleft_item " \
" null, euro_item character varying(255) null, quantitysold_item integer null, quantityleft_item " \
" character varying(255) null, shippedfrom_item character varying(255) null, shippedto_item character " \
" character varying(255) null, shippedfrom_item character varying(255) null, shippedto_item character " \
" varying(255) null, href_item character varying(255) null, lastseen_item timestamp(6) with time zone " \
" varying(255) null, href_item character varying(255) not n ull, lastseen_item timestamp(6) with time zone " \
" not null, dateinserted_item timestamp(6) with time zone not null, classification_item double " \
" not null, dateinserted_item timestamp(6) with time zone not null, classification_item double " \
" precision not null, constraint items_history_pk primary key (market_id, vendor_id, name_item , " \
" dateinserted_item), constraint items_history_market_id_fkey foreign key (market_id) references " \
" marketplaces (market_id), constraint items_history_vendor_id_fkey foreign key (vendor_id) references " \
" vendors (vendor _id))"
" precision not null, constraint items_history_pk primary key (item_id, dateinserted_item) , " \
" constraint items_history_market_id_fkey foreign key (market_id) references marketplaces (market_id), " \
" constraint items_history_vendor_id_fkey foreign key (vendor_id) references vendors (vendor_id), " \
" constraint items_history_item_id_fkey foreign key (item_id) references items (item _id))"
cur . execute ( sql )
cur . execute ( sql )
con . commit ( )
con . commit ( )