Mechanik
Der Kürze halber wird das Skript für die Promotion "Roboterhund" genannt . Stellen Sie sich vor, dass dieses Skript im Auftrag eines Hundekontos regelmäßig Beiträge von Hashtags zu Hundethemen sammelt und solche Beiträge mag. Einige der Autoren dieser Beiträge werden daran interessiert sein, wem sie gefallen haben, und werden auf die Kontoseite des Hundes gehen. Na dann, wie es geht. Jemand wird ein paar Bildschirme nach unten scrollen und weitermachen. Jemand wird dem Roboter ein paar gegenseitige Likes geben (was auch nicht schlecht ist, Likes erhöhen die Reichweite von Posts). Und wenn Ihnen der Account gefällt (was möglich ist, weil der Hund sehr charismatisch ist ), können Sie ihn abonnieren.
Achtung: Massenliken
Es sollte beachtet werden, dass solche Aktionen als "Massen-Liking" bezeichnet werden und von Instagram nicht besonders begrüßt werden. Wenn eine verdächtige Roboteraktivität angezeigt wird, gibt Instagram zuerst mehrere Warnungen aus und sperrt dann möglicherweise das Konto für immer. Übrigens fällt auch das manuelle Massliking unter das Verbot (d. H. Wenn es sich nicht um einen automatisierten Dienst handelt, der Ihnen gefällt, sondern um Sie persönlich).
Es gibt eine Meinung, dass Massliking jetzt nicht sehr gut funktioniert. Nun, wir werden es gleichzeitig überprüfen.
Dienste und Bibliotheken für Massliking und Massfollowing
Trotz alledem leben und gedeihen Dutzende verschiedener Dienste für Massliking und Massfollowing (Interessierte können hier , hier oder selbst googeln). Dies deutet darauf hin, dass Massliking sowieso funktioniert.
Es stellt sich heraus wie beim Sex. Es scheint, dass jeder engagiert ist, aber es wird nicht akzeptiert, in einer anständigen Gesellschaft zu diskutieren. Auch hier finden Sie empirisch festgelegte Grenzen für Massliking im Internet. Wenn der Roboterhund sie nicht überschreitet, sollte er nicht zum Verbot geschickt werden. Für junge Konten (weniger als sechs Monate ab dem Datum der Registrierung) sind dies nicht mehr als 30 Likes pro Stunde oder 720 Likes pro Tag.
Es gibt spezielle Bibliotheken für Pythonisten. Das bekannteste ist Instapy ( 12.000 Sterne auf Github für eine Minute). Es gibt weniger bekannte. Übrigens gab es kürzlich auf Habré einen Artikel, in dem eine sehr anständige Instabot- Bibliothek versteht . Aber ich persönlich würde sie nicht "frontal" zum automatischen Hacken durch Hashtags verwenden. Aus folgendem Grund.
Was ist los mit Hashtags?
, ( Instagram , ).
, , . , , .
, ( ), ! - .
"" . , , . - , - . Object Detection, , SSD .
- , SSD MobileNet v.2, COCO2017. MobileNet, GPU . , 94%.
, SSD python. Github, , , .
import cv2
import json
from datetime import datetime
import requests
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
def id_class_name(class_id, classes):
for key, value in classes.items():
if class_id == key:
return value
#
shortcode = 'CJ.........'
classNames = {}
with open('models/coco2017_labels.txt', 'r+', encoding='utf-8') as file:
for line in file:
key = int(line.split(':')[0])
value = line.split(':')[1]
classNames[key] = value.strip()
COLORS = np.random.uniform(0, 255, size=(len(classNames), 3))
s = requests.session()
r = s.get(f'https://www.instagram.com/p/{shortcode}/?__a=1', headers = {'User-agent': 'bot'})
url = r.json()['graphql']['shortcode_media']['display_resources'][0]['src']
resp = requests.get(url, stream=True)
image = np.asarray(bytearray(resp.content), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
image_height, image_width, _ = image.shape
frame_resized = cv2.resize(image,(300,300))
model = cv2.dnn.readNetFromTensorflow('models/frozen_inference_graph.pb',
'models/ssd_mobilenet_v2_coco_2018_03_29.pbtxt')
model.setInput(cv2.dnn.blobFromImage(frame_resized, size=(300, 300), swapRB=True))
output = model.forward()
detections = output[0, 0, :, :]
detections = detections[detections[:,2].argsort()]
for detection in detections:
confidence = detection[2]
class_id = int(detection[1])
class_name = id_class_name(class_id, classNames)
if (confidence > 0.3):
box_x = int(detection[3] * image_width)
box_y = int(detection[4] * image_height)
box_width = int(detection[5] * image_width)
box_height = int(detection[6] * image_height)
cv2.rectangle(image, (box_x, box_y), (box_width, box_height), COLORS[class_id], thickness=2)
label = class_name + ": " + str(round(confidence, 2))
labelSize, baseLine = cv2.getTextSize(label, cv2.FONT_HERSHEY_DUPLEX, 0.5, 1)
yLeftBottom_ = max(box_y, labelSize[1])
cv2.rectangle(image, (box_x, box_y + labelSize[1]), (box_x + labelSize[0], box_y), COLORS[class_id], cv2.FILLED)
cv2.putText(image, label, (box_x, box_y + labelSize[1] - baseLine//2), cv2.FONT_HERSHEY_DUPLEX, 0.5, (255, 255, 255))
plt.figure(figsize=(8,8))
plt.axis("off")
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
# -
#plt.savefig(f'{shortcode}.png')
OpenCV . , - , pip conda install.
/?__a=1 OpenAPI Instagram. , - , , . , Instagram, .
Ich muss sagen, dass Hunde mit einer bestimmten Implementierung eines neuronalen Netzwerks nicht immer richtig definiert sind. Zum Beispiel:
Tatsache ist, dass der Winkel auf dem Foto eher ungewöhnlich ist - die Nase des Hundes sieht aus wie der Schnabel eines Vogels wie ein Tukan. Das heißt, unter realen Bedingungen wird ein Teil des guten Inhalts unweigerlich abgelehnt, der Roboterhund wird nicht alle Hunde mögen. Im Rahmen der Lösung des Problems ist dies jedoch durchaus möglich.
Fortsetzung folgt. In naher Zukunft werde ich einen Roboter auf einem lokalen Computer einsetzen, eine Reise unternehmen, Statistiken über die Reaktion auf Likes sammeln und die Ergebnisse abzeichnen.