悪い言葉とそれが誰になるかによる単純なVKテープフィルター

こんにちは、Habr。

リトリート:

この投稿では、すべての病気に同じ薬を見つけることはできませんが、完全に美しいわけではありませんが、原子の問題に対する解決策があります。 この投稿の目的は、より多くのフィードバックを取得し、ディスカッションを開始し、アイデアに感染し、プッシュすることです。 この場合、VKontakteについて話しますが、このソーシャルから抽象化するよう読者にお願いします。 ネットワークを構築し、よりグローバルに見てください。


問題:

VKontakteには、単一の投稿を非表示にし、特定の人、グループ、およびアプリケーションからの投稿の表示をブロックする機能があります。 ただし、不適切なコンテンツを含む投稿を非表示にすることはできません。

簡単な例で説明します。

私は音楽コミュニティに登録しています。定期的にプレイリストを更新したり、新しいグループをランダムに学習したりしています。 しかし、私は同じ広告の投稿を1日に数回見たくありません。 再投稿では、すべてが簡単です。ソースをブロックできます。 しかし、コミュニティ自体に代わって投稿を広告するのはどうでしょうか? はい、ストリーム内のコミュニティの投稿をブロックし、定期的に新しい音楽のために立ち寄ることができますが、ここでは使いやすさが失われます。 例は、唯一のものではありません。 フィードには興味深い投稿を含む多くのコミュニティや人々がいますが、時々、時には多くの不要な投稿がそれらから散らばっています。

問題から解決策まで:

選択はjavascriptにかかっていました。 コンソールとコードの準備が少しできました:

function setWords() { words = prompt('Enter bad words and phrases. Comma separated (,).',localStorage.getItem('bad_words')); if(typeof(words) == 'string') { localStorage.setItem('bad_words',words); } } function hunt() { if( ! localStorage.getItem('bad_words')) { setWords(); return; } textArr = localStorage.getItem('shit_words').split(','); posts = document.getElementsByClassName('feed_row'); for(ii =0; ii<posts.length; ii++) { for(ll = 0; ll<textArr.length; ll++) { if(posts[ii].innerText.search(textArr[ll].trim()) > 0) { thepost = document.getElementsByClassName('feed_row')[ii].children[0]; idToDel = thepost.getAttribute('id').split('post')[1]; delElement = document.getElementById('post_delete'+idToDel); if(delElement) {delElement.click();} break; } } } setTimeout('hunt()',5000); }; hunt(); if( ! document.getElementById('vk_feed_cleaner')) { menuVK=document.getElementById('side_bar').children[0]; a=document.createElement('a'); a.setAttribute('href','javascript:setWords();'); a.innerText = 'Set Bad Words'; li=document.createElement('li'); li.setAttribute('id','vk_feed_cleaner'); li.appendChild(a); menuVK.appendChild(li); } 


不名誉の原則は簡単です:

コンソールでスクリプトを実行します。
最初の開始時に、「悪い」単語やフレーズを入力するように求められます。 (カンマ区切り)
単語をlocalStorageに保存します。
5秒ごとに、投稿のコンテンツを調べます。クラス「feed_row」のHTML要素
要素テキストに少なくとも1つの悪い単語が見つかった場合、プログラムでHTML要素をクリックして投稿を削除します。
サイドメニューにリンクが配置されます。[悪い単語を設定]をクリックすると、悪い単語のリストを変更できます。

jsfiddle.net/U2r9k/7-ブックマークバーにドラッグしてリンクがあり、クリックしてコードをアクティブにできます。

最適化されていませんか? 木製? セクシーじゃない? 主に機能し、私の問題は解決しました。 私だけでなく多くの人を助けてくれることを本当に願っています。

すぐにプロセスの最適化に関する私の頭の中の考えに入りました。

短所は明らかです:

スクリプトでは、ページを開くたびまたはページを再ロードするたびに起動する必要があります。
大きな辞書はブラウザをロードします。

この問題の可能な解決策:

ブラウザー拡張機能を作成します。
アカウントへのアクセスを許可するオフラインアプリケーションを作成します。 アプリケーションは、24時間テープをフィルターします。

もちろん、2番目のオプションの方が優れています。 1つのアプリケーションがクロスプラットフォームの問題を解決します。 しかし、最初のオプションには、ペアレンタルコントロールという存在する権利もあります。

オフラインアプリケーションがユーザーの個人フィードのみをフィルター処理できる場合、ブラウザー拡張機能はユーザーと共に「歩きます」。 まだ使用していない子供がいますが、すぐにコンピューターを使用する予定です。

アプリケーションがこのようなシンプルなサービスに発展できると想像してください。そこでは、カテゴリごとに辞書/マスクのオンラインデータベースがあります(例:VK 18+、クラスメート広告)
また、複数のソーシャルをサポートするブラウザー拡張機能。 ネットワーク。
拡張機能をインストールし、辞書を選択します。 子はビデオを検索し、彼のニュース、他の人のページ、コミュニティを表示し、コンテンツはフィルターを通過し、不要な要素は非表示/削除されます。
一種のAdBlockアナログ。

別の問題があります-重複。 再投稿についてではなく、特定のコミュニティ/人に代わって同じコンテンツが投稿された場​​合についてです。 状況は非常に一般的です。 おそらく、これはデータベースに一種の投稿のフィンガープリントを保存するアプリケーションです。「すでに見たことがあるので、もう表示することはできません。」 多くの場合、投稿は互いに単にコピーされ、コンテンツがコピーされることはほとんどありません。 ちなみに、このようなアプリケーションを使用すると、フィードに広告が繰り返し投稿される問題は解決されます。

このテーマに関するハブロフスク住民の興味深い意見。

そして最後に、トピックに関する調査。

PSおそらくそのようなアプリケーション/サービスは既に存在しますが、誰かが知っているなら、私はそれを見つけませんでした。

すべてに良い。

Source: https://habr.com/ru/post/J215171/


All Articles