Sachverhalt:
A._ und B._ sind die geschiedenen Eltern des inzwischen 17-jährigen C._ (geb. 2002). Die elterliche Sorge steht dem Vater zu.
Im März 2018 musste C._ jugendpsychiatrisch untergebracht werden. Gestützt auf Anträge der Mutter regelte die KESB der Stadt Zürich mit Beschluss vom 20. Dezember 2018 die Kontakte zwischen ihr und C._ neu. Die hiergegen erhobene Beschwerde der Mutter wies der Bezirksrat Zürich mit Urteil vom 29. August 2019 ab, soweit er darauf eintrat. Auf die hiergegen erhobene Beschwerde trat das Obergericht des Kantons Zürich mit Beschluss vom 3. Oktober 2019 nicht ein.
Gegen diesen Beschluss hat die Mutter am 4. November 2019 beim Bundesgericht eine Beschwerde eingereicht.
Erwägungen:
1.
Zum Besuchsrecht als solchem äussert sich die Beschwerdeführerin nicht. Wie schon vor Obergericht wendet sich die Mutter in ihrer Beschwerde vielmehr gegen die Unterbringung von C._ und macht geltend, dieser werde unter haarsträubenden Bedingungen gehalten und wolle unbedingt zu ihr. All dies steht jedoch ausserhalb des Beschwerdegegenstandes, bei welchem es einzig um die von der KESB vorgenommene Neuregelung der Besuchskontakte zwischen Mutter und Sohn geht. Darüber hilft die Berufung auf die im kantonalen Verfahren geltende Offizialmaxime nicht hinweg, denn Prozessmaximen kommen selbstredend nur innerhalb des Verfahrensgegenstandes zum Tragen und erlauben es einer Rechtsmittelbehörde nicht, nach freiem Ermessen über anderes als den angefochtenen Gegenstand zu entscheiden. Insofern erweist sich die Beschwerde von vornherein als unzulässig. Gleiches gilt für die allgemeine Polemik (das Einsperren des Kindes diene nur den Machtgelüsten des verhassten Vaters und zur Entfremdung von der Mutter; man nehme den Willen des fast volljährigen Kindes nicht zur Kenntnis; das Kind werde als Objekt behandelt und gefangen gehalten; die Selbstmordversuche seien erstelltermassen auf die verhasste Situation zurückzuführen; das Kind werde ohne ihr Beisein zu Aussagen gezwungen bzw. dessen Aussagen würden zugunsten des Heimes verfälscht).
2.
Was sodann die Rüge der Gehörsverletzung anbelangt, setzt sich die Beschwerdeführerin entgegen der betreffenden Begründungspflicht (vgl. Art. 42 Abs. 2 BGG; BGE 140 III 115 E. 2 S. 116) nicht mit den Erwägungen des angefochtenen Entscheides auseinander, wonach die KESB sie wie auch das Kind angehört habe. Sie beschränkt sich darauf, ohne konkrete Bezugnahme auf den angefochtenen Entscheid erneut eine Gehörsverletzung zu behaupten, und im Übrigen stellt sie auch keinen Zusammenhang zur Frage des Besuchsrechtes her. Damit ist keine Rechtsverletzung darzutun.
3.
Nach dem Gesagten erweist sich die Beschwerde teils als offensichtlich unzulässig und teils als offensichtlich nicht hinreichend begründet, weshalb auf sie nicht eingetreten werden kann und der Präsident im vereinfachten Verfahren entscheidet (Art. 108 Abs. 1 lit. a und b BGG).
4.
Angesichts der konkreten Umstände wird auf die Erhebung von Gerichtskosten verzichtet (Art. 66 Abs. 1 BGG).
Demnach erkennt der Präsident:
1.
Auf die Beschwerde wird nicht eingetreten.
2.
Es werden keine Gerichtskosten erhoben.
3.
Dieses Urteil wird den Parteien und dem Obergericht des Kantons Zürich, II. Zivilkammer, schriftlich mitgeteilt.
Lausanne, 13. November 2019
Im Namen der II. zivilrechtlichen Abteilung
des Schweizerischen Bundesgerichts
Der Präsident: Herrmann
Der Gerichtsschreiber: Möckli